[{"data":1,"prerenderedAt":220},["ShallowReactive",2],{"navigation":3,"blog-page":18,"blogs":29},[4],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Blog","\u002Fblog","blog",[9,13],{"title":10,"path":11,"stem":12},"这个站上线了","\u002Fblog\u002Fhello","blog\u002Fhello",{"title":14,"path":15,"stem":16},"我把机场订阅聚合搬到了 Cloudflare 上","\u002Fblog\u002Fsub-store-cloudflare","blog\u002Fsub-store-cloudflare",false,{"id":19,"title":20,"body":21,"description":22,"extension":23,"links":24,"meta":25,"navigation":26,"path":6,"seo":27,"stem":7,"__hash__":28},"pages\u002Fblog.yml","博客",null,"我的折腾记录和想法。AI 效率、开发、语言学习，偶尔写点别的。","yml",[],{},true,{"title":20,"description":22},"PcP2nh5y_uVjpBWHr7T8wjtz8Xhd_1jX4zG06usI6kA",[30,165],{"id":31,"title":14,"author":32,"body":36,"date":158,"description":159,"extension":160,"image":21,"meta":161,"minRead":162,"navigation":26,"path":15,"seo":163,"stem":16,"__hash__":164},"blog\u002Fblog\u002Fsub-store-cloudflare.md",{"name":33,"avatar":34},"陈大黄",{"src":35,"alt":33},"\u002Favatar.jpg",{"type":37,"value":38,"toc":150},"minimark",[39,43,54,58,61,64,77,80,83,87,90,111,114,117,120,123,131,138,141,144,147],[40,41,42],"p",{},"我用机场有三四年了，中间也自己搭过 VPS 节点。一直有个挺烦人的事：手里三五条订阅，加上自己搭的几台，分散在客户端里要一条条加，分流规则每个客户端又得重配一遍。换设备、换客户端、给家里人装一次，就再来一遍。",[40,44,45,46,53],{},"后来我想，订阅这件事没必要在客户端散着管。把它收拢成一条链接，规则在服务端定死，客户端只管订阅，事情就清爽了。Sub-Store 那套思路我之前就用，但它跑在自己服务器上，我嫌养护麻烦。所以这次自己写了个跑在 Cloudflare 上的版本，叫 sub-store-cloudflare，开源在 ",[47,48,52],"a",{"href":49,"rel":50},"https:\u002F\u002Fgithub.com\u002Frealchendahuang\u002Fsub-store-cloudflare",[51],"nofollow","GitHub","。",[55,56,57],"h2",{"id":57},"它其实就干一件事",[40,59,60],{},"把多个订阅源揉成一条订阅。",[40,62,63],{},"具体说，你可以往里面塞几样东西：",[65,66,67,71,74],"ul",{},[68,69,70],"li",{},"几个机场的订阅链接",[68,72,73],{},"自己 VPS 上的节点文本（vless、trojan、ss、vmess 都行）",[68,75,76],{},"临时粘一段节点进来也行",[40,78,79],{},"这些进站后 Worker 会去拉、去重，按你给的规则筛一遍，再按需要改名、补国旗、解析域名。出来之后塞进一个组合订阅里，客户端订阅这一条就够了。",[40,81,82],{},"规则这块我放进了服务端。内置了几个常用的 Mihomo 模板，acl4ssr、loyalsoldier 白名单黑名单、ai-streaming 之类的，分流组、规则集都在云端配好。你把订阅丢进 mihomo \u002F clash、surge、sing-box、shadowrocket 这些客户端，下载下来就是带好分流规则的成品，那边不用再手动写规则、维护规则集 URL。",[55,84,86],{"id":85},"为什么非要放-cloudflare-上","为什么非要放 Cloudflare 上",[40,88,89],{},"原因很实在：",[65,91,92,99,105],{},[68,93,94,98],{},[95,96,97],"strong",{},"不要服务器。"," Workers + D1，免费额度对个人够用，服务器钱和养护都省了。",[68,100,101,104],{},[95,102,103],{},"workers.dev 那个域名本身就在墙外。"," 你客户端连过去抓订阅这一步是通的，不存在“服务器在境外、节点拉订阅还要梯子”这种套娃。",[68,106,107,110],{},[95,108,109],{},"部署完就是 Web 管理界面加一个下载端点。"," 手机换客户端也能开网页改配置。",[40,112,113],{},"技术栈我刻意保持小：Worker + Static Assets + D1 + Worker Secrets。KV、R2、Durable Objects、Queue、Cron 都不在核心路径里，能少一样少一样。",[55,115,116],{"id":116},"部署特意做了两条路",[40,118,119],{},"第一条是给想用的人：点仓库里的 Deploy to Cloudflare 按钮，Cloudflare 自己拉仓库、建 Worker、建 D1、问你要两个 token，部署完给你一个带 token 的管理链接。一步步来，不用碰命令行。",[40,121,122],{},"第二条是给我自己也给爱折腾的人：AI Agent 一键装。",[40,124,125,126,130],{},"仓库里带了 agent 协议（AGENTS.md + agent 里的 SKILL）。你把订阅源、要做的组合订阅、想用的规则模板写进一个本地配置文件，跑 ",[127,128,129],"code",{},"pnpm run install:cloudflare","，agent 会替你检查 Cloudflare 登录、建库、写 secret、迁移、部署、导入配置、验证链接，最后把管理链接和下载链接交到你手上。",[40,132,133,134,137],{},"我自己就是用这条路上的线，所以更推荐这条，省心。给 Codex \u002F Claude Code 用的时候，直接复制仓库里 ",[127,135,136],{},"agent\u002Finstall.prompt.md"," 那段提示词就行。",[55,139,140],{"id":140},"适合谁",[40,142,143],{},"直说：手里不止一个机场、再加上自己搭的几个节点、想合成一条订阅自用的，就是这个项目的目标人群。你就一个机场将就用，那真没必要上这个。",[40,145,146],{},"代码全开源，AGPL。前端的交互思路致敬了原版 Sub-Store，原版跑在容器里、覆盖更多客户端生态，我做的是更小的 Cloudflare-native 形态，方便自己改也方便直接部署，不是逐项复刻。",[40,148,149],{},"感兴趣的可以去仓库翻翻，README 写得挺全，照着部署就行。",{"title":151,"searchDepth":152,"depth":152,"links":153},"",2,[154,155,156,157],{"id":57,"depth":152,"text":57},{"id":85,"depth":152,"text":86},{"id":116,"depth":152,"text":116},{"id":140,"depth":152,"text":140},"2026-06-28","多个机场加自建节点揉成一条订阅，分流规则在服务端配好，客户端只管订阅。","md",{},4,{"title":14,"description":159},"R0__sjRt87IQbTlvilXapwLo5DCrMLbrUmAXJfL865E",{"id":166,"title":10,"author":167,"body":169,"date":214,"description":215,"extension":160,"image":21,"meta":216,"minRead":217,"navigation":26,"path":11,"seo":218,"stem":12,"__hash__":219},"blog\u002Fblog\u002Fhello.md",{"name":33,"avatar":168},{"src":35,"alt":33},{"type":37,"value":170,"toc":212},[171,174,177,196,199],[40,172,173],{},"这个站上线了。",[40,175,176],{},"我叫陈大黄，前 AI 产品经理，现在做独立开发者。这个站放我的东西：",[65,178,179,185,191],{},[68,180,181,184],{},[95,182,183],{},"Playbook","——我整理的实战手册。不是抄官方文档，是自己踩完坑整理的实操路径。现在有 Cloudflare 和 macOS 两本，都在持续更新。",[68,186,187,190],{},[95,188,189],{},"Agent Skill","——给 AI 编码助手装的能力包。做了两个：一个去中文 AI 味，一个给文本加模型风格的味。",[68,192,193,195],{},[95,194,20],{},"——折腾记录，偶尔写。",[40,197,198],{},"做的东西不讲虚的，能用、能跑、能帮你省时间就行。",[40,200,201,202,207,208,53],{},"想找我，X 上是 ",[47,203,206],{"href":204,"rel":205},"https:\u002F\u002Fx.com\u002Frealchendahuang",[51],"@realchendahuang","，代码去 ",[47,209,52],{"href":210,"rel":211},"https:\u002F\u002Fgithub.com\u002Frealchendahuang",[51],{"title":151,"searchDepth":152,"depth":152,"links":213},[],"2025-06-24","陈大黄的个人站上线。放我的 Playbook、Agent Skill 和折腾记录。",{},1,{"title":10,"description":215},"hW3lYSnI9lSytjc-Q2XpGrZY7hZ5TDiEa5k-WaBHPhE",1782658473674]