mcpField
A
agentimus

agentimus

远程服务
heera.it商业与营销22 天前更新

关于 agentimus

Agentimus 是面向 WordPress 站点所有者的插件,帮助内容被 AI 系统发现并查看站点信号。它提供 AI 就绪度输出与报告,以及可选的 MCP 接口,用权限检查来读取数据和管理内容。

主要功能

  1. 01AI 可读内容与发现端点
  2. 02就绪度与流量报告
  3. 03搜索、索引和请求日志数据
  4. 04可选且可审计的内容写入
  5. 05结构化数据与爬虫规则

适用场景

  1. 01让 WordPress 站点便于 AI 发现
  2. 02查看机器人流量和搜索可见度
  3. 03允许 Agent 起草或更新站点内容

MCP 相关

可选 MCP 服务运行于 `/wp-json/agentimus/v1/mcp`。它提供读取工具和资源;启用写入后才开放写入工具,并受用户权限控制,调用会被审计。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://heera.it/wp-json/agentimus/v1/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Agentimus

PHP compatibility WordPress plugin version Tested up to License: GPL-2.0-or-later

为 AI Agent 时代提供两项功能。**(1)让任何 WordPress 网站都易于阅读和引用——提供 llms.txt、全文版本、Markdown 投递、JSON-LD、content-signal robots 规则;然后评估网站对 AEO/GEO 的适配程度,并指出接下来需要修复的问题。(2)**让你已经在使用的 AI 工具通过 MCP 操作网站:插件内置了 Model Context Protocol 服务,因此 Claude Code、Claude Desktop、Cursor 或 Codex 可以读取网站的适配度、流量和机器人数据;在另外启用两项选项后,还可以起草、编辑和发布文章和页面。每次写入都以当前登录用户的身份执行,并经过权限检查和审计。轻量、没有臃肿的 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 缓存一个响应)
结构化数据JSON-LD WebSite + Person/Organization + BlogPosting + BreadcrumbList(优先使用 SEO 插件提供的数据)
面向 AI 的主题每页主题 → JSON-LD keywords + about DefinedTerm 实体(可通过 agentimus_topic_links 过滤器选配 Wikidata sameAs)+ /<slug>.md 中的 Topics: 行;可静态设置(编辑器),也可根据标签和分类生成
AI 描述每页一行摘要 → JSON-LD description + /<slug>.md 的导语 + 权威的 <meta name="description">(替代主题提供的描述;优先使用 SEO 插件的描述);由编辑器设置,若未设置,则回退到摘要或约 30 个词的内容总结。设置中的子开关可将其限制为仅用于 JSON-LD + .md
写作助手(选择启用)每个 Agentimus 界面上的羽毛笔按钮都会打开一个侧边栏:简报 → 可编辑的大纲 → 文章的每个章节并行撰写(每部分调用一次 /assistant/compose-section,另加一次润色调用;长篇文章不受单次响应限制,失败的部分单独重试,中途重新加载可继续撰写)→ 完整预览(标题、实际区块、AI 描述、主题、建议的分类/标签、草稿/待审选择)→ 创建草稿后直接进入编辑器。草稿遵循 可读性 面板的评分标准 — 提炼成摘要的开篇、便于引用的段落长度、通俗句子、标注的来源(readability_rules(),段落上限根据 PageCheck 自身阈值推导)。仅负责创建:草拟的文章会在编辑器中打开,后续修订也在那里进行(侧边栏中旧的编辑流程及其安全区块门控已移除 — 该门控存在的原因是侧边栏只能处理自己写入的区块,而拒绝真实文章并不是解决问题的正确方式)。不同类型采用不同结构:Assistant::shape_for() 会将层级类型编写为 PAGE — 不虚构章节、不预留图片位、不添加分类法;只有所有者才知道的事实处使用 [placeholder] — MCP 创建也使用相同的提示词。图片以填好 alt 文本的占位区块形式提供:每个图片区块都有 根据 alt 文本生成图片,侧边栏有 特色图片(AI) 面板,另有三个范围的 询问 AI — 单个区块、多区块选择(使用 BlockSettingsMenuControls,因为多选时 InspectorControls 永远不会渲染),或文档规划器;后者返回限定于大纲范围的编辑列表,并根据重新读取的锚点映射逐项应用(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 提供两个层级,每项能力都像其来源界面一样受权限控制。读取(始终注册): 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 标题 — 决定页面在搜索结果中显示方式的两个字段,也是 Agent 之前无法触及的最后两个字段),以及 apply-fix(执行就绪检查自身的修复方案;方案来自封闭词汇表,只能启用有文档记录的功能)。status=publish 还需要第三个开关(agent_writes_publish)以及用户自身的发布权限
MCP 服务(选择启用)/wp-json/agentimus/v1/mcp — WordPress MCP Adapter 内置于插件中(通过 Composer 随插件提供,由 Jetpack-autoloader 仲裁),受 enable_mcp_server 开关控制(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 卡片);端点已关闭的资源不会注册(服务的自我描述会说明正在运行的层级)— Adapter 默认提供的通用任意能力执行服务会被抑制,每次调用都会记录在 Agent Access 中,关闭开关会立即断开在线客户端。开关关闭时,库不会加载,也不存在任何端点
XML 站点地图/agentimus-sitemap.xml — 选择启用的备用方案,仅当 WordPress 核心和 SEO 插件均未提供站点地图时才生成(站点地图索引 + 分页子站点地图)
爬虫策略robots.txt 内容信号 + 训练爬虫阻止列表
发现层/.well-known/discovery.json(+ agent-card.json、mcp.json)
变更动态/agentimus-changes.json?since= — 以 JSON 格式列出近期新增、更新和删除的内容,让 Agent 只获取增量(在 discovery.json 中声明;默认开启)
爬取强制执行(选择启用)对生成的端点上的拒绝名单、伪装成“扫描器”或已证实冒名的用户代理执行硬拦截(403)— 不影响 ACME,默认关闭;可选的机器人身份验证(正向确认反向 DNS + 运营方公布的 IP 范围,通过所有者可编辑的 Verified-bots 注册表配置),防止伪造的机器人名称获得允许名单资格,并拒绝已证实的冒名机器人

