サンプル:ショートコードリファレンス の実際の動作確認ページです。
タブ(Tabs / Tab コンポーネント)
<Tabs> と <Tab label="..."> を組み合わせてタブ切り替えを作れます。
タブ内で Markdown が完全に使えます(テーブル・コードブロック・ショートコードも可)。
snsn-codex は静的サイトジェネレーター Astro をベースに構築された個人向け Wiki です。
主な特徴:
- Markdown / MDX でページを書くだけで生成
- WikiLink でページ間をリンク
- グラフビューで知識の繋がりを可視化
- Pagefind による全文検索
npm install
npm run dev # 開発サーバー(http://localhost:4321)
npm run build # 本番ビルド + Pagefind インデックス生成src/content/wiki/ に Markdown ファイルを置くだけで動作します。
src/styles/theme.css の CSS 変数を書き換えると配色を変更できます。
:root {
--color-accent: #e11d48; /* ローズ系に変更 */
}モノクロテーマは src/styles/theme-mono.css を参照してください。
theme.css の1行を書き換えるだけです。脚注
脚注は本文中に <Ref id="..." /> を置き、ページ末尾に <Fn id="..."> で対応する注釈を定義します [1] 。
番号にホバーするとポップアップ、クリックすると末尾欄にスクロールします [2] 。
他ページの埋め込み(トランスクルージョン)
<Include slug="スラッグ" /> で他の Wiki ページの内容をそのまま埋め込めます。
下記は 入門 ページの内容を埋め込んでいます。
セットアップ
# クローン後、依存関係をインストール
npm install
# 開発サーバー起動(http://localhost:4321)
npm run dev
# 本番ビルド(Pagefind検索インデックスも同時生成)
npm run build
# ビルド結果のプレビュー
npm run preview
ページの作成
src/content/wiki/ にMarkdownファイルを置くだけでページになります。
---
title: "ページタイトル"
description: "短い説明(任意)"
tags: ["タグ1", "タグ2"]
category: "カテゴリ名"
date: 2024-01-01
updated: 2024-06-01
---
本文をここに書きます。[[他のページ]] へのWikiLinkも使えます。
frontmatter の主なフィールド
| フィールド | 型 | 説明 |
|---|---|---|
title | string | ページタイトル(必須) |
description | string | 短い説明文(任意) |
tags | string[] | タグの配列 |
category | string | カテゴリ名 |
date | date | 作成日 |
updated | date | 更新日 |
draft | bool | true で下書き(非公開) |
WikiLink の使い方
[[ページ名]] → ページへのリンク
[[ページ名|表示テキスト]] → カスタムテキストでリンク
[[サブフォルダ/ページ名]] → サブフォルダのページへリンク
バックリンク(そのページへのリンク一覧)はページ下部に自動表示されます。
ディレクトリ構成
コンテンツは src/content/wiki/[lang]/ 配下のリソースとして管理されます。
サブディレクトリでさらに整理することも可能です。
src/content/wiki/
├── ja/ → 日本語 (ルート)
│ ├── index.mdx → /wiki/ja
│ ├──入门.mdx → /wiki/ja/getting-started
│ └── recipes/
│ └── pasta.mdx → /wiki/ja/recipes/pasta
└── en/ → 英語
└── index.mdx → /wiki/en
src/content/wiki/templates/ 内のファイルはテンプレート扱いとなり、通常ページとしては公開されません。
多言語対応 (i18n)
詳細は サンプル:多言語対応(i18n) を参照してください。 自動フォールバック機能により、翻訳がない場合は日本語版が自動的に表示されます。
サイドバーのカスタマイズ
src/data/sidebar-nav.ts を編集してサイドバー構成を変更できます。
// 手動でリンクを並べる
{
title: 'ガイド',
icon: 'fa-solid fa-book',
items: [
{ slug: 'getting-started', label: 'はじめかた' },
{ slug: 'shortcode-reference', label: 'ショートコード' },
],
},
// カテゴリを自動収集
{
title: 'レシピ',
icon: 'fa-solid fa-utensils',
category: 'レシピ',
autoSort: 'title',
},
GitHub Pages への公開
- GitHubリポジトリを作成し、コードをpush
- Settings → Pages → Source で
GitHub Actionsを選択 - サブパス(
/repo-name)を使う場合は Settings → Variables に以下を設定:SITE_URL:https://username.github.ioBASE_PATH:/repo-name
mainブランチにpushすると自動デプロイ
カスタムドメインや username.github.io をルートで使う場合は BASE_PATH の設定は不要です。
サンプル:ショートコードリファレンス へ続く →
Navbox(ナビゲーションボックス)
src/data/navboxes.ts にナビゲーションボックスを定義し、id で呼び出します。
<Navbox id="example-navbox" />
関連ページ
- サンプル:基本機能 — WikiLink・コールアウトなど基本機能
- サンプル:ショートコードリファレンス — 全ショートコードの一覧
- サンプル:データテーブルデモ — Datatable コンポーネント