Skip to content

「MkDocs + Material for MkDocs」の後継は「Zensical」

Material for MkDocsバージョン9.7.0のリリースノートには以下の記載があります。

This is the last release of Material for MkDocs that will receive new features. Going forward, the Material for MkDocs team focuses on Zensical, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs for 12 months at least.

Deepl翻訳

Material for MkDocsの新機能提供は、これが最後のリリースとなります。今後、Material for MkDocsチームは、第一原理に基づいて構築された次世代静的サイトジェネレータであるZensicalに注力します。Material for MkDocsについては、少なくとも12か月間は重大なバグ修正とセキュリティ更新を提供します。

従来は「MkDocsにMaterial for MkDocsテーマをインストールして利用する」という構成でしたが、後継にあたるZensicalは単体で「MkDocsとMaterial for MkDocsテーマ」の機能をカバーするようです。

コマンドでの操作感は「ZensicalとMkDocsで全く同じ」である為、操作にこまることは無いと思いますが、Zensicalの基本的な利用方法をメモしておきます。

検証環境

対象 バージョン
Zensical 0.0.8

インストール

pipでインストールします。

python3 -m pip install zensical

現時点ではバージョン0.0.8がインストールされました。

% zensical --version
0.0.8

Zensicalに統合された機能

Feature parityに最新の状況が書かれていますが、Material for MkDocsのプラグイン利用状況を分析し、Zensicalネイティブで実装する機能を決めているようです。現時点では以下の機能が実装済みのようです。

image

サイトを新規作成する

zensical new [SITENAME]で新規サイトを作成します。以下では「mysite」という名前のサイトを新規作成しています。ディレクトリ構造は以下でした。MkDocsとは異なり、zensical.tomlという設定ファイルが作成されています。

% zensical new mysite
% tree mysite
mysite
├── docs
│   ├── index.md
│   └── markdown.md
└── zensical.toml

プレビューする

zensical serveでプレビューを実行します。

zensical serve

デフォルトのコンテンツは以下のように表示されました。

image

参考

デフォルトのzensical.toml

zensical.toml
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# ============================================================================
#
# The configuration produced by default is meant to highlight the features
# that Zensical provides and to serve as a starting point for your own
# projects.
#
# ============================================================================

[project]

# The site_name is shown in the page header and the browser window title
#
# Read more: https://zensical.org/docs/setup/basics/#site_name
site_name = "Documentation"

# The site_description is included in the HTML head and should contain a
# meaningful description of the site content for use by search engines.
#
# Read more: https://zensical.org/docs/setup/basics/#site_description
site_description = "A new project generated from the default template project."

# The site_author attribute. This is used in the HTML head element.
#
# Read more: https://zensical.org/docs/setup/basics/#site_author
site_author = "<your name here>"

# The site_url is the canonical URL for your site. When building online
# documentation you should set this.
# Read more: https://zensical.org/docs/setup/basics/#site_url
#site_url = "https://www.example.com/"

# The copyright notice appears in the page footer and can contain an HTML
# fragment.
#
# Read more: https://zensical.org/docs/setup/basics/#copyright
copyright = """
Copyright &copy; 2025 The authors
"""

# Zensical supports both implicit navigation and explicitly defined navigation.
# If you decide not to define a navigation here then Zensical will simply
# derive the navigation structure from the directory structure of your
# "docs_dir". The definition below demonstrates how a navigation structure
# can be defined using TOML syntax.
#
# Read more: https://zensical.org/docs/setup/navigation/
# nav = [
#   { "Get started" = "index.md" },
#   { "Markdown in 5min" = "markdown.md" },
# ]

# With the "extra_css" option you can add your own CSS styling to customize
# your Zensical project according to your needs. You can add any number of
# CSS files.
#
# The path provided should be relative to the "docs_dir".
#
# Read more: https://zensical.org/docs/customization/#additional-css
#
#extra_css = ["assets/stylesheets/extra.css"]

# With the `extra_javascript` option you can add your own JavaScript to your
# project to customize the behavior according to your needs.
#
# The path provided should be relative to the "docs_dir".
#
# Read more: https://zensical.org/docs/customization/#additional-javascript
#extra_javascript = ["assets/javascript/extra.js"]

# ----------------------------------------------------------------------------
# Section for configuring theme options
# ----------------------------------------------------------------------------
[project.theme]

# change this to "classic" to use the traditional Material for MkDocs look.
#variant = "classic"

# Zensical allows you to override specific blocks, partials, or whole
# templates as well as to define your own templates. To do this, uncomment
# the custom_dir setting below and set it to a directory in which you
# keep your template overrides.
#
# Read more:
# - https://zensical.org/docs/customization/#extending-the-theme
#
#custom_dir = "overrides"

