← AI实践
CASE · AI × CONTENT ENG

粲粲小故事
从 Agent 到上线的内容工程

粲粲小故事是一个正在运行的亲子故事网站:53 篇故事、云端预制音频、静态托管在阿里云 OSS。 本文复盘支撑它的内容工程——生产流程、技术架构、发布管线与运行数据。 文中数字来自仓库统计与部署日志,均可复核。

Agent 协作 技术架构图 TTS / 文生图 OSS 发布
实践复盘 · 2026 年 7 月 30 日发布 · 7 月 31 日修订 · 产品线上:kukuhalu.com

1. 背景与约束

粲粲小故事面向 3–8 岁家庭:免费网页、无需注册、插画 + 旁白 + 轻互动,单次 3–8 分钟。 真正难的不是生成一段文本,而是约束叠在一起还能持续更新:

难点不在「能不能生成一段文本」,而在「能否每周稳定产出可上线的故事包」——文案、音频、封面、播放页、目录数据、部署,六件事同一条流水线。

2. 技术架构

工具链经历过 WorkBuddy 起盘 → Cursor 工程化 → 阿里云生成与托管三个阶段。当前形态分三层:

3. 生产流程:从选题到上线

选题 brief系列口径
Agent 草案文案 / 场景 / 提示词
人工锁定听一遍 · 看一遍
批量生成图 + TTS
入库 + 目录故事包可点可听
deploy.sh上线

文案:先锁规则,再生成

科普系列强调拟人化与短句;成语系列按二三年级可读性写;回忆系列用第三人称东北童年小事 +「猜猜看」互动。 Agent 可以起草,但系列口径、年龄、互动形态必须先写进 brief / scene-sheet,否则后面的图和声都会跟着漂。

图:角色卡 + 风格锁 + 负面词

批量出图靠三层约束而不是逐张改 prompt:角色卡固定角色外形,风格锁统一系列美学(黏土定格 / 写实封面), 负面词挡住写实 NASA、恐怖氛围、文字水印等儿童产品禁忌。系列之间允许换风格,系列内部不允许换脸。

声:云端预制,浏览器降级

主路径是本地脚本调 DashScope,把旁白预生成成音频文件随故事包发布;播放失败时降级到 Web Speech。 线上首屏因此不依赖任何实时合成服务。

4. 运行数据与成本

截至 2026-07-31,从仓库与日志可复核的数字:

指标数值口径 / 来源
上线故事53 篇(成语 27 · 科普 15 · 回忆 6 · 宇宙 4 · 生活 1)src/js/stories-data.js 条目数
预制音频257 段 · 123 MB,覆盖 20 个故事目录stories/*/audio/ 文件统计
入库插画7 张 · 5.5 MBstories/*/images/;早期互动篇走 CSS 呈现
旁白成本单篇约 1,400–2,000 字符 ≈ 0.11–0.16 元Qwen3-TTS-Flash 刊例 ¥0.8 / 万字符
单次增量部署147 个文件 · 7.5 MB · 87 秒2026-07-17 部署日志

成本结构很简单:TTS 按字符、文生图按张、OSS 按存储与流量。目前全部云端旁白折合约 3.4 万字符, 按刊例价累计 3 元以内;插画用量极小(7 张)。对一个小体量静态站,生成与托管合计是「几元级」月度成本—— 这也是选择「本地预制 + 静态分发」而不是「在线实时生成」的直接原因。

价格为 2026 年 7 月刊例,以阿里云百炼官方页为准;本文只用它说明量级,不构成报价。

5. AI 协作方式

Agent 最有用的不是「替你讲完故事」,而是把重复劳动变成可审查的产物,让人只在关键节点拍板。

澄清产品边界

免费 / 无账号 / 短时长 / 亲子共听。边界先定,后面「要不要加社区、要不要实时生成」才不会把架构拖歪。

起草与对照

大纲、分支点、旁白分段、封面提示词并排草案;人听一遍、看一遍,再锁定定稿。

批量改工程

口径一锁:生成脚本、播放页、stories-data、部署排除规则一起改——改的是工厂,不是单篇稿子。

发布复盘

方法写回 AI实践(本页)。产品站给人听故事,知识站给人复用方法,两条线分开运营。

协作节奏 定位 → brief → 生成草案 → 人锁定 → 入库 → 部署。跳过「锁定」,后面只会用更多生成次数掩盖口径漂移。

6. 发布工程

线上只走阿里云 OSS → kukuhalu.com,入口永远是 tools/deploy.sh。细节决定能不能「每天敢点一次」:

cd little-story bash tools/deploy.sh # → rsync 暂存筛选 → ossutil 增量上传 → 入口强制刷新 → CDN 刷新
可用性标准 发布步骤若不能在一页 README 里写清,就不算工程完成——只是「记得的人手动能传上去」。

7. 踩过的三个坑

都是真实发生过的故障,按「现象 → 原因 → 修复」记录:

  1. 新故事发布了,首页看不到。 轮播曾要求每篇必须有封面图,无封面的新故事被静默过滤。 修复:轮播改为按日期排序,无封面时用渐变 + emoji 回退;分类列表同步按日期降序。
  2. 部署命令报错无法上传。 ossutil 的 --exclude 不接受目录路径(如 tools/*)。 修复:改用 rsync 先把文件筛进暂存目录,ossutil 只负责上传——排除规则从此可靠。
  3. 用户端内容陈旧。 PWA service worker 长期持有旧缓存,新部署不可见。 修复:sw.js 缓存版本号随发布递增,入口文件强制 no-cache

三条教训指向同一件事:内容工程的风险大多不在生成质量,而在「最后一公里」的缓存、筛选与目录数据。

8. 方法清单与线上入口

产品本身已经在跑:粲粲小故事 · 作者页 · AI实践。 如果你在做类似方向——内容工程、AI 批量生成与发布管线——欢迎带着你的场景来交流(作者页有邮箱)。

Ivan · AI实践  ·  返回 AI实践  ·  粲粲小故事