フロントマター
ページが受け付けるすべてのフロントマターフィールド(いずれも任意)について、title、description、sidebar、SEO、search などがそれぞれ何を制御するかを説明します。
すべてのページは次のフロントマターを受け付けます。すべてのフィールドは任意です。
フロントマターは YAML なので、コロンの後にスペースが続く値は description: "Setup: the easy way" のように引用符で囲んでください。引用符で囲まないと、YAML は 2 つ目のコロンをネストされたキーの始まりとして解釈し、Blume はそのファイルと行を BLUME_FRONTMATTER_INVALID として報告します。
title?string
Page title.
stringdescription?string
Page summary.
stringtype?string
Content type. blog/changelog drive feeds.
stringdocdate?string
Publish date for blog/changelog feeds (ISO or YAML date).
stringauthors?string | string[] | object[]
Post author(s) for blog/changelog content — a name, or objects with a name plus optional avatar/url and any extra fields. Credited as Person nodes in the page's JSON-LD; other fields are preserved as-is.
string | string[] | object[]slug?string
Set the page's full route from the content root (guides/setup). It replaces the whole path the file's location gives the page, not just the last segment. A . or .. segment is an error: browsers resolve it away, so no link could reach the page.
stringdraft?boolean
Exclude from production builds.
booleanfalsedeprecated?boolean
Mark the page deprecated: its sidebar row gets a deprecated pill (a translatable UI string).
booleanfalsehidden?boolean
Shorthand for sidebar.hidden.
booleanfalsenoindex?boolean
Shorthand for seo.noindex.
booleanfalsenarration?boolean
Set to false to leave this page without the Listen to this page player when narration is on.
booleantruerelated?(string | { [title]: string })[] | false
Pages to suggest at the foot of this one, up to ten: root-relative paths, absolute URLs, or { Title: link } to name a link. See Related pages below.
(string | { [title]: string })[] | falsepagination?boolean
Set to false to drop the previous and next links at the foot of the page. The page stays in the order, so its neighbors still link to it.
booleantrueicon?string
Lucide icon for the page's sidebar row when sidebar.icon isn't set (sidebar.icon wins).
stringlastModified?string
Pin the page's "last updated" date (ISO or YAML date); overrides the git-derived date.
stringmode?"default" | "wide" | "center" | "custom" | "frame"
What the page shows around its content. See Layout below.
"default" | "wide" | "center" | "custom" | "frame""default"api?string
An endpoint this page documents by hand, as an HTTP method and a path or URL (POST /v1/users). See Hand-written API pages.
stringauthMethod?"bearer" | "basic" | "key" | "none"
How an api page's endpoint authenticates, over the site's api.auth.
"bearer" | "basic" | "key" | "none"playground?"interactive" | "simple" | "none"
What an api page shows: the Try it panel and samples, the samples only, or neither.
"interactive" | "simple" | "none""interactive"レイアウト
mode は、ページのコンテンツの周囲に何を表示するかを設定します。
| モード | サイドバー | タイトルと目次 | ページ末尾のリンクとフッター | コンテンツの幅 |
|---|---|---|---|---|
default |
あり | あり | あり | 本文向けの標準幅 |
wide |
あり | タイトルのみ | あり | カラム全体 |
center |
なし | タイトルのみ | あり | 中央寄せの広めのカラム |
frame |
あり | なし | なし | カラム全体 |
custom |
なし | なし | なし | ページ全体 |
wide は幅の広い表や図を載せるページに、center はリリースノートやお知らせのように上から下へ読み進めるページに適しています。custom はヘッダーだけを残すモードで、MDX で書いたランディングページ向けです。frame はサイドバーも残すモードで、ドキュメントのナビゲーション内に置くツールやダッシュボード向けです。どちらのモードもページのタイトルや説明をレンダリングしないため、見出しは自分で書いてください。どのモードでもページは検索対象に残り、Markdown 版も引き続き利用できます。
title: Welcome
mode: custom
値は Mintlify と同じです。ただし、Mintlify の assistant モード(ページ全体を使うチャット)に相当するものはありません。
関連ページ
related には、このページの末尾で提案するページを列挙します。これらのページは 関連ページ という見出しの下にカードとして表示されます。
related:
- /guides/deployment
- Search setup: /configuration/search
- https://astro.build
ルート相対パスはサイト内の別のページを指し、カードにはそのページのタイトルと説明が表示されます。翻訳されたページでは、対応する翻訳があればそちらにリンクします。Title: link 形式のエントリーではカードのタイトルを直接指定でき、絶対 URL はホスト名を表示してサイト外にリンクします。パスはページ内のほかのリンクと同じようにチェックされるため、どのページにも一致しないパスは blume validate で報告されます。このキーは Mintlify と同じなので、移行したページではそのまま使えます。
サイドバー
sidebar:
label: Install
order: 2
icon: download
badge: New
hidden: false
display: page
hidden はページをサイドバーと前へ/次へのページネーションから除外し、その結果、サイトマップ、検索、llms.txt からも除外します(非表示のページ を参照)。フォルダーの index ページでは、そのページ自身の行だけが除外されます。グループの行は引き続きそのページにリンクするため、前へ/次へのリンクもそのページを経由し、ページはサイトマップ、検索、llms.txt にも残ります。ホームページ(ルートの index ページ)でも、除外されるのは行だけで、ページはサイトマップ、検索、llms.txt に残ります。
display はページが属するフォルダーグループの表示モードを設定します(グループごとのオーバーライド)。これが意味を持つのは、自動生成されたサイドバー配下にあるフォルダーの index ページだけです。それ以外の場所(index 以外のページ、コンテンツルート自体の index ページ、明示的な navigation.sidebar 配下のページ)には設定対象のグループがないため、Blume は BLUME_SIDEBAR_DISPLAY_IGNORED という警告を出します。
SEO
seo:
title: Install Blume
description: Install Blume and scaffold your first project.
image: /og/install.png
canonical: https://acme.com/install
noindex: false
x:
creator: "@jane"
noindex は robots の noindex を出力し、ページをサイトマップから除外し、構造化データも出力しません。canonical に別の URL を指定した場合も、ページはサイトマップから除外されます。サイトマップには正規 URL だけが掲載されるためです。x.creator はページを X アカウント(twitter:creator)の作成として示します。たとえばゲスト投稿の著者を示すときに使います。すべてのフィールドについては メタデータ を参照してください。
検索
search:
exclude: false
tags: [api]
keywords: [install, setup]
boost: 3
exclude はページを検索対象から除外し、tags はホスト型の検索アダプターがフィルタリングに使えるように、ページのレコードにラベルを付けます(タグ を参照)。keywords には、ページ本文に含まれない語句でもページが見つかるようにするための追加の語句を指定します。boost はページの関連度に掛ける倍率で、1 より大きいと上位に、1 より小さいと下位に表示されます。ランキング を参照してください。
AI
ai:
exclude: true
ai.exclude はページを llms.txt と llms-full.txt から除外し、サイトのスキル のページマップからも除外します。ページは引き続きレンダリングされ、検索、MCP サーバー、JSON API の対象にも残り、サイトマップにも掲載されたままです。
変更履歴
変更履歴のエントリー(type: changelog)では、任意の changelog オブジェクトを使って、フィードや表示に使うメタデータを追加できます。
type: changelog
changelog:
version: 1.2.0
date: 2026-06-20
category: Features
date はここにもトップレベルにも記述できます。どちらに書いても 変更履歴の RSS フィード に反映されます。自動生成されるタイムラインページとフィードについては 変更履歴 を参照してください。
カスタムキー
このリファレンスにないキーがあるとビルドが失敗するため、タイプミスを早い段階で見つけられます。独自のメタデータを持つプロジェクトでは、blume.config.ts の frontmatter.extend でキーを追加できます。追加したキーは、それぞれプロジェクト側で用意したスキーマで検証されます。
import { defineConfig } from "blume";
import { z } from "zod";
export default defineConfig({
frontmatter: {
extend: {
owner: z.string(),
reviewedAt: z.coerce.date().optional(),
},
},
});
---
title: Install
owner: "@sam"
reviewedAt: 2026-06-20
---
スキーマは Standard Schema インターフェースで受け付けるため、Zod(プロジェクトにインストールされているバージョンを問いません)、Valibot、ArkType のいずれも使用できます。宣言したキーは、そのキーがないページも含めてすべてのページで検証されます。そのため、必須のスキーマにするとサイト全体でそのキーが必須になります。キーがある場合だけ検証するには .optional() を付けてください。それ以外のキーはこれまでどおり厳密に検証され、組み込みフィールドを宣言し直すことはできません。
タイプごとのキー
RFC の status やインシデントレポートの severity のように、特定のコンテンツタイプでだけキーを必須にしたい場合は、代わりに content.types の下で宣言します。その際は、対象となるフロントマターの type をキーにします。
import { defineConfig } from "blume";
import { z } from "zod";
export default defineConfig({
content: {
types: {
rfc: {
frontmatter: {
domain: z.string(),
status: z.enum(["draft", "review", "enforced"]),
},
},
},
},
});
---
title: OpenAPI request schemas
type: rfc
domain: architecture
status: enforced
---
タイプごとのキーは extend と同じルールで検証されますが、対象は最終的に決まった type が一致するページに限られます。content.defaultType に対する宣言の場合は、type を設定していないページも対象になります。1 つのキーは、サイト全体の宣言とタイプごとの宣言のどちらか一方にしか書けません。また、ほかのタイプにだけ宣言したキーは、それ以外のページでは未知のキーとして扱われます。そのため、通常のドキュメントページに誤って status を書くと、これまでどおりビルドが失敗します。
検証に失敗したページがあると blume build が失敗し、ファイル名とキーを示す診断メッセージが表示されます。--no-strict を指定するとビルドは成功しますが、失敗したページは出力から除外されます。除外されたページ数はビルドサマリーに表示されます。
スキーマは、エディターや移行ツールで使えるように blume/schema からエクスポートされています。