# With the "favicon" option you can set your own image to use as the icon
# browsers will use in the browser title bar or tab bar. The path provided
# must be relative to the "docs_dir".
#
# Read more:
# - https://zensical.org/docs/setup/logo-and-icons/#favicon
# - https://developer.mozilla.org/en-US/docs/Glossary/Favicon
#
#favicon = "assets/images/favicon.png"

# Zensical supports more than 60 different languages. This means that the
# labels and tooltips that Zensical's templates produce are translated.
# The "language" option allows you to set the language used. This language
# is also indicated in the HTML head element to help with accessibility
# and guide search engines and translation tools.
#
# The default language is "en" (English). It is possible to create
# sites with multiple languages and configure a language selector. See
# the documentation for details.
#
# Read more:
# - https://zensical.org/docs/setup/language/
#
language = "en"

# Zensical provides a number of feature toggles that change the behavior
# of the documentation site.
features = [
    # Zensical includes an announcement bar. This feature allows users to
    # dismiss it then they have read the announcement.
    # https://zensical.org/docs/setup/header/#announcement-bar
    "announce.dismiss",

    # If you have a repository configured and turn feature this on, Zensical
    # will generate an edit button for the page. This works for common
    # repository hosting services.
    # https://zensical.org/docs/setup/repository/#code-actions
    #"content.action.edit",

    # If you have a repository configured and turn feature this on, Zensical
    # will generate a button that allows the user to view the Markdown
    # code for the current page.
    # https://zensical.org/docs/setup/repository/#code-actions
    #"content.action.view",

    # Code annotations allow you to add an icon with a tooltip to your
    # code blocks to provide explanations at crucial points.
    # https://zensical.org/docs/authoring/code-blocks/#code-annotations
    "content.code.annotate",

    # This feature turns on a button in code blocks that allow users to
    # copy the content to their clipboard without first selecting it.
    # https://zensical.org/docs/authoring/code-blocks/#code-copy-button
    "content.code.copy",

    # Code blocks can include a button to allow for the selection of line
    # ranges by the user.
    # https://zensical.org/docs/authoring/code-blocks/#code-selection-button
    "content.code.select",

    # Zensical can render footnotes as inline tooltips, so the user can read
    # the footnote without leaving the context of the document.
    # https://zensical.org/docs/authoring/footnotes/#footnote-tooltips
    "content.footnote.tooltips",

    # If you have many content tabs that have the same titles (e.g., "Python",
    # "JavaScript", "Cobol"), this feature causes all of them to switch to
    # at the same time when the user chooses their language in one.
    # https://zensical.org/docs/authoring/content-tabs/#linked-content-tabs
    "content.tabs.link",

    # TODO: not sure I understand this one? Is there a demo of this in the docs?
    # https://zensical.org/docs/authoring/tooltips/#improved-tooltips
    "content.tooltips",

    # With this feature enabled, Zensical will automatically hide parts
    # of the header when the user scrolls past a certain point.
    # https://zensical.org/docs/setup/header/#automatic-hiding
    # "header.autohide",

    # Turn on this feature to expand all collapsible sections in the
    # navigation sidebar by default.
    # https://zensical.org/docs/setup/navigation/#navigation-expansion
    # "navigation.expand",

    # This feature turns on navigation elements in the footer that allow the
    # user to navigate to a next or previous page.
    # https://zensical.org/docs/setup/footer/#navigation
    "navigation.footer",

    # When section index pages are enabled, documents can be directly attached
    # to sections, which is particularly useful for providing overview pages.
    # https://zensical.org/docs/setup/navigation/#section-index-pages
    "navigation.indexes",

    # When instant navigation is enabled, clicks on all internal links will be
    # intercepted and dispatched via XHR without fully reloading the page.
    # https://zensical.org/docs/setup/navigation/#instant-navigation
    "navigation.instant",

    # With instant prefetching, your site will start to fetch a page once the
    # user hovers over a link. This will reduce the perceived loading time
    # for the user.
    # https://zensical.org/docs/setup/navigation/#instant-prefetching
    "navigation.instant.prefetch",

    # In order to provide a better user experience on slow connections when
    # using instant navigation, a progress indicator can be enabled.
    # https://zensical.org/docs/setup/navigation/#progress-indicator
    #"navigation.instant.progress",

    # When navigation paths are activated, a breadcrumb navigation is rendered
    # above the title of each page
    # https://zensical.org/docs/setup/navigation/#navigation-path
    "navigation.path",

    # When pruning is enabled, only the visible navigation items are included
    # in the rendered HTML, reducing the size of the built site by 33% or more.
    # https://zensical.org/docs/setup/navigation/#navigation-pruning
    #"navigation.prune",

    # When sections are enabled, top-level sections are rendered as groups in
    # the sidebar for viewports above 1220px, but remain as-is on mobile.
    # https://zensical.org/docs/setup/navigation/#navigation-sections
    "navigation.sections",

    # When tabs are enabled, top-level sections are rendered in a menu layer
    # below the header for viewports above 1220px, but remain as-is on mobile.
    # https://zensical.org/docs/setup/navigation/#navigation-tabs
    #"navigation.tabs",

    # When sticky tabs are enabled, navigation tabs will lock below the header
    # and always remain visible when scrolling down.
    # https://zensical.org/docs/setup/navigation/#sticky-navigation-tabs
    #"navigation.tabs.sticky",

    # A back-to-top button can be shown when the user, after scrolling down,
    # starts to scroll up again.
    # https://zensical.org/docs/setup/navigation/#back-to-top-button
    "navigation.top",

    # When anchor tracking is enabled, the URL in the address bar is
    # automatically updated with the active anchor as highlighted in the table
    # of contents.
    # https://zensical.org/docs/setup/navigation/#anchor-tracking
    "navigation.tracking",

    # When search highlighting is enabled and a user clicks on a search result,
    # Zensical will highlight all occurrences after following the link.
    # https://zensical.org/docs/setup/search/#search-highlighting
    "search.highlight",

    # When anchor following for the table of contents is enabled, the sidebar
    # is automatically scrolled so that the active anchor is always visible.
    # https://zensical.org/docs/setup/navigation/#anchor-following
    # "toc.follow",

    # When navigation integration for the table of contents is enabled, it is
    # always rendered as part of the navigation sidebar on the left.
    # https://zensical.org/docs/setup/navigation/#navigation-integration
    #"toc.integrate",
]

