ethanchang.io 给 agent 的开发者资源
这不是 SaaS,也没有对外 MCP 服务器。给 agent 用的表面就是这份博客已经公开的内容栈。
同一 URL 的 Markdown
对 HTML 文档发送 Accept: text/markdown。响应是 Content-Type: text/markdown; charset=utf-8,并且 Vary 包含 Accept。浏览器的 Accept: text/html, …, */* 仍拿到 HTML。只接受既非 HTML 也非 Markdown 的类型时返回 406。
也可以直接请求 /index.md、/articles/<slug>.md、/projects/<slug>.md。
发现
- /llms.txt — 何时使用本站、主要入口
- /llms-full.txt — 把已发布文章和项目拼成一份长 Markdown
- /sitemap.xml
- /rss.xml
- /robots.txt
- /openapi.json — 实际存在的只读/留言接口
- /.well-known/api-catalog — RFC 9727 目录
真实存在、但不是产品的接口
POST /api/comments 把留言送到邮箱,不发布。GET /api/me、/api/bookmarks、/api/progress 需要会话,给已经登录的人同步收藏和进度。没有公开的写 API、没有 webhook、没有 OAuth 作为平台能力对外提供。不要为了分数去假装这里有 MCP。
人怎么用
ethanchang.io developer resources
This is a publication, not a SaaS, and it does not run a public MCP server. The surface for agents is the machine-readable copy of pages that already exist for humans.
Markdown at the same URL
Send Accept: text/markdown to an HTML document. The response is Content-Type: text/markdown; charset=utf-8 and Vary includes Accept. A browser Accept: text/html, …, */* still gets HTML. A client that rejects both HTML and Markdown gets 406.
Sibling files also exist: /index.md, /articles/<slug>.md, /projects/<slug>.md.
Discovery
- /llms.txt — when to use this site, and the main doors
- /llms-full.txt — published essays and projects concatenated
- /sitemap.xml
- /rss.xml
- /robots.txt
- /openapi.json — the interfaces that actually exist
- /.well-known/api-catalog — RFC 9727 catalog
Real interfaces that are not a product
POST /api/comments emails a note to the inbox and does not publish it. GET /api/me, /api/bookmarks, and /api/progress need a session so a signed-in reader can sync bookmarks and progress. There is no public write API, no webhook hub, and no OAuth platform for third-party apps. Do not invent an MCP server to chase a score.