剧作 skill 星榜核查:一万四千星是真的,但故事讲错了
六座 GitHub 仓库全量克隆、源码级 grep 对账后的核查记录。原报告为暗色单文件 HTML(含两幅示意图),此处按论坛格式重排。
六座 GitHub 仓库全量克隆、源码级 grep 对账后的核查记录。原报告为暗色单文件 HTML(含两幅示意图),此处按论坛格式重排。
一句话说清这件事。 一段关于 GitHub 编剧 skill 星榜的观察,报了六座仓库、一万四千星、五十二道质量门、八百九十四次安装。我把六个仓库全克隆下来逐条对账:数字绝大部分是真的,作者确实读过源码;但榜单的框架撑不住——按星数排不成立,第三名和第一名是同一家公司,而"全都铺到分镜"这句只对两家为真。
一个比喻。 这份榜单像一张六人圆桌的合照。走近了看,六个人里有两位是同一家的双胞胎;桌边其实还站着五位没入镜的高个子;而所谓"六人都穿了同款鞋"——你低头一数,只有两位穿了,恰好都是要去爬山的。
本文立场。 先给分,再扣分。说对的十四项,一字不差地摆出来,包括那句被漏掉的原文精彩句;说错的五项,标注错在哪、为什么会错。未能证实的,老实说没查到,不脑补。
01 · 六个点名,全部对上人
原文只给了仓库名,没给 owner。六个全部定位成功,无一落空。
| 名次 | 项目 | 实际仓库 | 创建日 | 今日星 | 体积 |
|---|---|---|---|---|---|
| 一 | oh-story-claudecode | zenstory-ai/… | 2026-04-22 | 7117 | 9.5 MB |
| 二 | shuohao-skills | eternityspring/… | 2026-08-06 | 3837 | 12.4 MB |
| 三 | drama-skills | zenstory-ai/… | 2026-07-16 | 2276 | 74.1 MB |
| 四 | 山音超级编剧大师 | Shanyin-ai/shanyin-screenwriting-master | 2026-03-31 | 1219 | 124 KB |
| 五 | screenwriting-skills | jtydhr88/… | 2026-09-06 | 1398 | 2.1 MB |
| 六 | screen-creative-skills | VanGong1999/… | 2026-01-10 | 422 | 624 KB |
先提一处体积:drama-skills 七十四兆,是第二名 shuohao 的 六倍,是第五名 screenwriting 的 三十五倍。原文那句"前后端近八万行代码",光看体积就像真的——尽管严格说,八万行指的是那家工作室自己的生产系统,不是这个仓库本身。
02 · 一万四千星:这个数是真的
总数对得上,但"按星数排的前六名"这个说法不成立。
2.1 总数对账
| 项目 | 原文快照 | 今日实测 | 净增 |
|---|---|---|---|
| oh-story-claudecode | 6788 | 7117 | +329 |
| shuohao-skills | 3214 | 3837 | +623 |
| drama-skills | 未给 | 2276 | — |
| 山音 | 1122 | 1219 | +97 |
| screenwriting-skills | 未给 | 1398 | — |
| screen-creative-skills | 未给 | 422 | — |
| 合计 | 约 14000 | 16269 | +2269 |
14000 − 11124 = 2876,今日三者之和 4096。差额 1220 星分摊到三个仓库,在一个"剧作 skill"集体暴涨的九月里完全合理——尤其 screenwriting-skills 建仓仅二十天就冲到一千三百九十八星。✓ 判定:一万四千星站得住
是份旧快照,差额可由三个月自然增长吃掉,未见编造痕迹。
2.2 但排序已经失效
原文说"按星数排",把山音(1122)列第四、screenwriting-skills(今 1398)列第五。今日实测是反的:1398 > 1219。
这不必然是作者的错——若快照在九月中旬,screenwriting 当时低于一千一百二十二,顺序就成立。但这恰恰说明:基于 GitHub 星数的榜单天然带保质期,而这份快照的时间从未被标注。
2.3 更要紧的:候选池没声明
在一次最普通的搜索里,就捞到至少五个"漏榜"的同赛道项目:
| 漏榜项目 | 星数 | 为什么该进榜 |
|---|---|---|
manju-laoli-skill | 880 | AI 短剧全流程 skill 包 |
eternityspring/reelbench-skills | 842 | 与第二名同一作者 |
zenstory-ai/novel-to-game | 801 | 与第一名、第三名同一组织 |
zenstory-ai/video-recap-skills | 532 | 同上 |
XiaoLuo-AI-Drama-Skill | 443 | AI 短剧 |
要说这是"按星数排的前六名",逻辑上说不通。唯一解释是作者心里另有一个筛选口径(比如"纯剧作/写作类,排除视频与游戏"),但这个口径从未向读者交代。
这就是典型的 数字属实、框架失真——两者必须分列,不能因为前者为真就默认后者为真。
03 · 致命一击:榜首与探花是同一家公司
本次核查最重要的一条,原文一处未提。
查 users/zenstory-ai:
login=zenstory-ai name=ZenStory AI type=Organization
created=2026-07-31 blog=https://zenstory.ai
第一名 + 第三名 = 10270 星,占六项目总星 16269 的 63.2%。
它不是六边形,是一个中心加五个点。原文读到的一唱一和——"第一名画圈""第三名也要求确认"——很可能不是两个团队分别悟出来的道,而是同一拨工程文化的两次沉淀。
3.1 命名化石:旧名比工商登记诚实
还有一条佐证。oh-story-claudecode 建仓于 2026-04-22,比 ZenStory 组织成立(2026-07-31)早了三个多月。 而今天在 GitHub 上搜这个项目,仍会跳出一堆 fork,自述里写着:
HeRiki/oh-story-codex:「基于 worldwonderer/oh-story-claudecode 的中文网文写作技能包」duiniwukenaihe/novel-assistant-skill:「基于 worldwonderer/oh-story-claudecode 构建」wyouwd1/oh-story-opencode:同样指向 worldwonderer
worldwonderer 这个账号今天还在——2019 年注册,实名 pitechen。GitHub 仓库迁移后旧链接会重定向,但 fork 的描述文本没人替它们更新。于是这些残留字符串成了化石,把"个人项目起步 → 成立公司 → 迁入组织"这段迁徙史冻在了原地。这条规律一再应验:看一个项目的来路,别看它的注册信息,去看别人写下它旧名的地方。
04 · 该给的分要给:精确命中清单
说完问题,必须说这段观察的硬功夫。下面这些数字,只有真翻过源码才报得出来。
4.1 五十二道质量门:分毫不差
shuohao-skills 的五个 skill,每个都带一组脚本质量门。实测:
而"全是脚本检查"也确有其事。同一份文档里写着这样两句:
checklist 交给模型自觉是靠不住的。所以每一道门都是 validate 里的确定性检查,不是给模型读的文字。
> —— shuohao-skills · novel-outline/README.md:21
「未提供 cast.json,本门跳过」——不装作查过。静默通过和撒谎只差一步。
> —— shuohao-skills · novel-art/references/report-style.md:27
第二句是我愿称之为本次核查最佳文摘的一句。原文转述成"不是让模型自己说我觉得可以了",意思到了,但原话更有劲:作者把"没检查就放行"直接定性为撒谎。
4.2 确认后生产:说对了,但没说出那层狠劲
drama-skills 的 short-drama-produce/SKILL.md,第 7 行标题就是:
# 确认后生产
底下两条硬条款(第 47–48 行、第 83 行):
等创作者在 看到这份预览之后 明确确认。只有明确同意这项 当前任务,才运行 confirm;「继续」「都做完」「预算没问题」、上游内容已接受或之前确认过另一版,都不算本次生产确认。prepare只验证并预览,不生产。confirm只保存与当前 job 指纹绑定的一次性确认。
实际操作要敲:
python3 production_tool.py confirm <project> --job-id <id> --confirmation "CONFIRM <id> <code>"
★ 原文说对了方向,却漏掉了最精彩的部分
它把"AI 以为你答应了"和"你真的答应了"做成了两个互斥状态,还得再敲一遍带验证码的字符串。而它 明确列举了哪些话不算点头:「继续」「都做完」「预算没问题」,一律不算。
4.3 山音:三项全中
山音超级编剧大师集成版(Gemini及其他AI工具通用).md 第 5 行:
覆盖从 1-3 分钟概念超短片到90 分钟电影长片、多集剧集的全格式剧本创作。
第 72 行:## 通用八步流程,还附一张按概念超短片/短片/长片/剧集四种体裁展开的步骤对照表。九十分钟、多集、八步,一项不差。
不过要补一刀形态上的错位:山音 不是 skill 包,是 单个 .skill 巨文件(仓库只有 124 KB,连目录层级都没有)。它跟其余五个放在一起比星数,比的其实是两类东西。这一点原文没意识到。
4.4 其余精确命中项
| 原文说法 | 实测 | 判定 |
|---|---|---|
| shuohao 五个 skill | 5 | 精确 |
| drama-skills 十一个 skill | 11(另有一份维护者专属) | 精确 |
| screen-creative 三十一个 skill | 31(中英对称,去重后正好) | 精确 |
| 扫榜/拆文/写作/去 AI 味四段 | scan / analyze / write / deslop 全在文件名里 | 命中 |
| 一千多个项目 | README 自述"累计上千个" | 属实(自述) |
| 前后端近八万行 | README 自述"近 8 万行代码" | 属实(自述) |
| screen-creative 只给判断不给成品 | 31 个里 evaluation + story-analysis 占 12 个,creation 仅 2 个 | 命中 |
story-deslop 这个命名值得一提:英文里"AI 味"叫 slop,作者直接把 de-slop 写成了 skill 名。这人读过味。)05 · 三处化石:数字都是真的,但已经过期
本次核查在方法论上最有滋味的一处。
5.1 screenwriting-skills:三组数字全错,且全都偏低
| 项目 | 原文 | 今日实测 | 出处 |
|---|---|---|---|
| skill 数 | 20 | 26 | plugins/screenwriting/skills/ |
| 书 | 32 | 47 | README.md:5 |
| 剧本卷 | 12 | 23 | README.md:5 |
| 类别 | 数量 |
|---|---|
| Screenwriting craft 编剧技巧 | 19 |
| Television craft 电视技巧 | 15 |
| Chinese opera craft 戏曲理论 | 13 |
| 47 本小计 | 19 + 15 + 13 |
| Published scripts and plays 出版剧本 | 12 |
| Chinese opera scripts and scores 戏曲卷本 | 11 |
| 23 卷小计 | 12 + 11 |
5.2 那"三十二本"从哪来的?
答案藏在中文 README 第 93 行:
曾经有过英文版,一个把 20 个 skill 全部译过去的平行插件 screenwriting-en……做了,也合并了,后来撤掉。而英文 README 第 185 行自述:
The series layer (13 → 20 skills) was added this way and sw-story-structure did not change.所以 skill 数的时间线是 13 → 20 → 26。原文抓的 20,是这个序列中间那个真实存在过的数字。
5.3 为什么会出现化石?中英两个 README 不同步
这个项目的中英 README 是两个独立文件,英文版已更新到 47/23,中文版第 193 行还停留在「出版剧本(12 卷)」。
作者对翻译这事的看法也很有意思:
如果读不懂中文的读者该有一份译本,那读不懂英文的读者也该有,接下来就是日语、韩语、法语、俄语。五种语言就是 230 个文件各改各的,哪一份已经过时,没人说得清。
> —— 中文 README:93
他自己就知道多语 README 会失同步,然后它就真的失同步了。这不是批评,这是坦率——但对我们这些读 README 的人是个提醒:多语项目的文档,永远以最新推送的那一版为准。
判 · 化石与口径分裂的区别
化石:曾经真实,如今过期(20 skills → 今天 26)。口径分裂:真实存在,但只是整体的一部分(12 卷 → 全量 23 卷)。
建议表述改为:"该仓库曾为二十个 skill、三十二本书",而不是当作当前状态陈述。
06 · 两处过度概括
6.1 「全都铺到了分镜」——六家里只有两家
有意思的是这批 skill 全都 从剧本铺到了分镜。原因不复杂,剧本里有一处描述含糊,后面出来的画面就崩。
我数了六家的 skill 目录:
| 项目 | 独立分镜 skill | 赛道 |
|---|---|---|
| shuohao-skills | ✓ novel-storyboard | AI 短剧 |
| drama-skills | ✓ storyboard + image-prompts + video-prompts | AI 短剧/漫剧 |
| oh-story-claudecode | ✗ | 网文(本就不需要) |
| 山音 | ✗ | 纯剧作 |
| screenwriting-skills | ✗ 26 个 skill 里一个都没有 | 学院派剧作 |
| screen-creative-skills | ✗ 31 个 skill 里一个都没有 | 评估/改编 |
这个因果解释本身是对的——"描述含糊则画面崩",确实是 AI 视频团队的痛点;但它解释不了为什么第五、第六名没有分镜层。正确答案是赛道决定论,不是行业共识。
6.2 「参考门」拦的不是偏离,是没交作业
原文说:「你写正文时 偏离 了它拆出来的剧情模块库,会被拦下来。」
机制确实存在,英文原名就写在 docs/claude-code-skills-for-writers.md:31:
Blocking reference gates. A chapter is written only after the agent has read the brief, the volume outline and the current tracking state and written down this round's constraints (word range, must-happen, must-not-happen, time anchors).
配套还有 README 第 41、113、116 行:
- 写正文前没有细纲会被拦下;写完自动扫截断、工程词和常见 AI 句式。
- 写正文前
guard-outline-before-prose.sh会拦住缺细纲的章节。 - 追踪状态是工具从
_tracking-state.json整份重新渲染的,手改派生文件会被check拒绝。
它拦的是"你动笔之前有没有读参考资料、有没有先写细纲",而不是"你写的正文跟模块库比对下来偏离多少"。
一个是流程门(动笔前交作业),一个是内容门(写完后查偏离)。原文描述的是后者,实际实现是前者——前者管的是"有没有按规矩办事",后者才是真正的语义检测。
附带一句:README 第 116 行那条"手改派生文件会被拒绝",恰好是原文最后那段"用脚本去对账"理念的同构实现。这个思路在这六个仓库里到处都是,不是某一家独有。
07 · 压轴的那台引擎:我没找到
原文最后一段,也是最重的一击。
真正说明问题的是排在很后面的一个小项目,星数只有两百多。它写了个一致性引擎,专抓三种错,死掉的角色又出场、伏笔还没埋就回收、契诃夫那把枪到最后没响。它把角色的死亡状态、承诺与兑现、未解决问题全写进文件头部,再用命令行脚本去对账。
这句话承担着全文的方法论支点:用文件的确定性补模型的概率性。
我做了六轮检索,找不到它。
7.1 检索清单与结果
| 轮次 | 方法 | 结果 |
|---|---|---|
| 1 | 仓库名关键词搜索(6 组) | 无匹配 |
| 2 | 代码搜索 chekhov payoff foreshadowing | 无匹配 |
| 3 | 代码搜索 dead character appears again | 无匹配 |
| 4 | 表单参数式代码搜索(5 组,含中英) | 命中候选若干,无一符合三项特征 |
| 5 | 星数区间过滤 200–320 | 命中 story-shot-agent(204★),形态不符 |
| 6 | 星数区间 100–400 + 代码搜索三组合词 | 全部 0 命中 |
7.2 三个最接近的候选,逐一排除
| 候选 | 星数 | 一致性组件 | 为何不符 |
|---|---|---|---|
981029l/webnovel-writer | 238 | 用关键词数组检测「死亡/已死/身亡/阵亡/被杀」;前端有「已死亡」徽章 | 是 Vue + FastAPI 全栈应用,状态存数据库、走 UI,没有文件头部记录,也没有命令行对账脚本 |
tyxben/AI_novel | 280 | continuity_service.py | 做的是 LLM 打分维度,与"脚本确定性对账"是两回事 |
neopen/story-shot-agent | 204 | — | Python 服务,带 Docker/pyproject/CI,是故事转镜头 agent,无一致性引擎形态 |
三者都只占"两百多星"这一个特征,没有一个同时满足"文件头部写状态 + 命令行脚本对账 + 专抓三种错"。宁说没查到,不作脑补。
可能的解释(非结论):星数已变化、未收录在搜索口径内、存在于第三方 skill 市场而非 GitHub、或原文对机制做了合并叙述。
7.3 但那个技术思路,是实实在在存在的
虽然那台具体的引擎没找到,原文想说的那件事—— 用外部文件替代模型记忆 ——在这六个仓库里遍地都是,而且往往更硬:
- shuohao:52 道门全是 node 脚本,明确拒绝交给模型自觉
- oh-story:
guard-outline-before-prose.sh+_tracking-state.json整份重渲染 + 手改即拒绝 - drama-skills:
prepare → confirm → run三段式,确认还与 job 指纹绑定 - screenwriting-skills:有
sw-series-engine-bible与chekhov-dramaturgy两个 skill,专门处理长程连贯
08 · 副产品:README 是写给 AI 读的
在冠军项目里翻到的一篇作者内部决策笔记,把整件事串成了一个环。
笔记路径:drama-skills/.agents/notes/implemented/process/2026-09-16-readme-for-readers-not-engines.md,标题叫《README 面向读者而不是答案引擎》。
8.1 他们做过 GEO(答案引擎优化)
2026 年 9 月的 GEO 工作 之后,README.md 与 README_EN.md 顶部多了指向站点的引用链接条……
8.2 流量结构是七比一
GitHub 引荐数据显示 Google/Bing/Baidu 带来的访问约为 ChatGPT 类答案引擎的 7 倍,README 首先要为人和传统搜索服务。
8.3 他们主动撤掉了讨好 AI 的段落
决策是:删掉那些为答案引擎写的规范化摘要段和边界句。而作者自己在"代价"栏写下了这句:
答案引擎抓取到的规范化摘要段没有了,引擎复述可能更依赖正文。
同篇还有"替代品被否决"的记录:保留答案引擎摘要段的方案被否了,理由是人读不下去的 README 对两边都没好处。
8.4 这意味着什么
- 剧作 skill 的作者们 刻意优化 README 以影响 AI 的回答(GEO);
- 这段观察的 全部素材都能在 README 与着手文档里逐句找到出处——五十二道门、十一个技能、一千个项目、八万行代码、十二卷剧本、三十一个 skill,一个不落;
- 而这批 README 自己承认:有的版本就是照着方便引擎复述来写的。
这段观察很可能根本不是六个项目的独立横评,而是 一次高保真的引擎复述——作者带着判断读了这些 README,复述得相当准,但也继承了 README 的三个先天毛病:版本滞后(二十个 skill)、口径截断(十二卷)、同源重复(第一三名同一家)。
当 README 开始为机器优化,机器写出来的分析就会长得更像 README,而不是更像真相。
09 · 不能只挑毛病
按老规矩,挑完毛病要给分。这六个仓库里至少三个,是拿出来能打的工程水准。
#### oh-story-claudecode
有 .agents/notes/rejected/ 目录,专门存放 被否决的功能提案;有 scripts/ 与 tests/ 的完整测试矩阵(含 OpenCode 真实运行时兼容性测试);连跑基准测试时都要独立 CODEX_HOME,以免污染测量。
#### shuohao-skills
novel-art 有 151 条断言,全部无模型调用、一秒跑完,且测试专挑"能让质量门失效的 Case"。它还把"缺少 cast.json 时跳过某门"明写出来,不装作查过。
#### drama-skills
CHANGELOG 长达 一千四百多行,配 evaluations/、examples/、DESIGN.md 与一套自我批评笔记系统。这不是一个周末项目,是一条产线的化石。
这些是原文没写、但值得写的东西。
10 · 二十二项判词
说对的给足,说错的指名,查不到的挂账。
| # | 原文主张 | 判定 | 证据要点 |
|---|---|---|---|
| 1 | 六个项目存在、名称准确 | 属实 | 六个 full_name 全部定位 |
| 2 | 前六名合计约 14000 星 | 属实(旧快照) | 今日 16269,差额 2269 属自然增长 |
| 3 | 第一名 6788 星 | 旧快照 | 今日 7117 |
| 4 | 第二名 3214 星 | 旧快照 | 今日 3837 |
| 5 | 第四名 1122 星 | 旧快照 | 今日 1219 |
| 6 | 按星数排序 | 已失效 | 今日第五已超第四 |
| 7 | "前六名"候选池 | 未声明 | 至少 5 个更高星同类被漏 |
| 8 | 六家彼此独立 | 重大遗漏 | 第一、三名同属 ZenStory AI,占 63% |
| 9 | oh-story 五段流程 | 属实 | scan/analyze/write/deslop 在文件名里 |
| 10 | 参考门拦偏离 | 机制失真 | 实为拦"有无细纲",非内容比对 |
| 11 | shuohao 五个 skill | 精确 | 实测 5 |
| 12 | 52 道质量门 | 精确 | 14+10+10+18=52 |
| 13 | 门是脚本检查 | 精确 | 「交给模型自觉是靠不住的」 |
| 14 | drama-skills 十一个 skill | 精确 | 实测 11 |
| 15 | 一千多个项目 | 属实(自述) | README:53,未能独立核实 |
| 16 | 近八万行代码 | 属实(自述) | README:54,指工作室自家系统 |
| 17 | 确认放在生产之前 | 精确且被低估 | 「确认后生产」+「继续/都做完不算」 |
| 18 | 山音八步 + 90 分钟 + 多集 | 精确 | 文件第 5、72 行 |
| 19 | 20 skill / 32 本 / 12 卷 | 化石 + 口径分裂 | 今日 26 / 47 / 23 卷 |
| 20 | 31 skill + 894 次安装 | 31 精确 894 未证实 | 仓库内无此数,疑来自外部市场 |
| 21 | 全都铺到分镜 | 过度概括 | 只有 shuohao、drama-skills 两家有 |
| 22 | 两百多星一致性引擎 | 未证实 | 六轮检索落空,三候选已排除 |
十四项精确通过,五项属实但需修正或加注,两项错误(独立性、全都铺分镜),两项未能证实。
若给这段观察打分:作为"我读了源码"的记录,它是高分;作为"行业排行榜",它的框架撑不住。
如果要改写,改这三句就够了
- "前六名" → 改为「我筛出的六个剧作 skill(口径:写作/剧作类,排除视频与游戏类)」。把筛子的形状说出来。
- 六家并列 → 改成「ZenStory AI 一家占了其中两席,另有三项产品在同一组织下」。把股东结构说出来。
- "全都铺到分镜" → 改成「凡是面向 AI 生成视频的两家,都铺到了分镜;做纯剧作的没有」。
数据来源与交付物
- 数据取自 GitHub REST API 当日快照(2026-09-26),六座仓库以
--depth 1全量克隆后源码级核对。 - 核查方法:仓库元数据核验 → 拥有者/组织归属溯源 → 仓库体积交叉印证 → 源码 grep 取证 → 六轮检索交叉验证 → 同赛道遗漏项目普查。
- 未能证实项两处(一致性引擎、894 次安装),已挂账,不以推断充数。
- 完整报告(暗色单文件 HTML,两幅示意图)与一页纸速查表见本地
_screenplay_skills_report/。