关于 The Service Marketing Guys Audit
面向本地服务企业的 Open Service Profile 规范、校验器和生成工具,帮助业主发布机器可读的业务信息,并将网站未说明的事实标为 TODO。
主要功能
- 01六种用于资料与预约的 MCP 工具
- 02JSON Schema 与清单校验
- 03基于网站生成资料和 llms.txt
- 04未说明的事实保留为 TODO
适用场景
- 01发布服务范围、营业时间和预约政策
- 02根据企业网站起草资料
- 03按规范校验清单
MCP 相关
该规范定义六种 MCP 工具,用于读取资料、检查服务覆盖范围与可预约时间,以及提交预约请求。请求不代表预约已确认;生成工具本身不构建 MCP 服务。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://www.theservicemarketingguys.com/api/audit-mcpclaude mcp add --transport http com-theservicemarketingguys-audit https://www.theservicemarketingguys.com/api/audit-mcp{"mcpServers":{"com-theservicemarketingguys-audit":{"type":"http","url":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}在 Cursor 中打开{"servers":{"com-theservicemarketingguys-audit":{"type":"http","url":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}在 VS Code 中打开{"mcpServers":{"com-theservicemarketingguys-audit":{"type":"http","url":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}{"mcpServers":{"com-theservicemarketingguys-audit":{"serverUrl":"https://www.theservicemarketingguys.com/api/audit-mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Open Service Profile
Open Service Profile(OSP)是一种机器可读的本地服务企业描述,发布在 /.well-known/open-service-profile,用于告知 AI Agent 企业的业务内容、服务区域、营业时间,以及如何请求预约。
它适用于上门服务和到店服务行业:暖通空调、管道、电气、园林绿化、汽车维修、船舶维修等。清单包含身份信息、地点和营业时间、服务项目、ZIP 覆盖范围,以及预约政策。通过模型上下文协议,Agent 可使用六种工具读取资料、查询服务范围、查询可预约时间并提交预约请求。预约请求只是请求,而非确认;规范明确了这一语义,确保 Agent 不会在预约尚未成立时告诉客户预约已成功。
状态
草案 v0.1,于 2026-09-07 发布,并于 2026-09-09 修订(0.1.0-draft.4,纯文本修订)。该草案已足够稳定,可供实现。在 1.0 版本发布前,变更将通过带版本号的发行版发布,并附带变更日志;有关变更决策方式,请参阅 CONTRIBUTING.md。
规范
- 规范的版本化正式文本:https://www.theservicemarketingguys.com/standards/open-service-profile/v0.1
- 介绍页面(最新版本):https://www.theservicemarketingguys.com/standards/open-service-profile/
spec/ 中的 Markdown 是源文本。网站是规范的正式呈现版本,引用时应使用上面的版本化 URL。
维护者
The Service Marketing Guys,一家 EasyServe 公司。欢迎在此提交问题和拉取请求。
此存储库包含什么
spec/
v0.1.md specification source text
schemas/v0.1/
manifest.schema.json Appendix A, the manifest document
tools/
tools-common.schema.json shared definitions for tool schemas
<tool>.input.schema.json one per tool, Appendix B
<tool>.output.schema.json one per tool, Appendix B
examples/v0.1/
hvac-two-locations.json Appendix C.1
auto-repair-single-location.json Appendix C.2
marine-repair-yard.json Appendix C.3
hvac-two-locations.level1.jsonld Appendix C.4, Level 1 JSON-LD for the C.1 business
scripts/
validate-examples.mjs validates the examples against the manifest schema and the Appendix A constraints
extract-from-spec.mjs regenerates schemas/ and examples/ from spec/v0.1.md
bin/
open-service-profile.mjs the generator CLI (npx open-service-profile init <url>)
src/
validate.mjs the examples script's and the CLI's validator, a thin call into the generated core
crawl.mjs the CLI's bounded site crawl: pinned connections, private-address policy, host fence
places.mjs optional Google listing lookup (your own key)
core/ GENERATED generator core; source of truth is the maintainer's TypeScript
tests/
cli.test.mjs node --test; fixture sites under tests/fixtures/
每种工具的输出架构都是由成功形态和错误形态组成的 oneOf。错误形态为 tools-common.schema.json#/$defs/ErrorResult,并在每种工具的架构中限制为该工具对应的错误代码。
运行 npm run validate 检查示例。此项目没有依赖项。
生成你的资料
此存储库还提供了一个小型命令行工具,可根据企业自己的网站起草 Open Service Profile。它还会生成企业的 llms.txt。需要 Node 20 或更高版本,无依赖项。
npx open-service-profile init example.com
它最多读取十二个页面(主页、联系页面、预约页面、关于页面,然后是网站地图中的服务页面和地点页面),并将五个文件写入 ./open-service-profile/:
| 文件 | 托管路径 |
|---|---|
open-service-profile.json | /.well-known/open-service-profile,以 application/json 提供,并设置 Access-Control-Allow-Origin: * |
llms.txt | /llms.txt |
llms-full.txt | /llms-full.txt(列出每项事实及其来源页面,以及各派生值的生成方式) |
robots-ai-section.txt | 合并到 /robots.txt(在回答两个爬虫问题前,这是一个带注释的模板) |
jsonld.html | 粘贴到主页的 <head> 中(Level 1 JSON-LD:包含 ScheduleAction 的 LocalBusiness 节点) |
有一条规则适用于每一行:如果页面没有明确说明某项事实,就将其写为 # TODO: 行,而不是使用看似合理的默认值。不会编造价格、营业时间、服务项目或资质;只有在实际读取的页面中出现过的服务才会列出;页面标记中找到的评分或评论数绝不会复制(规范禁止这样做)。只有在所有 Level 1 事实均已确认、没有任何值是从措辞推断得出、清单通过附录 A 的校验,并且主页已经包含 Level 1 JSON-LD 时,草案才会声明达到 Level 1;它绝不会声明达到 Level 2,因为此工具不会构建 MCP 服务。
有些信息没有任何网站说明,因此工具会提问,而不是猜测:预约政策(最早接受预约的日期、是否接受周末预约、是否提供紧急服务或非营业时间服务、如何确认预约)、两个 robots.txt 选项(AI 助手是否可以读取你的页面;是否可以将其用于训练),以及仅在页面无法确定时询问的服务模式(只要识别出一种已确认的业务类型即可)、主要服务地点(按定义,一个地点是主要地点)和时区(如果州位于同一时区即可确定)。通过标志传入这些信息,或在终端中运行并回答问题;未回答的字段会保留为 TODO 行。三个标准时段仅按 ID 填写,不写具体时刻。
npx open-service-profile init example.com --min-days-ahead 1 --weekend-requests saturday_only --emergency no --contact-methods call,email --ai-read yes --ai-train no
选项:
--min-days-ahead <n>(0 到 60)、--weekend-requests <allowed|saturday_only|not_allowed>、--emergency <yes|no>、--contact-methods <call,text,email>:用你自己的说法描述预约政策。--ai-read <yes|no>、--ai-train <yes|no>:robots.txt选项。不提供这些选项时,该部分会生成注释模板,不会产生任何更改。--service-model <on_site|in_shop|both>、--primary <city or id>、--time-zone <IANA zone>:仅在页面无法确定时询问。--place-id <id>还会通过 Places API 使用你自己的GOOGLE_PLACES_API_KEY读取商家的 Google Business Profile 商家信息。商家信息只用于补充网站上缺失的内容,绝不会覆盖网站信息;并且只有在确认该商家信息属于此商家后才会使用(其网站与爬取的网站一致,或者该商家信息未列出网站时,其电话号码或名称和邮政编码与网站一致)。--out <dir>用于选择文件的输出位置。使用--json则会将完整结果(清单、文件、TODO 列表、带来源的事实)打印到标准输出。--verbose会在每次获取 URL 时打印该 URL。
爬取过程会拒绝私有、环回、链路本地、唯一本地、多播和云元数据地址,包括所有嵌入 IPv4 地址的 IPv6 形式(映射、兼容、NAT64)。每个主机名只解析一次,判定后会将连接固定到已判定的地址;重定向和站点地图子项只能指向同一主机或其 www 镜像。没有任何选项可以放宽此限制。
同一生成器也作为网页工具运行在其上级网站上:https://www.theservicemarketingguys.com/tools/open-service-profile
生成器的核心(src/core/)由维护者的 TypeScript 生成,并带有说明这一点的标头;请在源文件中编辑,而不要在此处编辑。清单验证器是该核心的一部分,因此网页工具、公开审计、此 CLI 和 npm run validate 都通过同一实现来判断清单。src/crawl.mjs、src/places.mjs、src/validate.mjs 和 bin/ 是此仓库自有的文件。运行 npm test 以执行 CLI 测试(使用 Node 内置运行器,测试夹具网站通过固定连接在本地提供服务)。
技能
skills/ 包含两个 Agent Skills:open-service-profile 适用于代表客户采取行动的 Agent(发现清单、读取清单、调用工具,并按照同意规则发送预约请求);open-service-profile-publish 适用于发布资料的开发者或网站所有者。使用 npx skills add buildmodus/open-service-profile 安装。详见 skills/README.md。
实现
The Service Marketing Guys 在其客户网站上提供 Level 2 清单,清单由驱动各网站的相同数据构建。示例:https://coastalecoheatair.com/.well-known/open-service-profile
规范的附录 D 列出了参考实现与规范仍存在差异的地方。
如何提议更改
提交 issue 或 pull request。CONTRIBUTING.md 说明提案应包含哪些内容,以及如何作出决策和发布版本。尤其欢迎报告规范与实际实现不一致之处。
引用
请引用带版本号的规范,而非此仓库。CITATION.cff 中提供了首选引用方式,GitHub 的“引用此仓库”按钮也会读取该文件。
许可
不同文件适用不同许可证:
- 规范文本(
spec/):知识共享署名 4.0 国际许可协议。请参阅 LICENSE-SPEC.md。 - JSON Schema、示例、脚本和生成器(
schemas/、examples/、scripts/、src/、bin/、tests/):MIT 许可证。请参阅 LICENSE。
版权所有 2026 EasyServe LLC。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。