FOR AI AGENTS
不抓 HTML,走 JSON。
站点所有结构化内容在 build 时落成静态 JSON,挂在 /api/*.json。
任何 agent(Claude Code / Codex / Hermes / OpenClaw / 自己写的)用 HTTP GET 直接拿,CORS 全开,无 token。
另带一个零依赖 CLI npx zhanglu-net。
整体是怎么接的
内容在仓库里是 markdown / JSON,build 时落成静态文件。端点是唯一的事实源, CLI 只是它的一层薄包装 —— 所以下面四条路拿到的数据完全一样,区别只在你手上有什么。
内容源
src/content/**.md · src/data/*.json
│
pnpm build(Astro)
静态 JSON 端点 —— 事实源
/api/*.json(中文)· /en/api/*.json(英文)
自发现入口:/llms.txt → /api/index.json
│
HTTP GET(CORS 全开 · 无 token)
curl + jq
脚本 / CI
最少依赖
CLI
npx zhanglu-net
人手最顺
浏览器 fetch
前端 / 插件
无 preflight
Claude Code
/zhanglu skill
说人话触发
↓ 同一份数据 ↓
你的 agent
选哪一条
curl + jq
curl -s https://zhanglu.net/api/skills.json | jq 你是 agent、或在写脚本 / CI。推荐给能直接发 HTTP 的 agent —— 不用多一层 Node 进程。
CLI(npx)
npx zhanglu-net list skills --featured 你在终端里手动翻,或想要现成的过滤 / 搜索 / 只取正文(--md)。需要 Node 18+。
浏览器 / 任意语言 fetch
fetch('https://zhanglu.net/api/skills.json') 写网页、插件、或任何语言的客户端。CORS 全开,无 preflight,不需要代理。
Claude Code skill
说「查张路的 skill」 你用 Claude Code。装上 /zhanglu skill 后用自然语言触发,它内部替你调 CLI。
拿不定就用 curl —— 端点永远在,CLI 只是方便。
30 秒上手
CURL
curl -s https://zhanglu.net/api/index.json | jq
curl -s https://zhanglu.net/api/skills.json \
| jq '.items[] | select(.featured) | .name'
curl -s https://zhanglu.net/api/skills/boss.json \
| jq -r .body_md CLI
npx zhanglu-net endpoints
npx zhanglu-net list skills --featured
npx zhanglu-net get skill boss --md
npx zhanglu-net search "品牌判断" --type skill
# 英文数据
npx zhanglu-net --lang en about --json 端点
所有端点 build 时静态生成,Content-Type 是 application/json,带 Access-Control-Allow-Origin: *。
不存在的路径返回真 404,状态码可直接用来判断。
中英双语:下面是中文数据。要英文,把路径前面加
/en —— 例如
/en/api/projects.json。
每个响应都带 lang 字段("zh" / "en")可自查。
英文指南见 /en/agents。
{ "counts": { "skills": 42 }, "endpoints": { … }, "languages": { … } } { "count": 14, "items": [{ "slug", "title", "tech": [], "year", "loc", "persona", … }] } { …list 字段, "body_md": "## 是什么\n…" } { "count": 12, "items": [{ "title", "source", "url", "date", "summary" }] } { "count": 4, "items": [{ "slug", "title", "tagline", "url", "kind", "year" }] } { "count": 42, "items": [{ "slug", "name", "description", "source", "featured" }] } { …list 字段, "body_md": "本 skill 来源于…" } { "count": 3, "items": [{ "slug", "title", "week", "date_range", "summary" }] } { …list 字段, "body_md": "## 三个产品…" } { "name": "张路", "tagline", "bio", "tags": [], "permalink" } { "links": [{ "label", "url", "handle", "icon" }] } { "items": [{ "type", "slug", "title", "text", "url" }] } CLI
端点的薄包装。零运行时依赖,Node 18+,单文件 542 行。 更完整的 npm / npx 使用方式见 npm / CLI 专页。
「官方」的意思是:这个包由本站作者维护,源码就在本站同一个仓库的
cli/ 目录,和端点一起改、一起发。
本页显示的版本号是 build 时从 cli/package.json 读的,与 npm 上同源。
自己验一下(别信我,信 registry)
npm view zhanglu-net repository.url # → github.com/zhanglunet/zhanglu.net
npm view zhanglu-net dependencies # → 空(零依赖)
npm view zhanglu-net version # → 应与本页一致
⚠️ 注意包名是 zhanglu-net(带 -net)。
npm 上的 zhanglu 是别人 2021 年占的空包,与本站无关,别装错。
三种跑法,选一个
| 跑法 | 命令 | 要不要装 | 什么时候用 |
|---|---|---|---|
| npx | npx zhanglu-net <cmd> | 不用 | 默认选这个。每次自动拉最新版,偶尔用最省事;代价是首次要下载几秒。 |
| 全局装 | npm i -g zhanglu-net zhanglu-net <cmd> | 一次 | 你会经常用。启动没有下载延迟,装完离线也能跑(数据仍需联网)。要手动 npm up -g 升级。 |
| 跑源码 | node cli/bin/zhanglu-net.mjs <cmd> | clone 仓库 | 内网 / 无 npm 访问,或你想改它。零依赖,clone 完不用 install 直接跑。 |
三种跑法的命令、flags、行为完全一致 —— 下面的命令表对三者都适用。
命令
list <kind> 列出 skills / projects / articles / presentations / weekly get <kind> <slug> 读一条 skill / project / article / presentation / weekly search <keyword> 在所有内容里搜关键词 about 作者简介 + tags social 公开社交链接 endpoints 打印 manifest help <command> 看某个命令的详细帮助 通用 flags
--lang <zh|en> 取哪种语言的数据(默认 zh) --json 输出原始 JSON(agent 默认要的) --md get 时只输出 body_md --featured 只看 featured 项 --source <s> 按 source 过滤(list skills/articles) --status <s> 按 status 过滤(list projects) --type <t> 只搜某类型:skill|project|article|presentation|weekly|about --since <date> 按日期过滤(list articles) --limit <N> 最多 N 项 --base <url> 覆盖站点根(默认 https://zhanglu.net) 环境变量
ZHANGLU_BASE_URL 切换 base,本地 dev 用 http://localhost:4321 NO_COLOR=1 关 ANSI 颜色 Claude Code 集成
有个 /zhanglu skill,触发词包括「查张路的 skill」「zhanglu 上的 X」「张路在做什么项目」。Skill 会自动调 npx zhanglu-net。
其他 agent 接入
CODEX / OPENAI FUNCTION CALLING
把端点注册成 tool。每个端点是一次 GET。返回 JSON 直接喂给模型。
HERMES / OPENCLAW
支持 HTTP tool 的 agent 框架都能直接调。把 /api/index.json 加进 system prompt,agent 自己会找下一步。
MCP SERVER
目前没出。如果 Claude Code 之外的 MCP 用户多了,会在 Cloudflare Worker 上包一层 MCP server,复用现有端点。
浏览器端 (JS)
CORS 全开,fetch('https://zhanglu.net/api/skills.json') 直接用,无 preflight。
准入与授权
不用申请、不用 token。下面是这个站对爬虫和 agent 的明确立场 —— 写在 /robots.txt 里,机器可读。
User-agent: * · Allow: /
全站放行,不拦任何 AI 爬虫(ClaudeBot / GPTBot / CCBot 等都可以来)。
Content-Signal: search=yes, ai-input=yes, ai-train=no
- search=yes —— 欢迎建索引、返回链接与摘录。
- ai-input=yes —— 欢迎实时读取、grounding / RAG、生成回答时引用。这正是
/api/存在的理由。 - ai-train=no —— 不同意用于训练 / 微调模型。
遵循 Content Signals Policy。 一句话:可以读、可以引用我,请别拿去训练。
引用时请指回原页(每条数据都带 permalink)。
速率没有硬限制 —— 端点是静态文件,但请别拿它跑压测。