Kashiwazaki LLMO Markdown Subdomain マニュアル
AI クローラ (ChatGPT / Claude / Perplexity / Gemini 等) 向けに、専用サブドメイン (例:
md.example.com) でサイト本体の Markdown 並行版を配信する WordPress プラグインの公式マニュアルです。
メインサイト (example.com) の HTML 出力には一切手を加えず、AI 向けの最適化レイヤだけを別ドメインで上乗せします。
このプラグインで何ができるか
一言でいえば、「サイト本体に何も触らずに、AI 検索向けの Markdown 版サイトをサブドメインで増設する」 プラグインです。 既存の SEO 資産 (canonical URL、被リンク、検索順位、Yoast / RankMath 等の設定) を一切変更しないまま、 AI クローラが効率よく読める専用版を別ドメインに用意します。
md サブドメイン配信
md.example.com 等の専用ホストでだけ Markdown を返却。
HTTP_HOST 判定で md ホスト以外のリクエストでは完全に no-op、
メイン側の HTML 出力に副作用ゼロ。
Markdown インライン Schema.org
JSON-LD ではなく Markdown インラインで > **Schema.org/Article**
のように書く Markdown インライン記法を採用。柏崎剛が提唱する LLM ネイティブサブドメインの中核出力形式です。
自然言語と構造化マークアップを 1 文書に統合します。
メインサイト無改変
template_redirect priority -1 で md ホストのリクエストだけを捕捉。
既存テーマ・SEO プラグイン・robots.txt・<head>
出力には一切干渉しません。
サブディレモード v1.0.3
WordPress を example.com/wp/ 等のサブディレクトリに置いている環境向け。
md ホスト root (md.example.com/) に AI クローラ向けインデックスを配信。
出力タブで設定 (default OFF)。
もう少し具体的には、以下のような出力の差を 1 つの WordPress インストールから同時に提供できます。
| 観点 | メインホスト (例: example.com) |
md サブドメイン (例: md.example.com) |
|---|---|---|
| 用途 | 人間 + Google / Bing 等の従来検索向け | AI クローラ (GPTBot / ClaudeBot / PerplexityBot 等) 向け |
| Content-Type | 主に text/html |
text/markdown; charset=utf-8 |
| 構造化データ | 既存テーマ / SEO プラグインの JSON-LD・OGP 等 | Markdown インライン Schema.org |
| robots 指示 | テーマ・SEO プラグインの設定どおり | X-Robots-Tag: noindex, follow + 専用 robots.txt |
| canonical | そのページ自身 (従来どおり) | HTTP Link: rel="canonical" でメイン側 URL を指す |
| md 並行版へのリンク (alt-link) | HTTP Link: rel="alternate" + HTML <link rel="alternate"> で md URL を提示 (HTML body 非改変、設定で OFF 可) |
— |
| favicon | 従来どおり | md ホストの /favicon.ico 等 5 URI をメイン Site Icon に 302 redirect |
| このプラグインの介入 | HTTP ヘッダ + HTML <head> 内 <link> タグのみ (alt-link 機能、設定で OFF 可) |
このプラグインがフル制御 |
つまり、「AI 向け版サイトを増設しても、SEO 観点の主役はあくまで www 側」 という設計を、HTTP / Schema.org / Markdown 本文の 3 層で一貫して宣言します。
全体ワークフロー
導入から配信までの流れは大きく 3 フェーズに分かれます。詳細は 5 分クイックスタート と DNS と Bootstrap で扱います。
フェーズ 1: インフラ準備 (1 回のみ)
- サイトとは別の専用サブドメイン (例:
md.example.com) を DNS で WordPress サーバへ向ける - サブドメインのドキュメントルートに、メインの
wp-blog-header.phpへ橋渡しするindex.phpを配置 (本プラグインの Bootstrap installer がワンクリックで自動生成) - SSL 証明書を発行 (Let's Encrypt 等)
フェーズ 2: プラグイン設定 (UI ですべて完結)
- プラグインを有効化 (この時点では何も配信されない、master switch は default OFF)
- 「一般」タブで
md_hostを確認、master switch を ON - 「対象範囲」タブで Markdown 化する post_type / route を選択 (default は全 ON)
- 「出力」「Schema.org」「キャッシュ」「言語」タブで挙動を微調整
- 「診断」タブの Test renderer で出力をプレビュー
フェーズ 3: 配信運用 (継続)
- AI クローラが
https://md.example.com/配下を巡回 - Markdown を返却、内部リンクは
md→mdで完結 - HTTP Link ヘッダで canonical を seo (www) に明示、authority/freshness/canonicalness は seo に帰属
- 診断タブのアクセスログで来訪 bot を観測
設計上の最大の特徴
メイン側 (www) のリクエストでは、このプラグインは 1 行の出力もしません。
HTTP_HOST を見て md ホストでなければ即 return するので、既存サイトのレンダリング・SEO・キャッシュ設定に副作用ゼロです。
対象読者
このマニュアルは以下の 3 タイプの読者を想定して書かれています。 自分に近い役割の章から読み進めてください。
サイト運営者・編集者
「ChatGPT や Perplexity に自社サイトの内容を正しく拾ってもらいたい」 「AI 検索の時代に何かしないと不安だが、SEO 設定は怖くて触れない」というニーズに応えます。 このプラグインは 既存サイトを 1 行も変えずに 別ドメイン経由で AI 向け配信を増設するため、 運用の心理的ハードルが極めて低いのが特徴です。
- まず 基本概念 で「なぜ別ドメインで Markdown を出すのか」を理解
- 次に 5 分クイックスタート で動かす
- うまく動いたら 対象範囲タブ で配信したい post_type を絞り込む
SEO / LLMO 担当・コンサル
既存の SEO 戦略 (canonical / OGP / JSON-LD / hreflang 等) を維持したまま、AI 検索向けのレイヤを上乗せしたい担当者向けです。
主従関係を HTTP Link ヘッダ・Markdown 冒頭の Canonical 注記・Schema.org の url フィールドの 3 層で seo (www) に宣言する設計を採用しています。
- Canonical の扱い で主従関係を確認
- Schema.org タブ で post_type ごとの type マッピングを調整
- 拡張ポイント の
ksmd_schema_header_linesfilter で独自プロパティを追加
開発者・プラグイン拡張者
プラグインの動作を WP のフィルタフックで拡張したい、社内ホスティング環境に合わせてカスタマイズしたい、 あるいは挙動を理解して別実装する必要がある開発者向けです。
- アーキテクチャ で URL 解決フロー・
template_redirect介入点を確認 - 拡張ポイント で公開済みフィルタの一覧と利用例
- 診断タブ の Test renderer / 互換性チェック / アクセスログを開発時の確認手段として活用
動作要件
| 項目 | 要件 | 備考 |
|---|---|---|
| WordPress | 6.1 以上 | 動作確認済 6.7 まで (readme.txt Tested up to) |
| PHP | 7.4 以上 | PHP 8.0 / 8.1 / 8.2 / 8.3 でも動作 (内部で mb_convert_encoding('HTML-ENTITIES') は使わない実装) |
| PHP 拡張 | DOMDocument / libxml / mbstring (推奨) / hash | Markdown 変換と HMAC token に使用 (詳細は診断タブの互換性チェック) |
| DNS | md サブドメイン用の A / CNAME / AAAA レコードを発行できる権限 | サブドメインを WordPress に向けられること |
| SSL | md サブドメインに対する有効な証明書 (推奨) | Let's Encrypt 等で発行可能。HTTPS 化されていないサイト (http://) でも動作はする |
| サーバ構成 | md サブドメインのドキュメントルートを WordPress と同一インストールに紐付けられること | 兄弟構成 (例: /wp/ と /md/ が並ぶ) または ABSPATH 直下サブディレクトリ構成 (例: XServer 標準) のどちらでも可 |
| 非対応 | Bedrock 等の web/wp/ 構造 |
Bootstrap installer が拒否します (手動で index.php を配置すれば動作可能) |
事前に必要なもの
このプラグインを「インストールして有効化するだけ」で動かすことはできません。 必ず 1 つ以上のサブドメインを WordPress に向ける作業 が事前に必要です。 DNS 設定権限、サーバ側のバーチャルホスト追加権限、SSL 発行権限の有無を先にご確認ください。
マニュアルの読み方
このマニュアルは全 15 ページ構成です。「初めての方」「設定を追い込みたい方」「拡張したい開発者」の 3 タイプを意識した順番で並んでいます。 上から順に読めば自然に理解が深まりますが、目的別に必要なページだけ拾い読みすることもできます。
1. 概念編 (まず読むべき 3 ページ)
| # | ページ | 内容 |
|---|---|---|
| 1 | 概要 (このページ) | プラグインの全体像、対象読者、目次。 |
| 2 | 基本概念 | LLMO/GEO とは、なぜ別ドメインで Markdown なのか、Markdown インライン Schema.org 記法、canonical の扱い、対応 AI クローラの一覧、用語集。 |
| 3 | 5 分クイックスタート | 最短で md サブドメイン配信を立ち上げるための手順。 |
2. セットアップ編
| # | ページ | 内容 |
|---|---|---|
| 4 | インストール・初期設定 | プラグイン本体のインストール手順、初期化のしくみ、option key migration、初期 default 値。 |
| 5 | DNS と Bootstrap | DNS レコード設定例 (A / CNAME)、サーバ別の手順、Bootstrap installer の使い方、兄弟構成・サブディレクトリ構成の判定ロジック。 |
3. 設定タブ編 (7 タブを 1 ページずつ解説)
| # | ページ | 内容 |
|---|---|---|
| 6 | 一般タブ | master switch (enabled) / kill switch / md_host の入力、保存時の cache flush 挙動。 |
| 7 | 対象範囲タブ | post_type と route のオン/オフ。CPT 自動列挙の挙動、attachment が default 除外される理由。 |
| 8 | 出力タブ | Schema header / footer の有効化、md ホームの intro Markdown のカスタマイズ。 |
| 9 | Schema.org タブ | post_type / route ごとの type マッピング (Article / WebPage / Product / Service / FAQPage / HowTo 等)。 |
| 10 | キャッシュタブ | Transient / Object Cache / 専用テーブルの 3 backend、TTL 設定、自動 invalidation の条件。 |
| 11 | 言語タブ | inLanguage の自動算出 (BCP 47)、明示指定、多言語サイトでの考え方。 |
| 12 | 診断タブ | Test renderer / アクセスログ / 設定 export / import / 互換性チェック / md ホスト Bootstrap installer。 |
4. 応用編 (開発者・上級者向け)
| # | ページ | 内容 |
|---|---|---|
| 13 | アーキテクチャ | HTTP_HOST 判定 / template_redirect priority -1 / URL 解決フロー / cache key 構造 / 主要関数の責務分担。 |
| 14 | 拡張ポイント | 公開フィルタ (ksmd_md_scheme / ksmd_host / ksmd_home_intro_markdown / ksmd_schema_type 等) のリファレンス。 |
| 15 | トラブルシューティング | 「Markdown が出ない」「503 が返る」「SSL エラー」「Cloudflare で 403」「キャッシュが消えない」等のよくある問題と対処。 |
FAQ プレビュー
よくある最初の疑問に簡潔に答えます。詳細は トラブルシューティング・基本概念 を参照してください。
Q1. md ホストとは何ですか?
メインサイトのドメイン (example.com) とは別のサブドメイン (md.example.com 等) のことです。
このプラグインは「md ホストにアクセスされたときだけ」Markdown を返し、
メインホストのリクエストには一切介入しません。
md ホストの DNS 設定とサーバ側のドキュメントルート設定はユーザ側で行う必要があります (詳細は
DNS と Bootstrap)。
Q2. メインサイトと何が違うのですか?
出力フォーマットが違います。メインは text/html を返し続け、md は text/markdown; charset=utf-8 を返します。
さらに md 側は X-Robots-Tag: noindex, follow ヘッダで Google 等の通常検索からはインデックスされないようになっています。
「人間と従来検索向けの www / AI クローラ向けの md」という役割分担です。
Q3. canonical はどう設定されますか?
md ページは HTTP Link: rel="canonical" ヘッダでメインサイト (www) の URL を canonical として参照します。
さらに Markdown 本文の冒頭にも > **Canonical:** https://example.com/...
の blockquote が入り、Schema.org/Article の url フィールドも seo を指します。
つまり 「authority / freshness / canonicalness は seo 側に帰属、md は parallel version」
であることが HTTP・Markdown 本文・構造化データの 3 層で明示されます。
Q4. 既存の Yoast SEO や RankMath と併用できますか?
できます。本プラグインは md ホストのリクエストだけを処理するため、メイン側で動作する Yoast / RankMath / All in One SEO Pack 等の出力 (canonical / OGP / JSON-LD / sitemap) には一切干渉しません。 両者の責務がドメインで分離されている設計です。
Q5. 動かないときはまず何を見ればよいですか?
診断タブで以下の 3 つを確認してください。
- 互換性チェック: PHP バージョン、必要拡張、WordPress バージョンが要件を満たしているか
- md ホスト Bootstrap: md サブドメイン用
index.phpが正しく配置されているか - Test renderer: 任意の URL を入力して、Markdown 出力をプレビューできるか
上記でも解決しない場合は トラブルシューティング のチェックリストを順に確認してください。
このプラグインの設計原則
ここまでで「何ができるか」 を見ましたが、それを支える設計上の原則も簡潔に押さえておきます。 細部の仕様判断はすべてこの原則から導かれているので、見えてくる挙動が一貫していると感じられるはずです。
原則 1. メインサイト無改変
プラグインのコードは HTTP_HOST が md ホストでなければ即 return します。
既存テーマ・SEO プラグイン・キャッシュプラグインの出力には一切の remove_action や
wp_dequeue_* を行いません。「副作用ゼロ」 が文字通りの意味で実装されています。
原則 2. 既存資産を上回らない
md ページは canonical を seo (www) に向けることで、authority・freshness・canonicalness を seo 側に帰属させます。これにより「md がメインの SEO 順位を奪う」事態が起きません。 md は seo を AI に翻訳して見せるための補助レイヤであり、SEO 主役の地位は seo 側に残ります。
原則 3. Token 効率の最大化
HTML を Markdown に変換する際は、nav / aside / footer /
script / style / form / iframe /
noscript / svg / canvas を完全除外する
ホワイトリスト方式を採用しています。AI コンテキストウィンドウ・API 課金の双方で効率を最大化します。
原則 4. 暴発しない default
master switch (enabled) は default OFF。プラグインを WordPress に有効化しただけでは
md サブドメインに何も配信されません。一方で master switch を ON にした時点でユーザは「動かす意図」 を明示しているため、
post_type / route は default 全 ON で「ON にすれば全部動く」 ようになっています。
この組み合わせが「インストール直後の事故」 を最小化します。
原則 5. 緊急停止と通常運用の二段構え
運用中の問題への対応のため、master switch (通常 ON/OFF) と kill switch (緊急停止 + 全キャッシュフラッシュ) の 2 つを用意しています。 通常停止と緊急停止を分けることで、運用判断が明確になります。
原則 6. 観測専用、遮断しない
アクセスログ機能は「観測」 のためにあり、何も弾きません。bot 遮断は Cloudflare / WAF / DDoS L7 等の上位レイヤの責務です。 このプラグインは LLMO / GEO の趣旨に従って、AI クローラを歓迎する立場を採ります。
原則 7. SSH 不要のセットアップ
md サブドメインで動かすには、サブドメインのドキュメントルートに index.php を 1 つ置く必要がありますが、
この作業を診断タブの Bootstrap installer がワンクリックで自動化しています (atomic write + 3 重マーカー検証 + 24 時間 backup)。
非エンジニアの運用者でもセットアップを完結できます。
原則 8. 拡張可能性
主要な挙動はすべて apply_filters() 経由で外部から差し替え可能になっています。
ksmd_md_scheme, ksmd_host, ksmd_home_intro_markdown,
ksmd_schema_type, ksmd_route_schema_header_lines,
ksmd_route_schema_footer_lines, ksmd_archive_query_args 等。
詳細は 拡張ポイント を参照してください。
次のステップ
このマニュアルの構造に沿って、以下の 2 ルートのどちらかから読み進めることをおすすめします。
じっくり理解派
基本概念 から読む。 LLMO/GEO とは何か、なぜ別ドメインで Markdown なのか、Markdown インライン Schema.org の意味、対応 AI クローラ、用語集を一通り押さえてからセットアップに進む。
とにかく動かしたい派
5 分クイックスタート から読む。 DNS 設定 → プラグイン有効化 → master switch ON → Bootstrap installer → Test renderer の最短手順を一気通貫で実施する。
それぞれの章はクロスリンクで相互参照しているので、必要に応じて行ったり来たりしてください。 また、すべての設定タブの説明にはスクリーンショットと、必要に応じて実コードに対応する説明が含まれています。
💡 おすすめ
まずは 基本概念 を 5 分眺めてから 5 分クイックスタート に進むのが、後でつまずきにくいコースです。 「md ページが Google にインデックスされてしまうのでは?」「メイン側の SEO への副作用は?」 といった懸念は概念編で解消できます。