Story Multi-Perspective Review
zenstory-ai/oh-story-claudecode
Reviews Chinese web-novel text with several reviewer agents in parallel, falling back to a single-agent pass, and reports structure, character, prose and setting problems with fixes.
给 AI 短剧写剧本:把 novel-outline 的分集梗概落成结构化的场次 + 节拍流(动作节拍与台词行交替), 台词逐句带说话人与语气,时长逐集按语速确定性折算。产出 script.json + Markdown + 单页评审报告 (时长仪表 / 分集剧本 / 场次总表 / 按角色聚合的台词本,含导出 JSON)。
$ npx skills add eternityspring/shuohao-skills --skill novel-script -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install eternityspring/shuohao-skills novel-script --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/eternityspring/shuohao-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/novel-script .claude/skills/novel-script && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "novel-script" agent skill from https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script into .claude/skills/novel-script/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "novel-script", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-scriptType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add eternityspring/shuohao-skills --skill novel-script -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install eternityspring/shuohao-skills novel-script --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eternityspring/shuohao-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/novel-script .agents/skills/novel-script && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "novel-script" agent skill from https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script into .agents/skills/novel-script/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "novel-script", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add eternityspring/shuohao-skills --skill novel-script -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install eternityspring/shuohao-skills novel-script --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eternityspring/shuohao-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/novel-script .cursor/skills/novel-script && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "novel-script" agent skill from https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script into .cursor/skills/novel-script/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "novel-script", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/eternityspring/shuohao-skills.git --path skills/novel-script--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add eternityspring/shuohao-skills --skill novel-script -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install eternityspring/shuohao-skills novel-script --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eternityspring/shuohao-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/novel-script .gemini/skills/novel-script && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "novel-script" agent skill from https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script into .gemini/skills/novel-script/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "novel-script", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install eternityspring/shuohao-skills novel-scriptInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add eternityspring/shuohao-skills --skill novel-script -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/eternityspring/shuohao-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/novel-script .github/skills/novel-script && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "novel-script" agent skill from https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script into .github/skills/novel-script/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "novel-script", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add eternityspring/shuohao-skills --skill novel-script -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install eternityspring/shuohao-skills novel-script --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eternityspring/shuohao-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/novel-script .opencode/skills/novel-script && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "novel-script" agent skill from https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script into .opencode/skills/novel-script/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "novel-script", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
novel-script给 AI 短剧写剧本:把 novel-outline 的分集梗概落成结构化的场次 + 节拍流(动作节拍与台词行交替), 台词逐句带说话人与语气,时长逐集按语速确定性折算。产出 script.json + Markdown + 单页评审报告 (时长仪表 / 分集剧本 / 场次总表 / 按角色聚合的台词本,含导出 JSON)。
Novel Script is an agent skill from eternityspring/shuohao-skills. 给 AI 短剧写剧本:把 novel-outline 的分集梗概落成结构化的场次 + 节拍流(动作节拍与台词行交替), 台词逐句带说话人与语气,时长逐集按语速确定性折算。产出 script.json + Markdown + 单页评审报告 (时长仪表 / 分集剧本 / 场次总表 / 按角色聚合的台词本,含导出 JSON)。 剧本管戏,分镜管拍——本 skill 不分镜头、无镜号、不写生成提示词,那些是下一层分镜 skill 的活。 10 道质量门全部由脚本确定性检查(每集时长 ±15%、单句 ≤35 字、说话人合法、钩子悬念落纸、 钩子具象前 3 拍内兑现(hookBeat 认领冷开场)、每场至少一个动作节拍、爽点认领、 角色/场景/光照/道具对账上游……)。 有 outline.json 就用 seed 预填每集骨架;给 --art 连光照状态一起对账。 零依赖、零 API key,用当前会话额度。 Use when asked to 写剧本、出剧本、台词、场次、写戏、screenwriting for AI short drama。
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 19 other files, including scripts, reference files and assets (for example `README.en.md`, `README.md` and `examples/渡口-script.json`).
It sits in Writing & Content, covering Creative writing and fiction. The repository describes itself as: AI 短剧制作的 skill 集合:拆角色、排大纲、出场景与道具设定、写剧本、切分镜 | Agent skills for AI short-drama production — character bibles, adaptation outlines, art bibles, screenplays, storyboards. Runs in… The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ef4ac0c. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteBashTaskGlobFrom allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Novel Script loads about 1.2k tokens when it runs, and up to ~22k if it reads all its reference files. Until then it costs about 122 tokens; SKILL.md has 196 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Bash, Task, GlobAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from eternityspring/shuohao-skills at commit ef4ac0c, republished under its Apache-2.0 licence (© eternityspring). 196 words, ~1,194 tokens.
.claude/skills/novel-script/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.给 AI 短剧写剧本。前提刻在骨子里:剧本管戏,分镜管拍——「爽不爽」和「怎么拍」是两种迭代节奏,台词要反复推翻重写,绑上镜头分解每改一句都得重排镜头。所以这层只有集、场次、节拍流,没有镜号;镜头、首帧提示词、生成批次都是下一层分镜 skill 的活。
但有一条底线:台词必须是结构化数据,不能写成散文。每句台词是独立条目(说话人 + 台词 + 语气),动作是独立节拍——这是全部确定性检查的地基:
| 交付 | 解决什么 |
|---|---|
| 逐集时长预算 | 一集三分钟就是三分钟:台词按语速折算、动作按节拍估时,写超写欠当场拦下,不流到生成环节才发现 |
| 节拍流(动作 ⇄ 台词) | 台词直接对接 TTS 逐句生成;动作节拍就是画面要发生的事。混成散文两头都喂不进管线 |
| 每场至少一个动作节拍 | 纯对白的场是广播剧——AI 生成时没有画面可写 |
| 开场钩子 + 结尾悬念 | 短剧的生死线,每集都要落在纸面;钩子不是标签是第一拍——hookBeat 认领具象位置,必须落在全集前 3 拍内(冷开场) |
| 爽点认领 | 大纲说这一集有大爆点,剧本必须有戏认领它——防止改着改着把爆点改丢 |
| 上游对账 | 场景/光照/道具对 art.json、角色对 outline.json,写了美术没登记的光照状态当场报 |
{baseDir} = 本文件所在目录。脚本 {baseDir}/scripts/novel-script.mjs,零依赖,node 直接跑。
边界(不做的事):不分镜头、无镜号、不写画面生成提示词、不出图、不配乐——分镜层的活一件不碰。不改大纲结构(砍线合人是 novel-outline 的活);不做角色和场景设定(novel-characters / novel-art 的活)。
outline.json 是剧本的直接上游(分集梗概、爽点落点、单集时长都在里面),标准流程从它开始。没有的话先问用户是否跑 novel-outline;用户坚持直接写,就问清集数与单集分钟数,手建骨架,对账门会明说跳过。
一次写几集:默认一批 ≤ 3 集。剧本是全管线改得最凶的一层,小批量出、快拍板、再往下写。用户明确要全剧也分批产出,每批过一次校验。
顺手带上(都可选,给了才对账/显示名字):
--outline:角色引用对账 + 爽点认领检查 + 报告里 C01 显示成人名--art:场景/光照状态/道具对账 + 报告里 S01 显示成场景名node {baseDir}/scripts/novel-script.mjs seed <outline.json> --eps 1-3 > <workdir>/script.json确定性搬运:目标秒数(单集分钟 × 60)、钩子、悬念、该集爽点认领、候选场景与人物(进 seedNote)。这些事实不要让模型重新想一遍。 scenes 留空,那才是写戏的活。
每集一份任务,能并发就并发。每份任务拿到:
{baseDir}/references/script-pass.md 和 {baseDir}/references/schema.md(读它们,照着做)核心要求都在 script-pass.md 里,最重的四条:动作节拍只写常见动作(挑担上船、搭手卸担这种 AI 见过千万次的;伸篙一挡、睫毛颤这种精巧动作生成必崩);时长预算先于一切(三分钟一集约 50 个节拍,写完自己跑一遍 validate 看秒数);台词口语、单句一口气、谁的话像谁(有 cast.json 就吃角色的性情与说话方式);每集第 1 拍冷开场给钩子的具象(hookBeat 认领,门查位置),结尾一拍必须是悬念。
写完把 seedNote 删掉。
node {baseDir}/scripts/novel-script.mjs validate <script.json> \
--outline <outline.json> --art <art.json>10 道质量门全是代码:每集时长在目标 ±15% 内(台词按 4.5 字/秒折算、动作按 2.5 秒/拍,params 可调)、单句台词 ≤ 35 字、说话人在本场人物里或标 VO、每集钩子悬念落纸、钩子具象在全集前 3 拍内兑现(hookBeat 认领,params.hookWindow 可调)、每场至少一个动作节拍、动作叙述体不混引号台词、爽点认领、角色对账、场景/光照/道具对账。
有违规逐条修,改完重跑,直到通过。 写超了先砍动作节拍再压台词;写欠了补戏不注水——加冲突不加寒暄。需要一个美术没登记的光照状态时,去 art.json 里补状态再回来,不要绕过门。
cd <输出目录>
node {baseDir}/scripts/novel-script.mjs render <剧名>-script.json --md \
--outline <outline.json> --art <art.json> > <剧名>-script.md
node {baseDir}/scripts/novel-script.mjs render <剧名>-script.json --html \
--outline <outline.json> --art <art.json> --cast <cast.json> > script-report.html
# 英文界面:加 --lang en(默认中文,也可跟 script.json 顶层的 lang 字段)报告含:KPI 带(含台词占比)、时长仪表(每集条形打在目标区间带上,超欠标红)、分集剧本(一排两集,场次信息超过 300px 渐隐截断、点开展开)、场次总表、台词本(一排两个,按角色聚合、列表六行高可滚动、整组复制;给了 --cast 每个角色组头带音色提示词按钮——台词和音色一页配齐直接跑 TTS)、质量门面板、导出 JSON(下载的就是 script.json 原样)。
汇报一句话说清:几集几场几句台词、预估总时长 vs 目标、哪几集贴着容差边、报告路径;没过的门明说。
最终落地:
<输出目录>/
├── <剧名>-script.json
├── <剧名>-script.md
└── script-report.html ← 双击就能开novel-outline → outline.json (什么:结构与分集)
novel-characters → cast.json (谁:角色资产)
novel-art → art.json (哪里 + 手里拿的:美术资产)
novel-script → script.json (戏:场次、节拍、台词)seed 吃 outline.json;validate/render 的 --outline --art 负责对账和显示名字。四份 JSON 各自的报告都带导出按钮,改完都能喂回各自的 render/validate。往下一层是分镜:镜号、单镜头时长、首帧提示词、生成批次单都在那边。
--lang,默认中文、或跟 script.json 的 lang 字段);台词语言跟剧走params.charsPerSecond 按配音语速可调VO 是画外音统一记号,谁的心声写在 delivery 里;台词本里 VO 单独成组node {baseDir}/scripts/selftest.mjs154 项断言,不调模型、不花额度。10 道质量门每一道都有击穿用例。改完脚本先跑这个。
{baseDir}/examples/渡口-script.json:《渡口》全 6 集完整剧本(9 场 123 句台词,每集冷开场兑现钩子、都落在 120 秒 ±15% 内),对着 novel-outline 与 novel-art 的样例全部质量门通过。当质量基准,也是自测夹具。
© eternityspring, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 13 other files (scripts, references, assets) in skills/novel-script of eternityspring/shuohao-skills.
Open the folder on GitHubat commit ef4ac0c
Novel Script next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Novel Script this skilleternityspring/shuohao-skills | 4.2k | — | ~1.2k | Automated safety check: Notes | Apache-2.0 | |
| Story Multi-Perspective Reviewzenstory-ai/oh-story-claudecode | 7.3k | 3 repos | ~3k | Automated safety check: Pass | MIT | |
| Short Web Fiction Trend Scanzenstory-ai/oh-story-claudecode | 7.3k | 3 repos | ~1.2k | Automated safety check: Pass | MIT | |
| InkOS Creative HarnessNarcooo/inkos | 10k | 1 repos | ~1.1k | Automated safety check: Pass | AGPL-3.0 | |
| Novel Import and Project Rebuildzenstory-ai/oh-story-claudecode | 7.3k | 2 repos | ~1.7k | Automated safety check: Pass | MIT | |
| SepiaNanako0129/sepia | 3k | — | ~3.6k | Automated safety check: Pass | MIT |
zenstory-ai/oh-story-claudecode
Reviews Chinese web-novel text with several reviewer agents in parallel, falling back to a single-agent pass, and reports structure, character, prose and setting problems with fixes.
zenstory-ai/oh-story-claudecode
Scans popular short web-fiction rankings on Chinese platforms such as Dianzhong and Heiyan to surface trending emotional hooks, themes and topic candidates with an expiry warning.
Narcooo/inkos
Drives long-form fiction, scripts, storyboards, interactive films and long-document translation through InkOS, with every change made by a typed action.
zenstory-ai/oh-story-claudecode
Reverse-imports an existing novel, half-finished or complete, into the standard project structure so story-long-write or story-short-write can continue it.
Nanako0129/sepia
Make AI-generated writing read as human-written, in fiction and in professional prose.
zenstory-ai/oh-story-claudecode
Routes a Chinese web-novel writing request to the matching tool in a 13-skill toolbox, covers author habit memory, and can launch a local dashboard for browsing a project.
eternityspring/shuohao-skills
给 AI 短剧出美术设定集(场景 + 叙事道具):场景的设计意图、一致性锚点、光照时段变体、 空景提示词;道具的戏剧功能、状态变体、尺度参照、白底无手提示词。
eternityspring/shuohao-skills
从小说或短故事里拆出角色表、人物画像、形象提示词、音色提示词, 其中形象提示词含一张角色设定图的完整版面指令(左半身像 + 右全身三视图 + 细节条), 产出 JSON + Markdown + 可交互的 report.html。
eternityspring/shuohao-skills
把一本小说改编成短剧大纲五件套:改编说明、人物表、爽点表、分集梗概、资产清单, 产出 outline.json + Markdown + 单页评审报告(KPI 带、关键决策、爽点时间轴、调度矩阵、场景概览、质量门)。
eternityspring/shuohao-skills
给任何故事里的角色真出参考图(小说改编、自己原创的故事、单独设计一个角色都行,不需要小说原文): 一段话描述角色,拆成分层字段、补全后确认, 先出一张正面全身锚点,其余视图(大头照、90° 侧面、背面、细节、45° 大头照)都只参考这张锚点, 按需分档出图。每张图带标识、可单独重出,重出后自动标出哪些图过期。
eternityspring/shuohao-skills
给 AI 短剧出分镜:三层结构——段(一次视频生成,≤15 秒)→ 分镜(段内 2–5 秒的剪切,认领剧本节拍) → 分镜图(每切一张关键帧:主分镜图钉 0.00 秒,子分镜图钉各自切点)。
Categories
给 AI 短剧写剧本:把 novel-outline 的分集梗概落成结构化的场次 + 节拍流(动作节拍与台词行交替), 台词逐句带说话人与语气,时长逐集按语速确定性折算。产出 script.json + Markdown + 单页评审报告 (时长仪表 / 分集剧本 / 场次总表 / 按角色聚合的台词本,含导出 JSON)。. Novel Script is an agent skill from eternityspring/shuohao-skills.
Novel Script fits situations like: asked to 写剧本、出剧本、台词、场次、写戏、screenwriting for AI short drama; tasks that involve Creative writing and fiction.
Run `npx skills add eternityspring/shuohao-skills --skill novel-script -a claude-code`. Or copy the skill folder (skills/novel-script in eternityspring/shuohao-skills) into .claude/skills/novel-script in your project. Claude Code loads it when a task matches its description.
Run `npx skills add eternityspring/shuohao-skills --skill novel-script -a codex`. Or copy the skill folder (skills/novel-script in eternityspring/shuohao-skills) into .agents/skills/novel-script in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add eternityspring/shuohao-skills --skill novel-script -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/novel-script, .gemini/skills/novel-script, .github/skills/novel-script and .opencode/skills/novel-script in your project.
Going by SKILL.md and its folder, Novel Script needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Bash, Task, Glob.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Novel Script is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 4.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 20k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Novel Script: Story Multi-Perspective Review (zenstory-ai/oh-story-claudecode, 7.3k stars), Short Web Fiction Trend Scan (zenstory-ai/oh-story-claudecode, 7.3k stars), InkOS Creative Harness (Narcooo/inkos, 10k stars) and Novel Import and Project Rebuild (zenstory-ai/oh-story-claudecode, 7.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
eternityspring (a GitHub user) maintains it in eternityspring/shuohao-skills, which has 4,205 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on September 26, 2026.
Source: eternityspring/shuohao-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.