# ----------------------------------------------------------------------------
# In the "palette" subsection you can configure options for the color scheme.
# You can configure different color # schemes, e.g., to turn on dark mode,
# that the user can switch between. Each color scheme can be further
# customized.
#
# Read more:
# - https://zensical.org/docs/setup/colors/
# ----------------------------------------------------------------------------
[[project.theme.palette]]
scheme = "default"
toggle.icon = "lucide/sun"
toggle.name = "Switch to dark mode"

[[project.theme.palette]]
scheme = "slate"
toggle.icon = "lucide/moon"
toggle.name = "Switch to light mode"

# ----------------------------------------------------------------------------
# In the "font" subsection you can configure the fonts used. By default, fonts
# are loaded from Google Fonts, giving you a wide range of choices from a set
# of suitably licensed fonts. There are options for a normal text font and for
# a monospaced font used in code blocks.
# ----------------------------------------------------------------------------
#[project.theme.font]
#text = "Inter"
#code = "Jetbrains Mono"

# ----------------------------------------------------------------------------
# You can configure your own logo to be shown in the header using the "logo"
# option in the "icons" subsection. The logo can be a path to a file in your
# "docs_dir" or it can be a path to an icon.
#
# Likewise, you can customize the logo used for the repository section of the
# header. Zensical derives the default logo for this from the repository URL.
# See below...
#
# There are other icons you can customize. See the documentation for details.
#
# Read more:
# - https://zensical.org/docs/setup/logo-and-icons
# - https://zensical.org/docs/authoring/icons-emojis/#search
# ----------------------------------------------------------------------------
#[project.theme.icon]
#logo = "lucide/smile"
#repo = "lucide/smile"

# ----------------------------------------------------------------------------
# The "extra" section contains miscellaneous settings.
# ----------------------------------------------------------------------------
#[[project.extra.social]]
#icon = "fontawesome/brands/github"
#link = "https://github.com/user/repo"

ヘルプ

zensical --help

% zensical --help
Usage: zensical [OPTIONS] COMMAND [ARGS]...

  Zensical - A modern static site generator

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  build  Build a project.
  new    Create a new template project in the current directory or in the...
  serve  Build and serve a project.

zensical new --help

% zensical new --help
Usage: zensical new [OPTIONS] [DIRECTORY]

  Create a new template project in the current directory or in the given
  directory.

  Raises:     ClickException: if the directory already contains a
  zensical.toml or a         docs directory that is not empty, as well as when
  the path provided         points to something that is not a directory.

Options:
  --help  Show this message and exit.

zensical build --help

% zensical build --help
Usage: zensical build [OPTIONS]

  Build a project.

Options:
  -f, --config-file PATH  Path to config file.
  -c, --clean             Clean cache.
  -s, --strict            Strict mode (currently unsupported).
  --help                  Show this message and exit.

zensical serve --help

% zensical serve --help
Usage: zensical serve [OPTIONS]

  Build and serve a project.

Options:
  -f, --config-file PATH    Path to config file.
  -a, --dev-addr <IP:PORT>  IP address and port (default: localhost:8000).
  -o, --open                Open preview in default browser.
  -s, --strict              Strict mode (currently unsupported).
  --help                    Show this message and exit.