关于 contentgate
contentgate 是面向内容网站发布前检查的 MCP 服务。它检查关键词、翻译结构、链接、声明、站点地图日期、页面内容和句子重合度;检查过程不访问文件或网络。
主要功能
- 01检查关键词是否出现
- 02比较翻译文档结构
- 03检查站内链接和宣传声明
- 04核验站点地图修改日期
- 05审计页面文本、结构化数据和资源
- 06衡量页面间句子重合度
适用场景
- 01发布前检查页面内容
- 02依据源文档审查译文
- 03审计页面 SEO 与结构化数据
- 04比较页面中的相同措辞
MCP 相关
向 MCP 客户端提供内容验证工具。工具接收内容并返回判断结果,不访问文件系统或网络。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
8收录的工具列表 · 更新于 6 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| html | string | 是 | 页面渲染后的 HTML。 |
| scope | array | 否 | 要检查的元素,格式为 [tag, class],例如 ["article","post"]。省略则读取整个文档。 |
| keywords | object | 是 | 关键词到月搜索量的映射,数据取自真实工具。 |
| exclude_classes | array | 否 | 要忽略其子树的类。用于排除全站通用的行动号召区块,否则这些区块会让每个页面都通过检查。 |
| primary_min_hits | integer | 否 |
详细介绍
mcp-server-contentgate
用于部署前内容检查的 MCP 服务。在页面编写过程中发现问题,而不是等页面上线后才发现。
文档和背景介绍:adsandcode.com/en/open-source/contentgate
{
"mcpServers": {
"contentgate": { "command": "npx", "args": ["-y", "mcp-server-contentgate"] }
}
}
工具
| 工具 | 检查内容 |
|---|---|
check_keywords | 此页面要争取排名的词语是否确实出现在页面中? |
check_translation | 此译文的结构是否仍与源文档相同? |
check_internal_links | 除模板内容外,此页面是否链接到本站中任何可带来收入的内容?只有主机名位于 site_hosts 中的绝对链接才会计入。 |
check_claims | 文案是否将结果陈述为事实,以致不符合受监管广告的要求?只有当免责声明中的否定内容直接适用于该主张时,才会计入。 |
sitemap_lastmod | 此页面是否确实发生了变化,还是构建过程即将对此作出不实声明? |
content_hash | 移除易变内容块后生成的页面稳定哈希值。 |
audit_page | 此页面是否无需 JavaScript 即可阅读、是否标记了可解析的 JSON-LD、是否如实处理了外链,以及图片和网站图标是否齐全? |
compare_pages | 这两个页面有多少句子逐字相同? |
所有工具都是纯函数:输入内容,输出判定结果。不会访问文件系统或网络,也不会写入任何内容。
这些检查器也可以作为普通函数导入,且导入时不会启动任何程序:import { checkClaims, auditPage } from "mcp-server-contentgate"。
页面审计
audit_page 会对一个已渲染页面执行六项检查,并为每项检查返回判定结果;传入 checks 可减少检查项。
visible_text:关闭 JavaScript 后可读取的字符数,不包括<template>和带有hidden属性的元素。Google 会渲染 JavaScript;许多 AI 爬虫只读取服务器发送的 HTML,因此脚本注入的文章对它们不可见。1200 是本项目的默认值,并非搜索引擎设定的数字。structured_data:所有 JSON-LD 块均可解析,且包含所需的@type值(默认为Article、BreadcrumbList、Organization),并且存在dateModified。所需类型可由其 schema.org 子类型满足(BlogPosting和NewsArticle都属于 Article;Corporation、NewsMediaOrganization或LocalBusiness都属于 Organization)。ProfilePage不必是Article。outbound_links:没有rel值nofollow、sponsored或ugc的外部链接。Google 不要求普通编辑性链接设置任何rel(仅要求付费或联盟链接使用sponsored,用户生成内容链接使用ugc),因此不要为了通过检查而给引用添加nofollow:请将引用的网站列入cite_ok。主机名会按照浏览器解析链接的方式解析,因此反斜杠和额外的斜杠无法掩盖链接的实际去向;任何人都可以注册的注册局(co.uk、github.io、pages.dev)不接受列入cite_ok。images:没有alt或width的<img>。接受alt=""。favicon:仅检查主页;要求在 head 中有图标<link>,格式须为 Google Search 列出的格式(BMP、GIF、ICO、PNG、JPEG、PPM、TIFF),格式从 URL 路径中读取;若为data:URI,则从其 MIME 类型中读取。stock_phrases:这是编辑风格词表,并非机器生成文本检测器。默认列表体现了一位编辑对繁体中文的偏好,旨在被替换:因此,和然而,等连接词会导致普通句子被标记。请传入自己的词表;使用其他语言时务必如此。
compare_pages 会将两个页面拆分为句子(按 。!? 拆分;也会在空白字符前的 . ! ? 处拆分),忽略少于 10 个字符的句子,并分别按字符数衡量双方内容的重合度。
每条规则的来源均见仓库 README。
唯一的设计规则
从未证明会失败的防护措施,只是摆设。
服务会在启动时运行负向测试,如果测试失败,就会拒绝启动。 无法证明自己仍能捕获已知错误输入的检查器,不该回答有关你内容的问题。
同一测试文件也会由同一仓库中的 Python 实现运行,且两者必须对每个用例给出完全相同的判定。
调用前值得了解的三种行为
关键词匹配绝不会规范化空白。 web hosting 和
webhosting 是不同的字符串,搜索量也不同。如果你传入其中一个,
另一个不会满足匹配条件。
传入 exclude_classes。 否则,每个页面都会出现的行动号召区块会满足 check_keywords 和
check_internal_links,这两个工具都会变成摆设。
当目标语言与源语言使用相同文字体系时,设置 forbid_source_script: false,例如从繁体中文翻译为简体中文。否则,该地区设置下的每份文档都会被报告为未翻译。
Python CLI
同一仓库中的 contentgate 包可以从磁盘读取你的网站,运行相同的检查,作为部署门禁。
许可证
MIT。
维护者
由 Ads & Code 构建并维护。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。