shuohao-skills is a collection of agent skills for turning a novel into production materials for an AI short-drama pipeline, including character profiles, outlines, art references, scripts, and storyboards. It is for creators using Claude Code or Codex to plan and prepare AI-generated short videos. The catalogue add-ons implement the separate stages of this workflow and can also assemble their reports.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add eternityspring/shuohao-skills --skill novel-charactersgit clone --depth 1 https://github.com/eternityspring/shuohao-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/eternityspring/shuohao-skills/novel-characters)<a href="https://agentmods.dev/skills/eternityspring/shuohao-skills/novel-characters"><img src="https://agentmods.dev/badge/skills/eternityspring/shuohao-skills/novel-characters/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/eternityspring/shuohao-skills/novel-characters"><img src="https://agentmods.dev/badge/skills/eternityspring/shuohao-skills/novel-characters.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00129 | $0.03471 |
| Opus 5.5 | $0.00052 | $0.01388 |
| Sonnet 5.5 | $0.00026 | $0.00694 |
| Haiku 4.5 | $0.00013 | $0.00347 |
Grade A, and why
novel-characters scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 240 lines — stays where its author put it; the contents beside it link to each section on GitHub.
novel-characters
输入一篇小说/短故事,输出每个角色的:人物画像、形象提示词、音色提示词、角色设定图的版面指令。
**本 skill 不出图,只产提示词。**出图是下游的事——它要选模型、选画风、选画幅,那三件事在这里一个都答不了。
{baseDir} = 本文件所在目录。脚本 {baseDir}/scripts/novel-characters.mjs,零依赖,node 直接跑。
运行环境:Claude Code 和 codex 都能跑,没有差别——这条管线全是 node 脚本加模型读写,不碰任何本机可执行文件。
Step 0 — 确定报告语言
用户可以指定语言,比如「用英文」「--lang en」「日本語で」。没说就是中文(zh)。
这个 lang 会一路传下去:第二趟生成角色卡时决定人类可读字段用什么语言,validate 和 render 也都要带上。
界面文案分两种情况:
-
zh/en/ja—— 内置,不用管 -
其他任何语言 —— 你要现场翻一份。跑
node {baseDir}/scripts/novel-characters.mjs ui-template <lang>它打印一份英文骨架,把每个值翻译成目标语言,整块放进
cast.json顶层的ui字段。渲染时会合并进内置表。不给
ui的话validate会直接报错——否则报告会是「角色内容是法语、界面标签是英文」的半吊子状态。
支持的语言不受内置表限制,法语韩语西班牙语都能出完整报告。
Step 1 — 定位输入
用户给文件路径就直接用。直接粘正文的,先落到一个临时 .txt——后面校验「引文是否逐字」要拿原文比对,没有原文文件这步就没法做。
确定输出目录:用户指定就用;没指定就用原书同级目录。
有 outline.json(novel-outline 的产出)就一起要过来,走 seed——大纲是角色设定的上游,它的 characters 块已经定死了角色清单:
node {baseDir}/scripts/novel-characters.mjs seed <outline.json> > <workdir>/seed.json
搬过来的是大纲已经拍板的事实,留空的是这一层才该做的设计:
| outline 的字段 | seed 之后 |
|---|---|
id |
原样保留成角色码——下游 script / storyboard 用它引用角色 |
name |
角色表就照这份,不再自己判断谁该进 |
tier |
映射成 importance:lead → protagonist、support → supporting、functional → minor |
arc |
直接落进 persona.arc |
role / from |
进 seedNote——定位(女主 / 反派)与「由原著的谁合并而来」,扫原文时知道该收哪几条线的戏 |
留空待填:aliases(要读原文才知道)、oneLiner、persona 其余各项、image、voice。seed 出来的是骨架不是成品,直接跑 validate 会报一堆字段缺失,那是预期的——后面 Step 2–6 就是来填它的。
两处口径要守住:
- 大纲定的分档不要推翻。谁重要是改编阶段拍板的事,这一层只负责把定下来的人做深。真觉得分档不对,回去改大纲,别在这里悄悄改一个不一样的
- 主角组内部可以细分。outline 的
lead是「男女主 + 主反派」一整组,对应protagonist与major两档,seed 一律给protagonist;照seedNote里的定位把主角之外的改成major,这不算推翻分档
没有 outline.json 也照常跑,本 skill 不依赖它——跳过 seed,从 Step 2 开始自己从原文拆角色表。
Step 2 — 分块
node {baseDir}/scripts/novel-characters.mjs chunk <book.txt> <workdir>
打印 {"chunks": N, ...}。
- N == 1:跳过 Step 3,直接在当前会话读原文做第一趟,结果自己写成
<workdir>/roster-00.json - N > 1:进 Step 3
truncated: true:明确告诉用户尾部没扫到,别闷着
What ships with it
16 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- assets/report.webp 126 KB
- assets/sheet.jpg 165 KB
- examples/渡口-cast.json 42 KB
- examples/渡口-cast.md 39 KB
- examples/渡口.txt 2.3 KB
- README.en.md 11 KB
- README.md 10 KB
- references/profile-pass.md 18 KB
- references/report-style.md 8.6 KB
- references/roster-pass.md 1.9 KB
- references/schema.md 5.9 KB
- references/sheet.md 3.8 KB
- references/test-fixtures/upstream/README.md 411 B
- references/test-fixtures/upstream/渡口-outline.json 9.4 KB
- scripts/novel-characters.mjs 83 KB runs code
- scripts/selftest.mjs 41 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · -35 lines · -32 tokens per session cda2bc652a24
- 2mo ago First seen · 275 lines · 161 tokens per session scan A 4ea2fbbdfa31
novel-characters is a skill published in the GitHub repository eternityspring/shuohao-skills (6,084 stars, last pushed 11d ago), licensed Apache-2.0. It adds 129 tokens to every session and 3,471 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
novel-characters compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| novel-characterseternityspring/shuohao-skills | Skill | 6.1k | 11d ago | Apache-2.0 | A | 129 | Claude Code |
| imagegenopenai/codex | Skill | 133k | today | Apache-2.0 | A | 113 | Codex |
| playwright-climicrosoft/playwright | Skill | 99k | yesterday | Apache-2.0 | A | 19 | Claude Code |
| local-ai-agentsmicrosoft/ai-agents-for-beginners | Skill | 79k | 4d ago | MIT | A | 200 | Claude Code, Codex |
| systematic-debuggingobra/superpowers | Skill | 313k | 3d ago | MIT | A | 21 | Claude Code |
| next-cache-components-adoptionvercel/next.js | Skill | 143k | today | MIT | A | 95 | Claude Code |
| chat-pet-sprite-creationmicrosoft/vscode | Skill | 195k | today | MIT | A | 53 | Claude Code, Codex |