Color mode

Content の設定

通常は content.directory で Markdown などを読み込むディレクトリを指定します。

ts
content: {
  directory: "content",
}

標準的な Site なら、

text
my-site/
├─ app/
├─ content/
├─ public/
├─ package.json
├─ vite.config.ts
└─ riebeckite.config.ts

のような構成になります。

除外するファイル

exclude を使うと、Content System に読み込ませないファイルを指定できます。

ts
content: {
  directory: "content",
  exclude: [
    "drafts/**",
    "Templates/**",
  ],
}

exclude に一致したファイルは、コンテンツとして処理される前に除外されます。

内部では isExcluded がこの判定を行います。

公開条件

どのコンテンツを公開するかは、既定では publishStrategy で設定します。

ts
content: {
  filters: {
    publishStrategy: "explicit",
  },
}

公開判定には frontmatter も利用されます。

yaml
---
publish: true
---

現在の公開状態は Core で一度だけ解決され、Plugin には次の manifest view として渡されます。

View 含まれるもの 用途
manifest.publicEntries ルーティングできるページ。public と unlisted ページ表示、SSG の path 列挙
manifest.discoverableEntries 発見可能な public ページだけ docs navigation、search、feed、sitemap、taxonomy、graph、backlinks、related/recent

frontmatter で明示的な公開状態を指定できます。

Frontmatter 結果
visibility: public URL で表示でき、一覧や検索にも出る
visibility: unlisted URL を知っていれば表示できるが、一覧や検索には出ない
visibility: draft URL でも表示されず、一覧や検索にも出ない
publishAt: 2026-01-01T00:00:00.000Z build 時刻がその日時より前なら非公開、以後の build で public になる
visibility / publishAt なし publishStrategy に従う。explicit は publish: true が必要。selective は private: true と draft: true を除外する

visibility や publishAt が不正な場合、推測せず build を失敗させます。scheduled publishing は build 時刻だけで判定します。Riebeckite は runtime timer を起動しません。

exclude と publishStrategy は似ていますが、役割が異なります。

Diagram source
text
flowchart LR
    Files["Files"]
    Exclude{"exclude ?"}
    Content["Content"]
    Publish{"Published ?"}
    Public["Public Content"]
    Private["Not Published"]
 
    Files --> Exclude
    Exclude -->|Yes| Skip["読み込まない"]
    Exclude -->|No| Content
    Content --> Publish
    Publish -->|Yes| Public
    Publish -->|No| Private

exclude は Content System に入れるか、publishStrategy や visibility は Site でどう扱うかを決めます。exclude されたファイルは link resolution や graph、diagnostics にも現れません。一方、draft、unlisted、公開前の publishAt は raw manifest には残りますが、Core が route 用 view と discovery 用 view から適切に外します。

ContentSource

通常は content.directory を使用しますが、独自の読み込み元を使用する場合は content.source を指定できます。

text
content.directory
    ↓
標準 filesystem ContentSource

または、

text
content.source
    ↓
独自 ContentSource

のどちらかです。

同じコンテンツに対して2つの reader を動かすための設定ではありません。

content.source を指定する場合は、標準 filesystem reader を置き換えるものとして扱います。

History

