[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2j92gwhhdsx48":3},{"code":4,"message":5,"data":6,"timestamp":38},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":34,"homepage":35,"updated_at":36,"history":37},"qianshuixia\u002Fshrimpreel",14,"Open-source template for \"one photo → AI video that follows a viral template\" SaaS sites, one site per trending keyword. Cloudflare Workers + D1\u002FR2\u002FKV\u002FQueues, TanStack Start + Hono, Google sign-in, credit packs (Waffo\u002FDodo), fal.ai video generation, admin console.","TypeScript",264,103,58,4,[],"一份跑在 Cloudflare 上的 SaaS 模板，按热点关键词快速搭出「一张照片生成 AI 视频」的付费站点，登录、积分和支付已接好。","如果你想要一个能跑起来的 AI 视频付费站点骨架，并且愿意把它当作尚未验证的起点，可以看这个项目；作者明确说本地单元测试和 Playwright 端到端测试通过，但还没有作为正式站点上线过。\n\n## 解决什么问题\n\n看到某个「照片变成短视频」的玩法火了，通常要先拼好生成、登录、积分和收款，才能给用户看到第一条成片。真正耗时的是中间那层杂活：积分余额不能算错、第三方回调要处理、任务失败要退款、结果要发邮件通知。ShrimpReel 把这层现成做好了，开一个站点就是复制仓库、改配置和文案，再接上真实的支付与视频服务商。最终得到的是一个围绕单个热门关键词的可部署站点，而不是一个还要自己补账单和管理后台的原型。\n\n## 有什么不同\n\n核心机制是「一个关键词一个站点」：每个站点是独立仓库，把模板仓库设为 `upstream`，支付、安全和框架修复只在模板里改一次，再合并到各站点。同步时先用计划脚本和配套的 Claude Code skill（`.claude\u002Fskills\u002Fsync-upstream\u002F`）按层列出改动，合并后停在工作区等你检查。积分设计是另一个亮点：每次余额变化都和发放、余额更新写在同一个 D1 批次里，并带幂等键，所以重复的支付回调会整体回滚。购买的积分永不过期，注册赠送的积分默认按运行时设置的期限过期。生成走 fal.ai 并通过 webhook 回调 Worker，任务进队列并配死信队列，5 分钟一次的健康检查在失败率超阈值时给管理员发邮件。\n\n代价是整套东西绑在 Cloudflare 上：Workers、D1、R2、KV、Queues 都是硬依赖，邮件走仍处于公开测试阶段的 Cloudflare Email Service。README 也坦率说明视频目前没有烧录水印、没有 C2PA 清单，代码注释、ROADMAP 和 docs 暂时是中文。支付选择虽然多，但合规成本不同：Waffo Pancake 和 Dodo Payments 是记录商户（Merchant of Record），换成 Stripe 你就是商户，销售税要自己处理。\n\n## 谁值得试\n\n适合想快速试几个垂直 AI 视频站的小团队或个人，前提是愿意按「模板加分叉」的方式维护，并且用 `git merge` 同步而不是 squash 或 rebase。自带的 Claude Code skill 只是方便，不是必须：README 也写了手动流程，用同步计划脚本、`git merge` 和测试命令完成同样的操作。不适合需要已经过生产验证的部署、想用非 Cloudflare 基础设施，或者期望开箱即用、不用配置的成品应用的人。如果业务要求内容来源元数据，要注意 C2PA 仍标注为未实现。\n\n## 使用条件与边界\n\n上线前要做的事不少：每个站点单独创建 Cloudflare 资源（D1、R2、KV、两个队列），跑远程数据库迁移，把种子媒体传到 R2，在各个服务商控制台登记 OAuth 和支付 webhook 地址；npm 需要 11.19 或更新版本，旧版本会改写 `package-lock.json`，导致 CI 的 `npm ci` 报错。日常维护是双仓库模式：模板每次修复都要合并进每个站点，而且只有用 merge 同步，合并基准才不会错乱。最大的边界来自 README 自己的状态说明：本地测试通过，但还没有针对真实服务做完整的生产部署验证，[ROADMAP.md](https:\u002F\u002Fgithub.com\u002Fqianshuixia\u002Fshrimpreel\u002Fblob\u002Fmain\u002FROADMAP.md)列出了尚未核实的部分。没有自有域名又想测真实支付时，可以用[预发布配置](https:\u002F\u002Fgithub.com\u002Fqianshuixia\u002Fshrimpreel\u002Fblob\u002Fmain\u002Fwrangler.staging.jsonc)部署到 `workers.dev` 地址。\n\n## HotRepo 点评\n\nHotRepo 首次记录时项目只有 4 天，2026-10-25 在新项目榜（typescript）以 260 个总 star 排第 15，这是榜单排名，不是单日增长。目前只有两个记录日期，也没有可比的日榜历史，无法判断热度能否持续。投入时间之前，建议先看 ROADMAP.md，确认生产部署、fal.ai 回调和支付流程自 README 写完后是否已经在真实服务上验证过。",{"slug":19,"name":20},"media","多媒体与设计",[22,23,24,25,26,27,28,29,30,31,32,33],"ai-video","cloudflare-d1","cloudflare-r2","cloudflare-workers","fal-ai","hono","image-to-video","react","saas-boilerplate","saas-template","tanstack-start","typescript","MIT",null,"2026-10-25T02:51:10Z",[],1792915389]