In the admin

  • 发现 — 站点上所有待处理事项的统一入口,在导航栏中显示并带有独立计数。一个按优先级排列的列表,包含已获得点击却正在流失点击的页面,以及设置检查发现的问题;按每项造成的损失排序,每行都带有可直接跳转到修复位置的按钮。计数只统计可立即处理的工作;只需等待后续报告的事项则以一个低调的圆点标记。下方是逐项内容工作清单:每个已发布内容占一行,列出它因哪些内容而被找到、是否回答了相关问题,以及还需要补充什么。
  • 浅色/深色主题 — 切换按钮显示你将要切换到的模式。深色主题采用经过精细调整的配色,而非简单反转;WordPress 管理界面的每种配色方案都有自己的风格(Default 使用中性色,Coffee 使用棕色和金色)。手动选择会保持不变,直到操作系统下次切换模式,之后便重新跟随设备的节奏;最终生效的模式会写入 <html data-ar-theme>,并按浏览器记忆,绝不写入设置。
  • AEO/GEO 评分 — 仪表盘上的单一 0–100 评分,分为五个等级(可发现/易读/可信/优化/已引用),并提供最有用的下一步建议;每个等级都可直接跳转到相应操作位置。已引用等级默认关闭(见引用),关闭时,其权重会重新分配给其他等级。99.6 分会显示为 99 — 100 分必须实至名归,不会靠四舍五入得来。
  • 按问题查看工作 — 选择一项检查后,该检查标记的每个页面都会在「你的内容」中以排序并分页的方式打开,而不是只显示六个样本。修复筛选列表所要处理的问题后,该行仍会留在原处并标记为已完成,不会在你看到修复生效前就消失。
  • 不依赖 WP-Cron 的读取 — 内容扫描属于计划任务,但许多主机上的 WordPress 计划任务从不运行(缓存页面不会运行 PHP,因此也不会有启动这些任务的请求)。Agentimus 会发现自身任务是否逾期,并在你当前所在的管理页面中运行它们,同时加入 WordPress 核心自身的锁,确保绝不会重复运行任务。对于 cron 正常运行的站点,不会加载任何额外内容。
  • 优化你的内容 — 对你的文章进行逐页可引用性检查(内容单薄、缺少可引用的具体内容、可引用段落、新鲜度),并提供待改进页面的工作清单,以及编辑器中对应的只读面板。商品、电商插件指定的页面(购物车/结账/账户 — 同时读取 WooCommerce 选项和 FluentCart 设置),以及没有原创文字内容的 shortcode/block 容器页面均会排除;将任何不打算让人引用的页面搁置(页面仍会发布,只是不再计入评分)——搁置记录会逐项列出并计数所有搁置内容,而不是让它们悄然消失;将分类标记为常青内容,即可免除新鲜度检查。
  • 内容类型及你对它们的否决权(设置)— 插件启用的类型会与自定义类型分开显示,即使添加该类型的插件希望启用它,你也可以将其关闭。写作助手遵循相同规则:页面不会被添加虚构的章节、图片占位符或标签,因为页面不是文章。
  • 返回时重新读取屏幕数据 — 以前离开数据页面再返回时,显示的仍是插件首次打开时的数据。现在每个页面都会在返回时刷新,因此屏幕上显示的就是当前数据。
  • 发现中心(发现选项卡)— 汇总此站点向机器公开的所有内容:描述站点的提供方、它们声明的能力、公共 API、众所周知的文档,以及 MCP 和工具接口。工具部分分为三个面板,分别说明:已登录的 Agent 可以运行哪些工具(按提供方分组,每组可展开查看工具名称)、这些 Agent 要连接的地址,以及匿名 Agent 在 /.well-known/mcp.json 中获取的内容。能力列表会在固定高度的区域内滚动,因为列表长度取决于站点自身(每种公开的 REST 文章类型和分类法各占一项)。任何注册问题都会附上通俗易懂的修复方法。
  • 就绪报告 — 包含通过/警告/失败检查,每项检查都附有通俗易懂的建议和可直接跳转到修复位置的链接(包括「sitemap 已在 robots.txt 中声明」检查)。
  • Agent 预览 — 一个模态窗口(从就绪报告打开),显示 Agent 会收到的确切 JSON-LD 和 Markdown,适用于站点或任意页面/文章;带有按站点/页面/文章分组的选择器、复制按钮和验证器链接。即使停用了 schema 或由 SEO 插件管理,它也会显示实际将要输出的内容;受密码保护的文章仍会隐藏,尚未发布的草稿则会显示为发布后的输出预览。文章编辑器中也有对应的只读版本。
  • 可见度 → 搜索 — 人们搜索了什么、你的内容出现了多少次、这些结果被点击了多少次,以及哪些页面因此获得点击;每个数字都来自搜索引擎本身。连接 Google 和 Bing 后会出现一个切换开关:两者统计的搜索者不同,绝不会合并。紧接其下的搜索机会会将这些数字转化为工作清单 — 刚好排在首页之外的页面,以及虽在首页却被用户略过的页面;每项都链接到能修复问题的确切字段。它还会指出多个页面相互分流的搜索词 — 点击被分散后,每个页面的排名都不如一个页面时高 — 并说明哪个页面获得了点击,以及其他每个页面应如何处理。(该功能在 1.36 之前位于就绪报告底部;现在就绪报告中会保留指向它的链接。)
  • 可见度 → 已收录 — 查看搜索引擎索引中是否实际收录了你的页面,在同一屏幕查看 Bing 和 Google。如今 ChatGPT 搜索和 Copilot 读取的是 Bing 索引:查看其收录了多少站点内容、爬虫能否顺利访问、按日统计的人类流量及周环比趋势,并通过 Bing 自身的 API 实时查询单个页面。Google 部分会轮流扫描整个站点并每日重新检查 — 状态正常的页面只计入总数;任何需要关注的页面都会以 Google 自身的措辞列出,并附上可直接跳转到 Search Console 的链接;也可以随时重新检查任意 URL。
  • 数据源(设置 → 数据源)— Agentimus 读取的外部服务,全部可选且只读;每项密钥都保存在你自己的服务器上,不经过第三方代理:Cloudflare 可查看边缘节点在你的服务器收到请求前返回或拦截了什么(还可选择额外授予令牌权限,以便在发布时清除缓存);Google Search Console 用于查看搜索和索引覆盖情况 — 如果你需要访客数据,Analytics 也可使用同一密钥;Bing Webmaster Tools 还可以通过 IndexNow 通知每次发布的内容变更。数据会写入你自己的数据库,因此历史记录不会受各服务自身报告周期的限制。
  • 引用(可见度 → 引用;可选启用,使用自带密钥 — 会为评分添加已引用等级,且每次读取结果 90 天后过期,确保过时数据不会计入)— 跨 ChatGPT、Perplexity、Gemini 和 Claude 跟踪你选择的品牌、产品或人物。它会针对每个跟踪项提出受众会输入的问题,并持续报告其是否被提及、被链接,以及与自身竞争对手相比的排名。为项目设置类别(「WordPress SEO 插件」)后,Agentimus 会建议真实用户会输入的问题;或者,如果 WordPress 中已配置 AI 提供方,也可以让该 AI 生成一组不含品牌名称的问题(POST /visibility/suggest 和 /visibility/suggest-ai)。每个项目都有独立的网站、类别、竞争对手、问题和评分表;可以暂停任意项目或整个计划,屏幕上的每项设置都会自动保存。结果存储在本地;这是唯一会发起外部请求的功能,使用你提供的 API 密钥(静态加密存储),且默认关闭。它会使用专属密钥,而不复用 WordPress 共享的 AI 连接器,因为可见度检查的评分依据是引擎引用的来源,而共享客户端会丢弃这些来源。
  • Agent 活动日志 — 仅限本地的仪表盘(默认不记录 IP;可选设置仅为被标记的爬虫存储 IP),用于查看哪些 AI Agent 和爬虫在获取你的端点;重复访问会按次数分组,最新的排在最前。点击任意一天的柱形图,可查看当天的完整报告 — 客户端、端点和每个请求。你自己的登录访问会被跳过,就绪页面自身的实时验证/暴露扫描请求也会跳过(这些请求会携带短期有效的 X-Agentimus-Selfcheck 令牌,因为它们有意采用匿名方式)。
  • 请求日志(更多 → 请求日志)— 仪表盘背后的原始日志:每个请求一行,采用键集分页,可按客户端、端点、网络、用户代理和日期范围筛选。筛选条件会以 AND 逻辑组合,因此能够显示汇总统计在结构上无法呈现的 Agent × 端点交叉表。
  • Agent 访问(更多 → Agent 访问)— 从日志另一侧查看谁在机器接口上进行身份验证并执行操作。记录应用程序密码的创建/首次使用/重命名/撤销、运行的 WordPress 能力,以及被拒绝的请求或对不存在能力的探测 — 每一行都会说明是谁:实时解析用户和背后的具名应用程序密码(重命名的密钥会显示当前名称,已撤销的密钥则显示「已撤销」)。这是记录,不是防护措施(绝不会拦截);不记录 IP,因此显示的是凭证,而非人员。通过 rest_request_after_callbacks 和应用程序密码钩子运行;凭证记录部分不需要 Abilities API,能力记录部分则会自动检测该 API。
  • 来自 AI 的流量 — 仅限私有的第一方统计,显示哪些 AI 助手向你发送了访客(按日统计助手 → 着陆页;不记录 IP,也不收集单个访客数据)。仪表盘显示摘要 — 点击任意一天的柱形图,即可查看当天按助手 → 着陆页划分的报告;更多 → 访客显示完整报告,并提供相同的逐日明细。这里的每张卡片都明确说明统计的是人,而不是 Agent:请求日志记录机器端访问,访客页面记录人类访问,两者绝不会相加。启用CDN 模式后,可选择在浏览器中统计,让完整页面缓存也不会影响数据。由于识别依据是有限列表,可选择启用查找遗漏的 AI 来源诊断功能,记录无法归类的来源主机和 utm_source 标签 — 这是发现盲点的唯一方法,否则这些来源不会留下任何痕迹。
  • 访问日志保留(设置 → 访问日志)— 设置保留期限、每夜自动删除和硬性行数上限。行数上限优先于保留期限:「保留 90 天」只是对记录时间的上限,并不保证某行会保留满 90 天。关闭自动删除不代表「永久保留」— 行数上限仍会生效,并优先收集最早的记录。
  • 避免将 AI 端点纳入缓存(设置 → 缓存与 CDN,可选启用)— 如果站点前方的缓存或 CDN 提供了 AI 端点的存储副本(llms.txt、.well-known 文档、变更订阅流),Agent 请求就不会到达 WordPress:日志统计会偏少,变更订阅流也可能过时。启用此选项后,端点会发送 Cache-Control: no-store,尊重该指令的缓存就会让每次请求直达源站。就绪报告检测到你的网站前方有缓存时,会提供此设置的链接。
  • 内容变更时刷新 AI 文件(设置 → 缓存与 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 文件;缓存插件本身不会知道需要刷新这个文件。功能会自动检测缓存,因此没有缓存时不会执行任何操作。
  • 待审核活动 — 导航栏中的审核队列会标记新客户端、异常高流量客户端、伪造身份或扫描器客户端,以及冒充其他客户端的客户端(它声称是可编辑的已验证机器人注册表中的机器人 — Googlebot、GPTBot、PerplexityBot 等 — 但明确未通过该运营方公布的验证:反向 DNS 或其公布的 IP 段)。每项都附有简单易懂的「检查此机器人」面板,以及一键阻止/允许/忽略选项。可配合选择启用的阻止扫描器和抓取器防护;也可选择启用为标记的客户端存储 IP 地址设置,查看需要阻止的确切地址。之后可在设置 → AI 访问 → 管理客户端中管理所有持续生效的决定 — 已阻止、已信任、已忽略;每行显示身份、决定日期,并提供一键撤销。
  • 暴露面 — 可选控制项,用于限制匿名爬虫可以读取的内容(用户名枚举、作者归档、WP 版本、<head> 链接、XML-RPC);还提供一键暴露文件扫描,检查备份、.env、debug.log、密钥等高风险文件是否可被公开下载,并告知如何阻止访问。这些是操作指引,不是防火墙。
  • 恢复出厂设置 — 一键将所有设置恢复为推荐默认值,并预览将要发生的确切更改。

架构

  • PHP(inc/,命名空间为 Agentimus\,使用 PSR-4 自动加载)— 原生实现,不使用框架。
    • Plugin 负责协调;Settings 是唯一的选项存储;Cache 处理临时数据;Endpoints / Markdown / Schema 生成输出;Readiness 执行检查;Rest 支持管理界面;Admin 挂载 UI。
  • 管理界面 — Vue 3(Options API),使用 Vite 构建到 assets/admin/。 通过标准 WP nonce 与 REST 命名空间 agentimus/v1 通信。
扩展到任何站点 / 内容类型

免费核心支持 post + page,以及你选择启用的任意公开文章类型 (内容类型卡片,或 agentimus_post_types 过滤器),因此商品和 CPT 会自动进入 llms.txt、全文版、Markdown 和 Schema。 更深入的支持(WooCommerce Product 映射器、页面构建器内容)作为附加组件提供,并通过以下扩展点接入:

  • agentimus_post_types — 添加 / 移除 Agent 可见的文章类型
  • agentimus_schema_for_post — 返回完整节点,例如包含优惠信息的 Product
  • agentimus_markdown_source — 为页面构建器内容提供渲染后的 HTML

面向开发者 — 让你的插件可被发现

Agentimus 在 /.well-known/discovery.json 提供统一的聚合发现层(另有 agent-card.json 和 mcp.json)。任何插件都可以通过一个 action 且无需依赖项注册自己 — 如果未安装 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(必填,slug)、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 会自动填充 — 不要设置它。

Capabilities 描述意图;具体的 /wp-json/... 路径只会出现在 endpoints / tools 中。无效条目会被拒绝,并在发现中心 → 验证中显示(及其原因)。

$registry->add_well_known( [...] ) 用于提供 /.well-known/<name> 文档 (callback | redirect | file)。完整的复制粘贴参考请参阅 examples/integrate-your-plugin.php,标准规范请参阅 WP_Discovery Protocol。

钩子与过滤器

所有钩子均为可选,并分为三个层级。表格列出了每个钩子的类型(action 或 filter)和回调签名(参数 → 返回值);复制粘贴示例见 examples/all-hooks-reference.php。在签名中,Registry、Settings 和 Plugin 分别是 Agentimus\Discovery\Registry、Agentimus\Settings 和 Agentimus\Plugin 类。

稳定

在 WP_Discovery spec 1.0 中公开且已冻结 — 可放心基于此进行开发。

Hook类型签名用途
wpdiscovery_registeraction( Registry $registry )注册你的资源并提供自己的 /.well-known 文档。完整 Schema 见 integrate-your-plugin.php。
agentimus_entity_typesfilter( string[] $types ): string[]向设置 → 身份中添加可选的 schema.org 实体类型。
agentimus_cache_flushedaction()Agentimus 重新生成文档后运行 — 清理你的 CDN / 页面缓存。
agentimus_bootedaction( 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 服务向外部 Agent 暴露的能力(默认:其九项只读能力)。可缩减列表,限制离开站点的内容。
agentimus_bootstrap_mcp_adapter过滤器( bool $bootstrap ): bool否决加载捆绑的 MCP Adapter 库(例如由主机自行管理适配器时);此设置独立于所有者的 enable_mcp_server 设置。
agentimus_agent_skills过滤器( array $skills, array $resources ): arrayAgent Skills 索引中的条目。
agentimus_post_types过滤器( string[] $types, string[] $available ): string[]哪些文章类型对 Agent 可见(每种类型都会生成一个 llms.txt 分区)。
agentimus_post_type_source过滤器( string $source, string $post_type ): string将文章类型的 llms.txt 分区(以及 Agent 预览选择器)归属到你的插件。
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“主题”列表和每页派生主题中排除的主题/分类 slug。
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。核心不提供任何 URL(不自动查询);由你负责映射。可直接使用的示例: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 ): intllms-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 引言和 meta 标签;之后会再次清理(剥离标签并限制长度)。
agentimus_emit_meta_description过滤器( bool $emit, WP_Post $post ): boolAgentimus 是否在本次请求中管理页面 <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 ): boolREST 命名空间自动发现的总开关。
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 ): boolAgentimus 是否生成 security.txt。
agentimus_security_txt过滤器( string $body ): string编辑最终的 security.txt 正文。
agentimus_security_txt_expires_days过滤器( int $days ): intsecurity.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 );
内部

