agentimus について
Agentimusは、AIシステムにコンテンツを見つけてもらい、サイトの状況を把握したいWordPressサイト運営者向けのプラグインです。AI対応情報やレポートに加え、権限確認付きでデータ参照やコンテンツ管理を行うMCPインターフェースを任意で利用できます。
主な機能
- 01AI向けコンテンツと検出エンドポイント
- 02対応状況とトラフィックのレポート
- 03検索・インデックス・リクエストログ情報
- 04任意の監査付きコンテンツ書き込み
- 05構造化データとクローラールール
活用シーン
- 01WordPressサイトをAIに見つけてもらいやすくする
- 02ボットのトラフィックと検索可視性を確認する
- 03エージェントにサイト記事の下書きや更新を任せる
MCP 対応
任意のMCPサーバーが `/wp-json/agentimus/v1/mcp` で動作します。読み取りツールとリソースを公開し、書き込みツールは有効化時のみユーザー権限の範囲で利用でき、呼び出しは監査されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://heera.it/wp-json/agentimus/v1/mcpclaude mcp add --transport http it-heera-agentimus https://heera.it/wp-json/agentimus/v1/mcp{"mcpServers":{"it-heera-agentimus":{"type":"http","url":"https://heera.it/wp-json/agentimus/v1/mcp"}}}Cursor で開く{"servers":{"it-heera-agentimus":{"type":"http","url":"https://heera.it/wp-json/agentimus/v1/mcp"}}}VS Code で開く{"mcpServers":{"it-heera-agentimus":{"type":"http","url":"https://heera.it/wp-json/agentimus/v1/mcp"}}}{"mcpServers":{"it-heera-agentimus":{"serverUrl":"https://heera.it/wp-json/agentimus/v1/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Agentimus
AI エージェント時代に向けた 2 つの機能を提供します。(1) あらゆる WordPress サイトを読みやすく、引用しやすくします。llms.txt、全文版、Markdown の配信、JSON-LD、コンテンツシグナルに対応した robots ルールを提供し、AEO/GEO への対応状況を評価して、次に修正すべき点を確認できます。(2) すでにお使いの AI ツールから MCP 経由でサイトを操作できます。プラグインに Model Context Protocol サーバーが組み込まれているため、Claude Code、Claude Desktop、Cursor、Codex から、対応状況、トラフィック、ボットのデータを読み取れます。さらに 2 つのオプトイン設定を有効にすると、投稿や固定ページの下書き、編集、公開も可能です。書き込み操作はそれぞれ、ログイン中のユーザーとして実行され、権限が確認され、監査ログに記録されます。軽量で、SEO 関連の不要な機能やフレームワークはありません。
WordPress.org で公開中: https://wordpress.org/plugins/agentimus/
📖 ドキュメント: https://heera.github.io/agentimus/ — ユーザーマニュアルと開発者向けリファレンスをすべて掲載しています。
インストール
- ダッシュボードから — プラグイン → 新規追加 → **「Agentimus」**を検索 → インストール → 有効化。
- WordPress.org から — https://wordpress.org/plugins/agentimus/。
- ソースから — このリポジトリをクローンし、
npm install && npm run buildを実行します(assets/admin/が生成されます)。その後、フォルダーをwp-content/plugins/にコピーするか、シンボリックリンクを作成します。
できること
| シグナル | エンドポイント/出力 |
|---|---|
| リンクインデックス | /llms.txt |
| 全文版 | /llms-full.txt |
| Markdown 配信 | /<slug>.md。ページ URL で Accept: text/markdown を指定するとオプトインできます(agentimus_negotiate_markdown フィルター。デフォルトでは無効です。CDN は URL ごとに 1 つの応答をキャッシュします) |
| 構造化データ | JSON-LD の WebSite + Person/Organization + BlogPosting + BreadcrumbList(SEO プラグインに委ねます) |
| AI 向けトピック | ページごとのトピック → JSON-LD の keywords + about の DefinedTerm エンティティ(agentimus_topic_links フィルター経由で Wikidata の sameAs を任意で設定可能)+ /<slug>.md 内の Topics: 行。静的(エディターで設定)またはタグとカテゴリーから生成 |
| AI 向け説明 | ページごとの 1 行の要約 → JSON-LD の description + /<slug>.md のリード文 + 権威ある <meta name="description">(テーマのものを置き換え、SEO プラグインに委ねます)。エディターで設定し、未設定の場合は抜粋、またはコンテンツの約 30 語の要約を使用します。設定のサブトグルで JSON-LD と .md のみを対象にできます |
| ライティングアシスタント(オプトイン) | Agentimus のすべての画面にある羽ペンボタンを押すとドロワーが開きます。概要 → 編集可能なアウトライン → 記事のすべてのセクションを並列で執筆(各パートにつき /assistant/compose-section を呼び出し、さらに整形用の呼び出しを 1 回実行します。長い投稿でも単一の応答による制限を受けず、失敗したパートだけを再試行し、執筆途中で再読み込みしても続きから再開できます)→ 全体プレビュー(タイトル、実際のブロック、AI 向け説明、トピック、推奨カテゴリー/タグ、下書き/レビュー待ちの選択)→ 下書きを作成すると、エディターが直接開きます。下書きは読みやすさパネルが評価する基準に沿って執筆されます。つまり、持ち上げ可能な冒頭の要約、引用しやすい段落の長さ、平易な文、出典付きです(readability_rules()。段落の上限は PageCheck 独自のしきい値から算出されます)。作成のみです。作成した投稿はエディターで開き、そこで修正します(ドロワーの旧編集機能と安全ブロックのゲートは廃止されました。ドロワーで扱えるのは自ら書き込んだブロックだけだったため、このゲートは実在の投稿を拒否するという、本来の問題に対する誤った対応でした)。形状はタイプごとに異なります。Assistant::shape_for() は階層型のタイプを PAGE として作成し、セクションや画像枠、タクソノミーを捏造せず、所有者しか知らない事実には [placeholder] を記します。MCP による作成でも同じプロンプトを使用します。画像は代替テキストを入力したプレースホルダーブロックとして追加されます。すべての画像ブロックには代替テキストから画像を生成、サイドバーには**アイキャッチ画像(AI)**パネルがあり、AI に依頼は 3 つの範囲で利用できます。単一ブロック、複数ブロックの選択(複数選択中は InspectorControls が描画されないため BlockSettingsMenuControls を使用)、または文書プランナーです。文書プランナーはアウトラインに沿った編集リストを返し、読み直したアンカーマップを使って 1 つずつ適用します(replaceBlocks は新しい clientIds を生成するため、古い ID は警告なしに何も起こしません)。サーバー側では MCP と同じ監査済みの書き込み経路(Assistant.php → ContentWriter)を使い、enable_agent_writes とユーザー自身の権限で制御します。すべての生成は Assist::generate() を経由します(レート制限あり、コンテンツガイドラインを考慮)。ステータスは draft|pending に制限され、アシスタントが公開することは決してありません |
| AI で執筆(オプトイン) | エディターの **「AI で下書き」は AI 向け説明を作成し、「AI で提案」はページのコンテンツを基にトピックを入力します。「AI で修正」**は AI による読みやすさの各警告に対する修正案を作成します(冒頭の要約はワンクリックで挿入でき、その他はコピーのみ)。WordPress 7.0 AI Client を経由します。独自のプロバイダーキーを使用し、プラグインがキーを扱うことはありません。Settings → Connectors でプロバイダーを設定するまで表示されません |
| AI アビリティ | wp_register_ability 経由の 2 つのティアがあり、各アビリティは元の画面と同様に権限で保護されています。読み取り(常に登録): agentimus/read-readiness、read-findings(Findings 画面独自の優先順位付きエントリーポイント。最大 12 行)、read-audience(人とマシンは別々に数え、決して合算しません)、read-ai-visibility、read-ai-traffic、read-request-log、read-edge-traffic、read-search-visibility、read-search-performance、read-search-opportunities、read-google-index(任意の url は保存済みチェックから回答し、割り当て量を消費しません)、identify-bot、read-content-issues(対応が必要なページ、各ページに付けられたフラグ、その判定からの経過期間を返します。項目の一覧は read-findings が要約します)、read-terms(このサイトですでに使用されているカテゴリーとタグを、書き込みツールが期待する正確な名前で返します)、check-page、preview-schema/-markdown、scan-exposed-files、suggest-internal-links、search-media(タイトル + _wp_attachment_image_alt。upload_files の権限が必要です)。書き込み(enable_agent_writes が有効な場合のみ登録。デフォルトでは無効で、MCP サーバーのスイッチも必要です。無効にすると、どの画面にもアビリティは存在しません): create-content/update-content(まず下書きを作成します。カテゴリーとタグは名前で指定し、wp-admin と同じ作成ルールに従います。アイキャッチ画像は添付ファイル ID またはサイドロードした URL で指定でき、AI 向け説明/トピックも同じ呼び出しで設定できます)、write-description、write-topics、write-search-fields(フォーカスキーワードと SEO タイトル。ページが検索結果にどう表示されるかを決める 2 つのフィールドで、エージェントが操作できなかった最後の 2 項目でもあります)、apply-fix(準備状況チェック独自の修正を実行します。文書化された機能を有効にすることしかできない、選択肢を限定した語彙から指定します)。status=publish には 3 つ目のスイッチ(agent_writes_publish)と、ユーザー自身の公開権限が必要です |
| MCP サーバー(オプトイン) | /wp-json/agentimus/v1/mcp — WordPress MCP Adapter は enable_mcp_server スイッチの背後にプラグイン内蔵で同梱されています(Composer によるベンダー化、Jetpack-autoloader による調停。Settings → Discovery で設定。デフォルトでは無効。WP 6.9 以降)。外部 MCP クライアント(Claude Code、Claude Desktop、Codex)はアプリケーションパスワードで認証し、上記のアビリティだけを取得します。読み取り専用ツールが 20 個、書き込みスイッチが有効な間のみ書き込みツールが 6 個、さらに meta.mcp.uri で宣言される 4 つのリソース(llms.txt、llms-full.txt、discovery.json、エージェントカード)を利用できます。エンドポイントのスイッチがオフになっているリソースは登録されません(サーバーの自己記述に、実行中のティアが示されます)。アダプターの汎用的な「任意のアビリティを実行する」デフォルトサーバーは引き続き抑止され、すべての呼び出しは Agent Access に記録されます。スイッチをオフにすると、接続中のクライアントは強制切断されます。スイッチがオフの場合、ライブラリは読み込まれず、エンドポイントも存在しません |
| XML サイトマップ | /agentimus-sitemap.xml — オプトインのフォールバック。WordPress コアまたは SEO プラグインがすでにサイトマップを提供していない場合に限り生成されます(サイトマップインデックス + ページ分割されたサブサイトマップ) |
| クローラーポリシー | robots.txt のコンテンツシグナル + 学習用クローラーのブロックリスト |
| ディスカバリーレイヤー | /.well-known/discovery.json(+ agent-card.json、mcp.json) |
| 変更フィード | /agentimus-changes.json?since= — 最近追加、更新、削除されたコンテンツを JSON で返すため、エージェントは差分だけを取得できます(discovery.json で通知。デフォルトで有効) |
| クロールの強制適用(オプトイン) | 生成されたエンドポイントで、拒否リストにあるユーザーエージェント、スキャナーを偽装したユーザーエージェント、または偽装と証明されたユーザーエージェントをハードブロック(403)します。ACME に対応し、デフォルトでは無効です。任意でボットの身元確認も行えます(正引き確認付き逆引き DNS + 運営者が公開している IP 範囲を、所有者が編集できる Verified-bots レジストリ経由で照合)。これにより、ボット名を偽装して許可リストに加わることはできず、偽物と証明されたボットは拒否されます |
In the admin
- Findings — サイト全体で未対応の項目をすべて集約する入口です。ナビゲーションに専用の件数が表示されます。すでにクリックを獲得しているのにクリックを逃しているページと、セットアップチェックで検出された項目を、損失の大きさ順に並べた単一のランキングリストです。各行には修正画面に移動するボタンが付いています。件数に含まれるのは対応可能な作業だけです。後続のレポートを待っているだけの項目には、代わりに目立たないドットが表示されます。その下には項目ごとのコンテンツ作業リストがあります。公開済みの各項目を1行で表示し、何について見つかったのか、それに答えているか、ほかに何が必要かを示します。
- ライト/ダークテーマ — 切り替え先のモードを表示するトグルです。ダークテーマは単なる反転ではなく、手作業で調整したパレットで、WordPress 管理画面の各配色に合わせた独自の色調になっています(Default はニュートラルなキー、Coffee はブラウンとゴールドのキーを使用します)。手動で選んだモードは、オペレーティングシステムの設定が次に切り替わるまで保持され、その後はデバイスの設定に従います。確定したモードは
<html data-ar-theme>に反映され、ブラウザーごとに記憶されます。Settings には保存されません。 - AEO/GEO スコア — ダッシュボードに、5段階(Findable/Readable/Trusted/Optimized/Cited)で示す0~100のスコアを1つ表示し、次に最も役立つステップを1つ提示します。各段階から、対応する画面に直接移動できます。Cited はオプトインです(Citations を参照)。無効にすると、その重みはほかの段階に再配分されます。99.6のスコアは99と表示されます。100は実力で達成するものであり、丸めて得られるものではありません。
- 問題ごとの作業 — チェック項目を1つ選ぶと、該当するすべてのページが Your Content に表示され、6件だけのサンプルではなく、ランキングとページ分けもされます。フィルター済みリストを開いた目的の修正を行っても、その行は消えずに完了済みとして表示されるため、修正が反映されたことを確認できます。
- WP-Cron に依存しない読み込み — コンテンツのスキャンはスケジュールされた作業ですが、多くのホストでは WordPress のスケジュールジョブが実行されません(キャッシュ済みのページでは PHP が実行されないため、ジョブを開始するリクエストが届きません)。Agentimus は自身のジョブの期限超過を検知すると、現在開いている管理画面から実行し、WordPress コア自身のロックに加わることで、ジョブが二重に実行されるのを防ぎます。cron が正常に動作しているサイトでは、余計な読み込みは発生しません。
- コンテンツを最適化 — 記事を対象とした、ページごとの引用可能性チェック(薄いコンテンツ、引用できる具体的な情報、引用可能な文章、新しさ)と、改善が必要なページの作業リスト、エディター内の対応する読み取り専用パネルを提供します。コマース商品、コマースプラグインが指定するページ(カート/チェックアウト/アカウント。WooCommerce のオプションと FluentCart の設定の両方を読み取ります)、および作成者が書いた文章のないショートコード/ブロックのコンテナーページは対象外です。引用対象にする意図のないページは対象外に設定してください(公開状態は維持されますが、スコアの対象から外れます)。対象外に設定したページは台帳に残るため、単に表示されなくなるのではなく、一覧表示され件数にも含まれます。カテゴリーをエバーグリーンに指定すると、時代を問わないコンテンツは新しさのチェック対象外になります。
- コンテンツタイプと、そのタイプに対する拒否権(Settings) — プラグインによって有効になったタイプは独自のタイプと別にグループ化され、追加元のプラグインが有効化を求めていても、無効にできます。ライティングアシスタントも同じルールに従います。ページには記事ではないため、作成されていないセクション、画像スロット、タグは追加されません。
- 画面に戻ったときにデータを再読み込み — データ画面を離れて戻ると、以前はプラグインを初めて開いた時点の数値が表示されていました。各画面で戻ったときにデータを更新するようになり、画面には常に最新の情報が表示されます。
- Discovery Hub(Discovery タブ) — このサイトがマシン向けに公開するすべての情報を一覧できます。サイトを説明するプロバイダー、宣言された機能、公開 API、well-known ドキュメント、MCP とツールの情報が含まれます。ツールセクションは3つのパネルで別々の情報を表示します。サインイン済みエージェントが実行できるもの(プロバイダーごとにまとめられ、各グループを開くとツール名が表示されます)、それらのエージェントが接続するアドレス、そして
/.well-known/mcp.jsonで匿名のエージェントに提供される情報です。機能リストは固定の高さの範囲内でスクロールします。リストの長さはサイト側で決まるためです(公開 REST の投稿タイプとタクソノミーごとに1つ)。登録に問題がある場合は、平易な言葉で修正方法を表示します。 - Readiness レポート — 合格/警告/失敗のチェック項目を、平易な言葉による提案と修正画面への直接リンク付きで表示します(「robots.txt でサイトマップが通知されているか」のチェックも含みます)。
- Agent preview — Readiness から開くモーダルで、サイトまたは任意のページ/投稿について、エージェントが受け取る内容と完全に同じ JSON-LD と Markdown を表示します。サイト/ページ/投稿別にまとめた選択メニュー、コピー機能、バリデーターへのリンクがあります。スキーマが無効な場合や SEO プラグインが管理している場合も、実際に公開されるはずの内容を表示します。パスワード保護された投稿は表示されず、未公開の下書きは、公開後に出力される内容のプレビューとして表示されます。投稿エディター内にも読み取り専用の同じ表示があります。
- Visibility → Search — ユーザーが検索した内容、サイトが表示された回数、その結果がクリックされた回数、それらを獲得したページを、検索エンジン自体が報告した数値で表示します。Google と Bing の両方を接続すると切り替えスイッチが表示されます。両者が対象とする検索ユーザーは異なるため、数値を合算することはありません。そのすぐ下の Search Opportunities では、同じ数値を作業リストに変換します。1ページ目に届きそうなページと、1ページ目にあるもののスクロールされて通り過ぎられているページを、それぞれ修正に必要な正確なフィールドへリンクして表示します。また、複数のページが検索を分け合っているケースも示します。クリックが分散するため、どのページも単独の場合より順位が下がります。クリックを獲得しているページを明示し、それ以外の各ページについて判断を促します。(1.36 までは Readiness の最下部にありましたが、現在は Readiness からのリンクで案内します。)
- Visibility → In the index — 検索エンジンのインデックスにページが実際に登録されているかを、Bing と Google の両方について1つの画面で確認できます。現在、ChatGPT search と Copilot が参照するのは Bing のインデックスです。Bing では、サイトの登録範囲、クローラーが問題なくアクセスできているか、週ごとの比較傾向を含む日別の人間のトラフィック推移、さらに Bing 独自の API が回答するページごとのリアルタイムな質問を確認できます。Google 側ではサイト全体を順番に巡回して毎日再チェックします。問題のないページは件数として表示され、確認が必要なページは Google 独自の言葉で行に表示され、Search Console への直接リンクが付きます。任意の URL をその場で再検査することもできます。
- データソース(Settings → Data sources) — Agentimus が読み取る外部サービスです。すべて任意で読み取り専用となっており、キーは自身のサーバーに保存され、サードパーティのプロキシは使いません。Cloudflare では、サーバーに届く前にエッジが応答またはブロックした内容を確認でき、追加のトークン権限を任意で付与すると、公開時にキャッシュをクリアできます。Google Search Console では検索状況とインデックス登録範囲を確認でき、訪問者数を取得したい場合は、同じキーで Analytics も利用できます。Bing Webmaster Tools は、IndexNow を通じて公開した変更を通知することもできます。数値は自身のデータベースに保存されるため、各サービス固有のレポート期間を過ぎても履歴を保持できます。
- Citations(Visibility → Citations。オプトイン、独自のキーを使用。スコアに Cited 段階が追加され、90日を過ぎた読み取り結果は期限切れとなるため、古い結果がスコアに含まれることはありません) — 選択したブランド、製品、人物が ChatGPT、Perplexity、Gemini、Claude でどのように扱われているかを追跡します。それぞれについて、ユーザーが入力する質問を検索し、時間の経過に伴い言及されているか、リンクされているか、競合と比べてどの順位にあるかを報告します。項目にカテゴリー(「WordPress SEO プラグイン」)を指定すると、実際にユーザーが入力する質問を Agentimus が提案します。または、WordPress で AI プロバイダーが設定されている場合、その AI にブランド名を含まない質問を幅広く提案させることもできます(
POST /visibility/suggestと/visibility/suggest-ai)。各項目には独自のウェブサイト、カテゴリー、競合、質問、スコアボードがあります。個別の項目またはスケジュール全体を一時停止でき、画面上のすべての設定は自動保存されます。結果はローカルに保存されます。この機能だけが外部へのリクエストを行い、オプトイン後に、ユーザーが提供する API キー(保存時に暗号化)を使用します。デフォルトでは無効です。WordPress の共有 AI コネクターを使い回さず、独自のキーを保持します。Visibility チェックでは検索エンジンが引用したソースを評価しますが、共有クライアントはその情報を破棄するためです。 - エージェントのアクティビティログ — どの AI エージェントやクローラーがエンドポイントにアクセスしたかを示すローカル限定のダッシュボードです(デフォルトでは IP を記録しません。任意の設定で、フラグが付いたクローラーだけ IP を保存できます)。繰り返しのアクセスは件数とともにまとめられ、新しい順に表示されます。任意の日の棒グラフをクリックすると、その日の完全なレポート(クライアント、エンドポイント、すべてのリクエスト)を確認できます。ログイン中のユーザー自身のアクセスは記録されません。また、Readiness 画面自体による Verify-live/exposure-scan の取得も記録されません。これらのリクエストには、意図的に匿名で行われるため、有効期間の短い
X-Agentimus-Selfcheckトークンが付与されています。 - Request Log(More → Request Log) — 上記のダッシュボードの基になる生ログです。リクエストごとに1行で表示し、キーセット方式でページ分けします。クライアント、エンドポイント、ネットワーク、ユーザーエージェント、日付範囲で絞り込めます。フィルターは AND 条件で適用されるため、概要の集計では構造上表示できない、エージェント × エンドポイントのクロス集計を確認できます。
- Agent Access(More → Agent Access) — ログのもう一方の側面です。Agentimus が作成するマシン向けインターフェースに、誰が認証してアクセスし、操作したかを記録します。アプリケーションパスワードの作成/初回使用/名前変更/取り消し、WordPress の Abilities の実行、拒否されたリクエスト、存在しない Abilities を探るリクエストを記録します。各行には誰が操作したかが表示されます。ユーザーと、該当するアプリケーションパスワードの名前をライブで解決します(名前が変更されたキーには現在のラベルが表示され、取り消されたキーには「取り消し以降」と表示されます)。これはガードではなく記録のための機能で、操作をブロックすることはありません。IP は記録しないため、特定されるのは人物ではなく認証情報です。
rest_request_after_callbacksとアプリケーションパスワードのフックを利用します。認証情報の記録には Abilities API は不要で、Abilities の記録では API の有無を自動検出します。 - AI からのトラフィック — どの AI アシスタントが訪問者をサイトに送ったかを、ファーストパーティの方法で非公開に記録します(アシスタント → ランディングページの日別集計。IP や訪問者ごとのデータは記録しません)。ダッシュボードには概要が表示され、任意の日の棒グラフをクリックすると、その日のアシスタント → ランディングページのレポートを確認できます。More → Visitors では、同じ日別の詳細表示機能を備えた完全なレポートを確認できます。各カードには、これはエージェントではなく人の数であると明記されています。リクエストログはマシン側、Visitors は人間側の記録であり、両者を合算することはありません。オプトインの CDN mode を使うと、ブラウザーで数を計測でき、フルページキャッシュを使っていても数値を保持できます。認識対象は有限のリストであるため、オプトインの見逃した AI ソースを検出する診断機能では、参照元ホストと
utm_sourceタグのうち、帰属先を判定できなかったものを記録します。痕跡を残さず見えなくなってしまう検出漏れを確認する唯一の方法です。 - 訪問ログの保持期間(Settings → Visit log) — 保持期間、夜間の自動削除、ハード上限の行数を設定できます。保持期間より行数の上限が優先されます。「90日間保持」はデータの経過日数の上限であり、すべての行が90日間残る保証ではありません。自動削除を無効にしても「永久に保存」されるわけではありません。上限に達すると、古いものから順に削除されます。
- AI エンドポイントをキャッシュ対象外にする(Settings → Caching & CDN、オプトイン) — サイトの前段にあるキャッシュや CDN が AI エンドポイント(
llms.txt、.well-knownドキュメント、変更フィード)の保存済みコピーを配信すると、エージェントからのアクセスは WordPress に届きません。そのためログの件数が実際より少なくなり、変更フィードも古い状態になることがあります。この設定を有効にすると、各エンドポイントはCache-Control: no-storeを送信します。この指示に従うキャッシュでは、アクセスのたびにリクエストが WordPress に届きます。前段にキャッシュがあることを検知すると、Readiness レポートからこの設定にリンクします。 - コンテンツ変更時に AI ファイルを更新(Settings → Caching & CDN、デフォルトで有効) — コンテンツが変更されるたびに、検出されたページキャッシュ(WP Rocket、Nginx Helper、W3 Total Cache、LiteSpeed、WP Super Cache、Cache Enabler、または
agentimus_purge_urlリスナー)に AI ファイル(llms.txt、llms-full.txt、robots.txt、変更フィード、.well-knownドキュメント)を破棄するよう依頼します。さらに、編集した投稿に対応する.mdファイルも破棄します。通常、キャッシュプラグインはこのファイルの更新を把握できません。機能を検出して動作するため、キャッシュがない場合は何も行いません。 - 確認待ちのアクティビティ — ナビゲーションバーの確認キューに、新規クライアント、異常に大量のアクセスを行うクライアント、なりすまし/スキャナーのクライアント、または偽装クライアントを表示します。偽装クライアントとは、編集可能な Verified-bots レジストリ(Googlebot、GPTBot、PerplexityBot、…)に登録されたボットだと名乗りながら、運営者が公開する検証方法(逆引き DNS または公開 IP 範囲)に明確に合致しないクライアントです。各項目には平易な説明の「このボットを確認」パネルがあり、ワンクリックでブロック/許可/無視できます。オプトインの Block scanners & scrapers による制御機能と連携します。オプションの Store IP addresses for flagged clients 設定を有効にすると、ブロック対象の正確なアドレスが表示されます。ブロック、信頼、無視の各状態で保存された判断は、後から Settings → AI access → Manage clients で管理できます。各行には識別情報と判断日が表示され、ワンクリックで取り消せます。
- Exposure — 匿名のクローラーが読み取れる情報を制限するオプトイン設定です(ユーザー名の列挙、投稿者アーカイブ、WP バージョン、
<head>内のリンク、XML-RPC)。ワンクリックの公開ファイルスキャンでは、リスクのあるファイル(バックアップ、.env、debug.log、キー)が公開ダウンロード可能かを確認し、ブロック方法を案内します。ファイアウォールではなく、ガイダンスを提供する機能です。 - 工場出荷時設定にリセット — ワンクリックですべての設定を推奨デフォルト値に戻します。変更内容を正確に事前確認できます。
アーキテクチャ
- PHP(
inc/、名前空間Agentimus\、PSR-4 でオートロード)— フレームワークを使わない標準的な実装です。Pluginが処理を統括し、Settingsが唯一のオプションストア、Cacheがトランジェントを管理します。Endpoints/Markdown/Schemaが出力を生成し、Readinessがチェックを実行し、Restが管理画面を支え、Adminが UI をマウントします。
- 管理 UI — Vue 3(Options API)を使用し、Vite で
assets/admin/にビルドします。 標準の WP nonce を使って REST 名前空間agentimus/v1と通信します。
あらゆるサイト/コンテンツタイプへの拡張
無料のコア機能は post と page、および有効化した任意の公開投稿タイプ(コンテンツタイプカード、または agentimus_post_types フィルター)をカバーするため、商品や CPT は llms.txt、全文版、Markdown、スキーマに自動的に反映されます。
より詳細な対応(WooCommerce の Product マッパー、ページビルダーのコンテンツ)は、次の接続点を利用するアドオンで提供します。
agentimus_post_types— エージェントに表示する投稿タイプを追加/削除しますagentimus_schema_for_post— オファーを含むProductなど、完全なノードを返しますagentimus_markdown_source— ページビルダーのコンテンツ用にレンダリング済み HTML を提供します
開発者向け — プラグインを検出可能にする
Agentimus は /.well-known/discovery.json(および agent-card.json と mcp.json)に単一の集約型ディスカバリーレイヤーを公開します。どのプラグインも依存関係なしで、1 つのアクションから自身を登録できます。Agentimus がインストールされていない場合、フックは実行されないため、コードは何も行いません。
add_action( 'wpdiscovery_register', function ( $registry ) {
$registry->register( array(
'id' => 'acme-bookings',
'title' => 'Acme Bookings',
'type' => 'scheduling', // controlled vocab + x-vendor-name
'capabilities' => array( 'scheduling.booking.create' ), // dot-notation INTENT
'endpoints' => array( // WHERE (concrete paths live here)
array( 'url' => '/wp-json/acme/v1', 'type' => 'rest', 'auth' => 'apikey' ),
),
'auth' => array( 'type' => 'apikey', 'docs' => 'https://acme.dev/api' ),
'agent' => array( 'name' => 'Acme Agent', 'skills' => array(
array( 'id' => 'create_booking', 'description' => 'Book an appointment.' ),
) ),
) );
} );
グローバルファサードも利用できます(呼び出しは直接行われるため、ガードしてください)。
if ( class_exists( 'Agentimus_Discovery' ) ) {
Agentimus_Discovery::register( [...] );
}
リソースフィールド: id(必須、スラッグ)、title(必須)、type(必須 — content、
commerce、scheduling、courses、forms、crm、auth、search、media、
messaging、analytics、payments、directory、agent、または x-vendor-name。
agentimus_resource_types フィルターで独自の種類を追加できます。宣言されていない語は x- を付けて公開され、破棄されません)、
description、version、capabilities[]、endpoints[]({url, type, methods[], auth, description})、schemas[]、auth({type, oidc, scopes[], docs})、
agent({name, description, skills[{id,description}], endpoint, auth})、
abilities[]、tools[](MCP 形式)、docs。provider は自動入力されるため、設定しないでください。
機能は意図を表します。具体的な /wp-json/... のパスは endpoints/tools にのみ記載します。無効なエントリーは拒否され、その理由とともに Discovery Hub → Validation に表示されます。
$registry->add_well_known( [...] ) は /.well-known/<name> ドキュメント(コールバック | リダイレクト | ファイル)を提供します。
完全なコピー&ペースト用リファレンスは examples/integrate-your-plugin.php を、標準については WP_Discovery Protocol の仕様を参照してください。
フックとフィルター
すべてのフックは任意で、次の 3 つの段階のいずれかに属します。表には各フックのタイプ(アクションまたはフィルター)とコールバックシグネチャ(パラメーター → 戻り値)が記載されています。コピー&ペーストできる例は examples/all-hooks-reference.php にあります。シグネチャにある Registry、Settings、Plugin は、それぞれ Agentimus\Discovery\Registry、Agentimus\Settings、Agentimus\Plugin クラスです。
安定
WP_Discovery 仕様 1.0 で公開され、変更されない API です。安心して利用できます。
| フック | タイプ | シグネチャ | 用途 |
|---|---|---|---|
wpdiscovery_register | action | ( Registry $registry ) | リソースを登録し、独自の /.well-known ドキュメントを提供します。完全なスキーマは integrate-your-plugin.php を参照してください。 |
agentimus_entity_types | filter | ( string[] $types ): string[] | Settings → Identity に選択可能な schema.org エンティティタイプを追加します。 |
agentimus_cache_flushed | action | () | Agentimus がドキュメントを再生成した後に実行されます。CDN/ページキャッシュを消去してください。 |
agentimus_booted | action | ( Plugin $plugin ) | プラグインの起動後に実行されます。コンパニオンまたは Pro アドオンがここで機能を登録します。 |
// Add selectable schema.org entity types to Settings → Identity.
add_filter( 'agentimus_entity_types', function ( $types ) {
$types[] = 'Restaurant';
return $types;
} );
拡張
出力を調整するためにサポートされているフィルターです。シグネチャはリリース間で変更される場合があります。
| フック | 種類 | シグネチャ | 目的 |
|---|---|---|---|
agentimus_envelope | フィルター | ( array $envelope, Registry $registry ): array | 組み立て済みの discovery.json 全体です。x-<vendor> 拡張キーを追加します。 |
agentimus_documents | フィルター | ( array $docs, Registry $registry ): array | Agentimus が自動検出できない標準ドキュメントを documents マップに追加します。 |
agentimus_schema_url | フィルター | ( string $url ): string | ディスカバリードキュメントの $schema URL です。省略するには '' を返します。 |
agentimus_well_known_routed | フィルター | ( string[] $names ): string[] | 提供するフラットな /.well-known/<name> をルーティングし、すべてのホストで解決されるようにします。 |
agentimus_well_known_nested | フィルター | ( string[] $names ): string[] | 完全一致するネストされた /.well-known/<dir>/<file> をルーティングします。 |
agentimus_well_known_specs | フィルター | ( array $specs ): array | /.well-known 名を、それを規定する標準でラベル付けします(name => label)。 |
agentimus_signed_surfaces | フィルター | ( string[] $surfaces ): string[] | コンパニオン署名ツールが署名するディスカバリードキュメントを指定します。 |
agentimus_mcp | フィルター | ( array $mcp, array $resources ): array | /.well-known/mcp.json で公開する MCP ディスクリプターです。 |
agentimus_mcp_card_server | フィルター | ( string $id, array $servers ): string | MCP サーバーカードが説明するサーバーを固定します('' = 自動)。 |
agentimus_mcp_server_abilities | フィルター | ( string[] $names ): string[] | Agentimus が独自の MCP サーバーを介して外部エージェントに公開するアビリティです(デフォルト:読み取り専用の 9 種類)。サイト外に公開する内容を絞るには、リストを短くします。 |
agentimus_bootstrap_mcp_adapter | フィルター | ( bool $bootstrap ): bool | 同梱の MCP Adapter ライブラリの読み込みを全面的に拒否します(例:ホスト側でアダプターを管理する場合)。所有者の enable_mcp_server 設定とは独立しています。 |
agentimus_agent_skills | フィルター | ( array $skills, array $resources ): array | Agent Skills インデックスのエントリーです。 |
agentimus_post_types | フィルター | ( string[] $types, string[] $available ): string[] | エージェントに表示する投稿タイプを指定します(各タイプに llms.txt のセクションが作成されます)。 |
agentimus_post_type_source | フィルター | ( string $source, string $post_type ): string | 投稿タイプの llms.txt セクション(およびエージェントプレビューの選択欄)の提供元として、プラグインを指定します。 |
agentimus_changes_max | フィルター | ( int $max ): int | 変更フィードのウィンドウサイズ、つまり保持できる最新アイテム数です(デフォルト 200、最大 2000)。 |
agentimus_tombstone_retain_days | フィルター | ( int $days ): int | 削除項目が変更フィードから整理されるまでの日数です(デフォルト 90)。 |
agentimus_page_checks | フィルター | ( array $checks, array $stats, WP_Post $post ): array | エディターに表示されるページごとの「読みやすさ」チェックを追加、調整、または削除します。 |
agentimus_ai_assist_enabled | フィルター | ( bool $enabled ): bool | エディターで「AI で下書き」/「AI で修正」のアシストを提供するかどうかです(デフォルト:WordPress でテキスト対応 AI プロバイダーが設定されている場合に有効)。 |
agentimus_markdown_source | フィルター | ( ?string $html, WP_Post $post ): ?string | ページビルダーのコンテンツ用にレンダリング済み HTML を提供します(null = 通常どおりレンダリング)。 |
agentimus_topic_exclude | フィルター | ( string[] $slugs ): string[] | llms.txt のトピック一覧およびページごとの派生トピックから除外するトピック/カテゴリーのスラッグです。 |
agentimus_derive_taxonomies | フィルター | ( string[] $taxonomies, WP_Post $post ): string[] | AI 向けの投稿トピックを自動入力するタクソノミーを指定します(デフォルトは category、post_tag)。ベンダーは product_cat などを追加できます。タームには派生の切り替え設定、除外リスト、上限が適用されます。 |
agentimus_post_topics | フィルター | ( string[] $topics, WP_Post $post ): string[] | AI 向け投稿トピックのリストを追加または調整します(→ JSON-LD keywords と Markdown)。後で再正規化されます(重複排除、上限適用)。 |
agentimus_topic_links | フィルター | ( string[] $urls, string $topic, WP_Post $post ): string[] | トピックの参照 URL(Wikidata、Wikipedia など)→ schema.org about sameAs。コアは参照先を提供しません(自動検索なし)。マッピングはご自身で行ってください。ドロップインの例:topic-links-wikidata.php。 |
agentimus_topic_suggestions | フィルター | ( string[] $pool ): string[] | エディターの AI 向けトピック欄で使うオートコンプリート候補のリストです(デフォルト:使用済みトピック+タグ/カテゴリー+専門分野)。 |
agentimus_topic_meaningful | フィルター | ( bool $meaningful, string $name, ?object $term ): bool | 自動派生したタクソノミータームをトピックにするかどうかです。デフォルトでは純粋に数値のみの名前(「67」、無関係な ID)を除外します。実際に主題を表す数値(例:「1984」)を残すには true を返します。 |
agentimus_llms_full_item_max_bytes | フィルター | ( int $bytes ): int | llms-full.txt 版のアイテムごとのバイト数上限です。 |
agentimus_llms_full_avg_item_bytes | フィルター | ( int $bytes ): int | 管理画面で llms-full.txt のサイズを推定する際に使う、アイテムの平均サイズです。 |
agentimus_yield_surface | フィルター | ( bool $yield, string $surface ): bool | サーフェス(llms_txt、robots など)を独自の生成元に委ねます。 |
agentimus_defer_schema | フィルター | ( bool $active ): bool | フロントエンドの JSON-LD を出力するかどうかです(SEO プラグインがある場合は出力を停止します)。 |
agentimus_schema_for_post | フィルター | ( array $node, WP_Post $post ): array | 投稿の JSON-LD ノードを置き換えます(例:Product)。 |
agentimus_post_description | フィルター | ( string $desc, WP_Post $post ): string | 投稿の AI 向け説明の最終的な値です(エディターの値 → 抜粋/要約へのフォールバック)。JSON-LD の description、.md のリード文、メタタグに反映され、その後に再クリーニングされます(タグを除去し、上限を適用)。 |
agentimus_emit_meta_description | フィルター | ( bool $emit, WP_Post $post ): bool | このリクエストで Agentimus がページの <meta name="description"> を管理するかどうかです。false を返すと、<head> の管理をテーマに任せます。(専用の SEO プラグインがある場合は、すでに出力を停止します。) |
agentimus_schema_graph | フィルター | ( array $graph ): array | JSON-LD の @graph 全体を最後の段階で編集します。 |
agentimus_faq_pairs | フィルター | ( array $pairs, WP_Post $post ): array | FAQPage の質問と回答のペアを追加します。 |
agentimus_sitemap | フィルター | ( array $sitemap ): array | Agentimus が自動検出できないサイトマップを宣言します。 |
agentimus_sitemap_max_urls | フィルター | ( int $max ): int | 生成されるサイトマップの URL 数に上限を設定します。 |
agentimus_rest_discovery | フィルター | ( bool $enabled ): bool | REST 名前空間の自動検出を制御するマスタースイッチです。 |
agentimus_rest_namespaces | フィルター | ( string[] $namespaces ): string[] | ディスカバリードキュメントに公開する REST 名前空間です。 |
agentimus_rest_skip_namespaces | フィルター | ( string[] $namespaces ): string[] | ディスカバリーから除外する REST 名前空間です。 |
agentimus_discoverable_ability | フィルター | ( bool $discoverable, string $name, mixed $ability ): bool | 個別の WP アビリティを含めるか除外するかを指定します。 |
agentimus_serve_security_txt | フィルター | ( bool $serve ): bool | Agentimus が security.txt を生成するかどうかです。 |
agentimus_security_txt | フィルター | ( string $body ): string | 最終的な security.txt の本文を編集します。 |
agentimus_security_txt_expires_days | フィルター | ( int $days ): int | security.txt の Expires 期間(日数)です。 |
agentimus_readiness_checks | フィルター | ( array $checks, Settings $settings ): array | 管理画面のディスカバリーハブの準備状況チェックを追加または調整します。 |
agentimus_signing_secret_key | フィルター | ( string $key ): string | 定数またはボールトから Ed25519 署名キーを提供します。 |
agentimus_exposed_paths | フィルター | ( string[] $paths, Settings $settings ): string[] | 公開ファイルスキャンで検査する機密パスのリストです。 |
agentimus_verified_bot_domains | フィルター | ( array $map ): array | 検証可能なボットの rDNS マップです(レジストリトークン → 逆引き DNS ドメインのサフィックス)。所有者が編集可能なレジストリから取得します。 |
agentimus_verifier_registry | フィルター | ( array $entries ): array | 所有者の編集を反映した有効な Verified-bots レジストリです。両方の検証方法(rDNS ドメインと公開 IP 範囲ファイル)の情報源となります。 |
agentimus_trusted_proxies | フィルター | ( string[] $cidrs ): string[] | 実際のクライアント IP 解決に使う、信頼済みプロキシ/CDN の CIDR です。転送ヘッダーは、直接接続元が確認済みのプロキシである場合にのみ有効になります。送信元 IP の偽装には使えません。 |
agentimus_referral_beacon | フィルター | ( bool $enabled ): bool | オプトイン方式の「CDN モード」紹介ビーコン(ブラウザーで AI からの閲覧者を集計する機能)を制御するマスタースイッチです。 |
agentimus_markdown_cache | フィルター | ( bool $cache ): bool | 投稿ごとの .md キャッシュを有効または無効にします(デフォルトで有効)。 |
agentimus_flagged_ip_retention_days | フィルター | ( int $days ): int | オプトイン方式のフラグ付き IP ストアの保持期間です(デフォルト約 14 日)。 |
// Add a vendor extension to the discovery document (the x- namespace is yours).
add_filter( 'agentimus_envelope', function ( $envelope, $registry ) {
$envelope['x-acme'] = array( 'portal' => 'https://acme.example' );
return $envelope;
}, 10, 2 );
内部
高度なサイト所有者向けの調整機能です。サードパーティー向けの連携インターフェースではありません。
| フック | 種類 | シグネチャ | 用途 |
|---|---|---|---|
agentimus_deny_request | フィルター | ( bool $deny, string $ua ): bool | リクエストを403にするかどうかについて、Guardが最終判断します。 |
agentimus_block_allowlist | フィルター | ( string[] $allowed ): string[] | ハードブロックしてはならないクライアント(検索エンジン+独自のリスト)。 |
agentimus_verify_bots | フィルター | ( bool $on ): bool | 設定を上書きして、ボットの身元確認(逆引きDNS+公開IP範囲)のオン/オフを強制します。 |
agentimus_reverse_dns | フィルター | ( ?string $host, string $ip ): ?string | 逆引きDNSチェックのPTR検索を上書きします。ホスト名(該当なしの場合は'')を返すか、ネイティブリゾルバーを使用する場合はnullを返します。 |
agentimus_forward_dns | フィルター | ( ?array $ips, string $host ): ?array | 順引きA/AAAA検索を上書きします。IP文字列の配列を返すか、ネイティブリゾルバーを使用する場合はnullを返します。 |
agentimus_engine_signatures | フィルター | ( array $signatures ): array | トークン境界で実際のクローラーに一致する構造化シグネチャ。 |
agentimus_generic_ua_tokens | フィルター | ( string[] $tokens ): string[] | 低信頼シグナルとして扱う汎用ユーザーエージェントトークン。 |
agentimus_agent_map | フィルター | ( array $map ): array | アクティビティログ用のユーザーエージェント → わかりやすいラベル。 |
agentimus_spoof_signatures | フィルター | ( string[] $signatures ): string[] | 偽装された/旧式デバイスのスキャナーを示すプラットフォームマーカー。 |
agentimus_known_agents | フィルター | ( array $catalog ): array | 既知のエージェントのカタログ(ユーザーエージェント → ラベル)。 |
agentimus_known_scanners | フィルター | ( string[] $known ): string[] | ワンクリックのブロック候補として提示されるスキャナーのユーザーエージェント。 |
agentimus_known_trainers | フィルター | ( string[] $known ): string[] | robots.txtでのブロック候補として提示されるAIトレーナーのユーザーエージェント。 |
agentimus_ai_referral_sources | フィルター | ( array $map ): array | 「AIからのトラフィック」用の検索文字列 → わかりやすい名前。ドットを含む検索文字列は、リファラーのホスト(およびそのすべてのサブドメイン)と、そのホストを含むutm_sourceに一致します。ドットを含まない検索文字列はホストと一致することがないため、utm_sourceのみを照合します。これにより、utm_source=perplexityを付与するアシスタントがカウントされます。 |
agentimus_unknown_sources_max_rows | フィルター | ( int $max ): int | オプトイン式の「見逃したAIソースを探す」テーブルの行数上限。0にすると上限が無効になります。 |
agentimus_activity_skip_self | フィルター | ( bool $skip ): bool | ログイン中の管理者からのヒットを記録しないかどうか。これは現在のユーザーではなく、ログインCookieに基づいて評価されるため、nonceを持たないRESTルートでも機能します。 |
agentimus_activity_retention_days | フィルター | ( int $days ): int | エージェントのヒットを保持する期間です。設定 → 訪問ログの値を上書きします。ダッシュボードのレポート対象は最大30日です。追加日数が行数上限によって破棄されないよう、agentimus_activity_max_rowsも増やしてください。 |
agentimus_bypass_shared_cache | フィルター | ( bool $on ): bool | AIエンドポイントをキャッシュ不可にし(Cache-Control: no-storeを送信)、共有キャッシュ/CDNによってエージェントの取得がアクティビティログに記録されない事態を防ぎます。「設定 → キャッシュとCDN」のスイッチを上書きします。 |
agentimus_purge_on_change | フィルター | ( bool $on ): bool | コンテンツ変更時にAIファイルのキャッシュを自動消去する機能のオン/オフを切り替えます。「設定 → キャッシュとCDN」のスイッチを上書きします。 |
agentimus_purge_urls | フィルター | ( string[] $urls ): string[] | コンテンツ変更時にAgentimusがページキャッシュへ削除を依頼する正確なURLです(独自のURLを追加するか、対象を減らせます)。 |
agentimus_purge_url | アクション | ( string $url ) | キャッシュ消去時にURLごとに実行されます。ネイティブにはAgentimusが検出しないページキャッシュに対応させるには、このフックを使用してください。(agentimus_purgedはリスト全体を対象に1回実行されます。) |
agentimus_new_agent_seconds | フィルター | ( int $seconds ): int | アクティビティ確認パネルで「新規エージェント」と見なす期間。 |
agentimus_burst_min_hits | フィルター | ( int $hits ): int | バーストとしてフラグを付ける最小ヒット数。 |
agentimus_heavy_min_hits | フィルター | ( int $hits ): int | 大量利用としてフラグを付ける最小ヒット数。 |
agentimus_threats_limit | フィルター | ( int $limit ): int | 「確認が必要なアクティビティ」パネルの最大行数。 |
agentimus_default_settings | フィルター | ( array $defaults ): array | デフォルト設定の配列。 |
agentimus_settings | フィルター | ( array $settings ): array | 読み込み時点での、統合済みの現在の設定配列。 |
agentimus_sanitize_settings | フィルター | ( array $clean, array $input ): array | 保存時に、追加された関連フィールドを検証/型変換します。 |
agentimus_settings_reset | アクション | () | 所有者が設定をリセットしたときに実行されます。 |
// The Guard's final say on whether to 403 a request.
add_filter( 'agentimus_deny_request', function ( $deny, $ua ) {
return $deny;
}, 10, 2 );
開発
npm install
npm run build # one-off build into assets/admin/
npm run dev # rebuild on change
assets/admin/ は Git の追跡対象外です。これはビルド成果物です。
リポジトリではなく、配布用の .zip(.org SVN タグ)に含めてください。
要件
- WordPress 6.9 以降(7.0 までテスト済み)
- PHP 7.4 以降
ライセンス
GPL-2.0-or-later。管理アプリは resources/ の Vue ソースから Vite でビルドされます。minify 済みのコードのみを配布することはないため、ビルドを再現できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。