=== Morick Markdown Layer for AI ===
（このファイルは日本語ユーザー向けの参考訳です。正式な readme は readme.txt（英語）です。
 The canonical readme is readme.txt (English). This is a Japanese courtesy translation.）

Tags: markdown, ai, llms-txt, llm, agents
Requires at least: 5.3
Tested up to: 7.1
Requires PHP: 7.2
Stable tag: 1.4.1
License: GPLv2 or later

既存サイトにAIエージェント向けのMarkdownレイヤーを後付けします。?ai=1 URL、Acceptヘッダ、/llms.txt、alternateリンクに対応。

== 説明 ==

AIアシスタントやAIクローラー（GPTBot、ClaudeBot、Perplexity など）は、ユーザーの質問に答えるためにWebを読みに来ます。しかし人間向けに作られたHTMLページは、ナビゲーション・スクリプト・装飾に本文が埋もれ、AIにとっては重くてノイズだらけです。

Morick Markdown Layer for AI は、テーマもURLも人間の見た目も一切変えずに、既存サイトの上に軽量で機械可読な **Markdownレイヤー** を追加します。

= 機能 =

* **全ページのMarkdown版。** 投稿・固定ページ・アーカイブのURLに `?ai=1` を付けると、HTMLの代わりにクリーンなMarkdown（YAMLフロントマター付き: タイトル・説明・正規URL・日付・カテゴリー）を返します。
* **コンテンツネゴシエーション。** `Accept: text/markdown` ヘッダを送るクライアントには、通常URLのままMarkdownを返します。クエリパラメータ不要。
* **/llms.txt の自動生成。** サイト名・説明・Markdown対応ページの一覧リンクを動的に配信。AIエージェントが1リクエストでサイト全体を発見できます。
* **alternateリンクタグ。** 各HTMLページの head に `<link rel="alternate" type="text/markdown">` を出力。実測上、AIクローラーがMarkdown層を発見する主経路はこのリンクです。
* **管理画面チェックリスト。** 対象ページ全件のステータス（自動変換／手入力md／除外）・本文量を一覧表示。ソート・ステータス絞り込み・タイトル検索・ページ送り対応。
* **手入力Markdown（上書き）。** テンプレート直書きでHTML変換がうまくいかないLPなどは、ページ単位で手書きMarkdownを登録可能。手入力は常に自動変換より優先されます。
* **自動除外。** 変換後の本文が設定したしきい値未満のページは自動的に除外（薄いコンテンツはAIにとって無いより悪い）。
* **依存なし。** HTML→Markdown変換は自前のDOMウォーカーで完結。Composerパッケージなし、外部サービスなし、API呼び出しなし。データは一切外部に送信されません。

= 変換の優先順位 =

Markdownリクエストは次の順で解決されます。

1. 手入力Markdownがある → それを配信（しきい値無視・最優先）。
2. なければ、自動変換の本文がしきい値以上 → 自動変換を配信。
3. どちらでもなければ除外: Markdownは配信せず、alternateリンクも出力しません。

= SEOへの安全性 =

Markdownレスポンスには元のHTMLページを指す `Link: <元URL>; rel="canonical"` HTTPヘッダと `Cache-Control: no-store` が付きます。検索エンジンにはHTML版が正規版として扱われるため、Markdown層が検索結果でHTMLと競合することはありません。

= パフォーマンス =

変換結果はページ単位でtransientにキャッシュされ、投稿保存時に自動失効します。一覧上限などは `mdlai_post_types` / `mdlai_list_limit` フックで調整可能です。

== インストール ==

1. `morick-markdown-layer-ai` フォルダを `/wp-content/plugins/` にアップロード（またはプラグイン画面からインストール）。
2. プラグインを有効化。
3. ダッシュボードの「Markdown Layer」メニューを開く。
4. 対象の投稿タイプ・タクソノミーを選び、本文しきい値を設定して保存。
5. 動作確認: 任意のページに `?ai=1` を付けて開く。`/llms.txt` も開く。

== よくある質問 ==

= 人間の閲覧者に影響はありますか？ =

ありません。通常の訪問者にはいつものHTMLが表示されます。Markdownは、クライアントが明示的に要求した場合（`?ai=1` または `Accept: text/markdown` ヘッダ）にのみ配信されます。

= MarkdownページはSEOに悪影響しませんか？ =

Markdownレスポンスには元HTML URLへのcanonical HTTPヘッダとno-storeキャッシュポリシーが付きます。検索エンジンはHTMLページを正規版として扱います。

= AIクローラーは本当に使いに来ますか？ =

本番サイトでの計測では、リリースから数日以内にAIクローラーがalternateリンク経由でMarkdown層を発見し、Markdown版を直接取得し始めました（HTMLを飛ばしてMarkdownのみ取得するケースも確認）。普及度はベンダーごとに異なり、時間とともに広がります。

= 本文がとても少ないページはどうなりますか？ =

変換後の本文がしきい値（既定20文字）未満のページは除外されます: Markdown版なし・alternateリンクなし。チェックリスト画面から手入力Markdownを書けば配信できます。

= 手入力Markdownはどこに保存されますか？ =

自サイトのデータベースの投稿メタ／タームメタ（`_mdlai_manual`）に保存されます。アンインストール時、設定とキャッシュは削除されますが、手入力Markdownは意図的に保全されます（再インストールしても手書きコンテンツが失われないため）。完全に消したい場合は該当メタキーを手動で削除してください。

= 外部サービスへの通信はありますか？ =

ありません。すべてローカルで完結し、何も送信しません。

== 更新履歴 ==

= 1.4.0 =
* WordPress.org 初公開リリース。
* 国際化: 管理画面の全文字列を翻訳可能に。日本語翻訳を同梱。
* 入力サニタイズを強化（REQUEST_URI、HTTP_ACCEPT、一覧テーブルのパラメータ）。
* llms.txt の案内文を翻訳可能に。

= 1.3.0 =
* 手入力Markdownの保存日をフロントマターの modified に反映。
* 編集画面のテキストエリアに自動変換結果を初期表示（手入力が無い場合）。
* 画像を1枚1行に正規化。

= 1.2.0 =
* チェックリストを WP_List_Table で再構築: ソート・ステータス絞り込み・タイトル検索・ページ送り。

= 1.1.0 =
* Acceptヘッダネゴシエーション、llms.txt生成、alternateリンク出力。

= 1.0.0 =
* 内部初版: ?ai=1 でのMarkdown配信と自動HTML→Markdown変換。