供网站所有者进行高级调优,不是面向第三方的集成接口。

Hook类型签名用途
agentimus_deny_requestfilter( bool $deny, string $ua ): boolGuard 对是否对请求返回 403 的最终决定。
agentimus_block_allowlistfilter( string[] $allowed ): string[]绝不能被硬拦截的客户端(搜索引擎 + 你的列表)。
agentimus_verify_botsfilter( bool $on ): bool强制开启或关闭机器人身份验证(反向 DNS + 已公布的 IP 范围),覆盖该设置。
agentimus_reverse_dnsfilter( ?string $host, string $ip ): ?string覆盖反向 DNS 检查中的 PTR 查询——返回主机名(无主机名时返回 ''),或返回 null 使用原生解析器。
agentimus_forward_dnsfilter( ?array $ips, string $host ): ?array覆盖正向 A/AAAA 查询——返回 IP 字符串数组,或返回 null 使用原生解析器。
agentimus_engine_signaturesfilter( array $signatures ): array在令牌边界匹配真实爬虫的结构化签名。
agentimus_generic_ua_tokensfilter( string[] $tokens ): string[]被视为低信号的通用 user-agent 令牌。
agentimus_agent_mapfilter( array $map ): array用于活动日志的 user-agent → 友好标签映射。
agentimus_spoof_signaturesfilter( string[] $signatures ): string[]用于标记伪造或旧设备扫描器的平台标记。
agentimus_known_agentsfilter( array $catalog ): array已知 Agent 目录(user-agent → 标签)。
agentimus_known_scannersfilter( string[] $known ): string[]作为一键拦截建议提供的扫描器 user-agent。
agentimus_known_trainersfilter( string[] $known ): string[]提供用于在 robots.txt 中拦截的 AI 训练器 user-agent。
agentimus_ai_referral_sourcesfilter( array $map ): array“来自 AI 的流量”的匹配词 → 友好名称。包含点号的匹配词会匹配引荐来源主机(及其任何子域),也会匹配携带该主机的 utm_source;不含点号的匹配词永远无法与主机匹配,因此只匹配 utm_source——这就是带有 utm_source=perplexity 标签的助手会被统计的方式。
agentimus_unknown_sources_max_rowsfilter( int $max ): int可选的“查找遗漏的 AI 来源”表格的行数上限。0 表示不设上限。
agentimus_activity_skip_selffilter( bool $skip ): bool是否跳过已登录管理员的访问记录。注意:此选项依据已登录 Cookie 判断,而非当前用户,因此对不携带 nonce 的 REST 路由也有效。
agentimus_activity_retention_daysfilter( int $days ): intAgent 访问记录的保留时长。覆盖 Settings → Visit log 中的值。Dashboard 仍最多报告 30 天的数据。请同时提高 agentimus_activity_max_rows,否则行数上限仍会丢弃多出的天数。
agentimus_bypass_shared_cachefilter( bool $on ): bool强制 AI 端点不可缓存(发送 Cache-Control: no-store),避免共享缓存/CDN 向活动日志隐藏 Agent 的抓取记录。覆盖 Settings → Caching & CDN 开关。
agentimus_purge_on_changefilter( bool $on ): bool开启或关闭内容变更时自动清除 AI 文件缓存。覆盖 Settings → Caching & CDN 开关。
agentimus_purge_urlsfilter( string[] $urls ): string[]内容变更时 Agentimus 请求页面缓存删除的确切 URL(可添加自己的 URL,或缩减此集合)。
agentimus_purge_urlaction( string $url )每清除一个 URL 时触发——可将其挂接到 Agentimus 无法原生检测到的页面缓存。(agentimus_purged 会连同完整列表触发一次。)
agentimus_new_agent_secondsfilter( int $seconds ): int活动待审核面板中“新 Agent”的时间窗口。
agentimus_burst_min_hitsfilter( int $hits ): int标记突发访问所需的最少访问次数。
agentimus_heavy_min_hitsfilter( int $hits ): int标记高频使用所需的最少访问次数。
agentimus_threats_limitfilter( int $limit ): int“待审核活动”面板中的最大行数。
agentimus_default_settingsfilter( array $defaults ): array默认设置数组。
agentimus_settingsfilter( array $settings ): array读取时实时合并后的设置数组。
agentimus_sanitize_settingsfilter( array $clean, array $input ): array保存时验证/转换由配套扩展添加的字段。
agentimus_settings_resetaction()所有者重置设置时运行。
// 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 构建——发布内容不包含仅有压缩代码,因此构建过程可复现。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。