サイト設定(blume.config.ts)
このドキュメントは、本リポジトリ(Blumeで構築された設計書サイト)自体のblume.config.tsの設定内容と、各設定を選んだ理由を記録するものです。MorningStatusAppの設計(docs/design/配下)とは別に、サイト自体の構成・運用に関する知見をここにまとめます。
現在の設定
export default defineConfig({
title: "Documents for MorningStatusApp",
description: "Documentation powered by Blume.",
deployment: {
output: "server",
adapter: "vercel",
},
ai: {
mcp: {
enabled: true,
route: "/mcp",
},
},
i18n: {
defaultLocale: "ja",
locales: [{ code: "ja", label: "日本語" }],
},
search: {
provider: "orama",
},
});
各設定の理由
deployment: { output: "server", adapter: "vercel" }
MorningStatusApp本体と同じVercelプロジェクト配下でホストするため。server出力により、ai.mcpのMCPサーバーエンドポイントやAccept: text/markdownによるコンテンツネゴシエーションが機能する(static出力ではこれらは動かない)。
ai.mcp.enabled: true, route: "/mcp"
外部エージェント・ツールから設計書を読み取り専用で参照できるMCPサーバーを公開するため。https://morning-status-blume.vercel.app/mcpで疎通確認済み(list_pages / get_page / get_navigation / search_docs)。
i18n.defaultLocale: "ja" / search.provider: "orama"(blume#41で追加・変更)
背景: 本サイトの設計書・開発ノートはすべて日本語で書かれている。Blumeの検索機能(サイト内検索ダイアログ・MCPのsearch_docsツール・Ask AIグラウンディング)が日本語クエリで正しくヒットする必要がある。
経緯:
- 初期構築時(blume導入時点、#1341 PoC):
search.provider未設定=デフォルトのoramaのまま運用していた。 - 2026-07-23(#1341 PoC検証、コミット
39c33e6): Oramaのデフォルト(英語専用)トークナイザーでは日本語クエリが単語境界を認識できず、検索結果が常に0件になる問題を確認。search.providerをflexsearchに変更し、forwardトークナイズにより日本語でもヒットすることを検証・採用した。 - 2026-07-31(
project_blume_mcp_setupメモリで記録): FlexSearchへの切り替えはサイト自体の検索ダイアログは直したが、MCPのsearch_docsツールはsearch.providerの設定に関わらず独自の「共有Oramaインデックス」を内部で使い続けており、日本語クエリでは引き続き[]を返すことが判明。既知の制約として記録し、Blume側のアップデート待ちとした。 - 2026-08-12(#41): blume 1.4.xで
i18n.defaultLocaleがCJK言語(日本語・中国語・韓国語・タイ語)の場合、OramaのインデックスがIntl.Segmenterベースの単語分割トークナイザーに自動的に切り替わる機能が追加されていることを確認。公式ドキュメント(apps/docs/content/docs/configuration/search.mdx、upstream)によれば、このトークナイザーはサイト内検索・search_docs・Ask AIグラウンディングの三者で共有される。search.providerをoramaに戻し、i18n.defaultLocale: "ja"を追加した。
検証結果(blume 1.4.3・本設定で実施):
- サイト内検索ダイアログで「メンバー」を検索 → タイトル・本文中の一致箇所がハイライト付きで正しくヒット
- MCPの
search_docsツールに{"query": "メンバー"}を渡す → 「メンバー データ設計書」等9件の関連ドキュメントを関連度順に返却(変更前は[])
両方の経路で日本語検索が機能することを実証済み。flexsearchパッケージへの依存は不要になったためpackage.jsonから削除した。
注意: search.providerを将来変更する場合は、flexsearchにはi18n連携のCJKセグメンテーション機構がない(“FlexSearch has no equivalent segmentation hook”、upstream docs)。日本語サイトである限りorama(デフォルト)またはpagefind(pagefind_extendedがCJKをネイティブ対応)を選ぶこと。