1 changesCollapseExpand
1 + ---
2 + title: Content の設定
3 + sidebar:
4 + label: Content の設定
5 + order: 20
6 + ---
7 + # Content の設定
8 +
9 + 通常は `content.directory` で Markdown などを読み込むディレクトリを指定します。
10 +
11 + ```ts id="dn44si"
12 + content: {
13 + directory: "content",
14 + }
15 + ```
16 +
17 + 標準的な Site なら、
18 +
19 + ```text id="w3ifap"
20 + my-site/
21 + ├─ app/
22 + ├─ content/
23 + ├─ public/
24 + ├─ package.json
25 + ├─ vite.config.ts
26 + └─ riebeckite.config.ts
27 + ```
28 +
29 + のような構成になります。
30 +
31 + ## 除外するファイル
32 +
33 + `exclude` を使うと、Content System に読み込ませないファイルを指定できます。
34 +
35 + ```ts id="4kv6vn"
36 + content: {
37 + directory: "content",
38 + exclude: [
39 + "drafts/**",
40 + "Templates/**",
41 + ],
42 + }
43 + ```
44 +
45 + `exclude` に一致したファイルは、コンテンツとして処理される前に除外されます。
46 +
47 + 内部では `isExcluded` がこの判定を行います。
48 +
49 + ## 公開条件
50 +
51 + どのコンテンツを公開するかは、既定では `publishStrategy` で設定します。
52 +
53 + ```ts id="hp9zx8"
54 + content: {
55 + filters: {
56 + publishStrategy: "explicit",
57 + },
58 + }
59 + ```
60 +
61 + 公開判定には frontmatter も利用されます。
62 +
63 + ```yaml id="osj0d5"
64 + ---
65 + publish: true
66 + ---
67 + ```
68 +
69 + 現在の公開状態は Core で一度だけ解決され、Plugin には次の manifest view として渡されます。
70 +
71 + | View | 含まれるもの | 用途 |
72 + | --- | --- | --- |
73 + | `manifest.publicEntries` | ルーティングできるページ。`public` と `unlisted` | ページ表示、SSG の path 列挙 |
74 + | `manifest.discoverableEntries` | 発見可能な `public` ページだけ | docs navigation、search、feed、sitemap、taxonomy、graph、backlinks、related/recent |
75 +
76 + frontmatter で明示的な公開状態を指定できます。
77 +
78 + | Frontmatter | 結果 |
79 + | --- | --- |
80 + | `visibility: public` | URL で表示でき、一覧や検索にも出る |
81 + | `visibility: unlisted` | URL を知っていれば表示できるが、一覧や検索には出ない |
82 + | `visibility: draft` | URL でも表示されず、一覧や検索にも出ない |
83 + | `publishAt: 2026-01-01T00:00:00.000Z` | build 時刻がその日時より前なら非公開、以後の build で `public` になる |
84 + | `visibility` / `publishAt` なし | `publishStrategy` に従う。`explicit` は `publish: true` が必要。`selective` は `private: true` と `draft: true` を除外する |
85 +
86 + `visibility` や `publishAt` が不正な場合、推測せず build を失敗させます。scheduled publishing は build 時刻だけで判定します。Riebeckite は runtime timer を起動しません。
87 +
88 + `exclude` と `publishStrategy` は似ていますが、役割が異なります。
89 +
90 + ```mermaid id="1t5jnq"
91 + flowchart LR
92 + Files["Files"]
93 + Exclude{"exclude ?"}
94 + Content["Content"]
95 + Publish{"Published ?"}
96 + Public["Public Content"]
97 + Private["Not Published"]
98 +
99 + Files --> Exclude
100 + Exclude -->|Yes| Skip["読み込まない"]
101 + Exclude -->|No| Content
102 + Content --> Publish
103 + Publish -->|Yes| Public
104 + Publish -->|No| Private
105 + ```
106 +
107 + `exclude` は **Content System に入れるか**、`publishStrategy` や `visibility` は **Site でどう扱うか**を決めます。`exclude` されたファイルは link resolution や graph、diagnostics にも現れません。一方、`draft`、`unlisted`、公開前の `publishAt` は raw manifest には残りますが、Core が route 用 view と discovery 用 view から適切に外します。
108 +
109 +
110 + ## ContentSource
111 +
112 + 通常は `content.directory` を使用しますが、独自の読み込み元を使用する場合は `content.source` を指定できます。
113 +
114 + ```text id="rbdlxj"
115 + content.directory
116 + ↓
117 + 標準 filesystem ContentSource
118 + ```
119 +
120 + または、
121 +
122 + ```text id="hrp9p5"
123 + content.source
124 + ↓
125 + 独自 ContentSource
126 + ```
127 +
128 + のどちらかです。
129 +
130 + 同じコンテンツに対して2つの reader を動かすための設定ではありません。
131 +
132 + `content.source` を指定する場合は、標準 filesystem reader を置き換えるものとして扱います。
133 +