Skip to content

Back to the catalog

eternityspring/shuohao-skills
github.comrepo

eternityspring/shuohao-skills

shuohao-skills is a set of five chained Claude Code / Codex agent skills that turn a novel into short-drama production assets: novel-outline (adaptation outline), novel-characters (cast bible), novel-art (scene/prop art bible), novel-script (episode scripts with a duration gauge), and novel-storyboard (shot-by-shot storyboards with actual generated shot images and prompts), plus a standalone character-refs skill that generates character reference images (anchor via GPT, rest via Qwen). Each skill is a self-contained directory with a required SKILL.md and a dependency-free scripts/selftest.mjs, installable via a symlink script that auto-detects Claude Code vs codex, and there is a separate report.mjs assembler that merges the five bilingual HTML reports into one navigable page without touching each skill's own render code (handling CSS/JS scoping and image-path rewriting).

TL;DR A chained Claude Code/Codex skills pipeline that turns a novel into outline, cast, art, script and storyboard assets, with real image generation and a report assembler.
Document

What it claims

The pipeline is not strictly linear. The adaptation outline fixes the structure. Script, art (scenes and props) and characters are then iterated together. The storyboard stage only produces output and makes no new decisions. The run order in the end-to-end demo was characters → outline → art → script → storyboard. Every stage's HTML report defaults to a Chinese UI, and render --lang en gives an all-English UI while the data stays in its original language. The character-refs report has built-in Chinese, English and Japanese UI, and other languages are translated on the fly.

flowchart LR
  N[Novel] --> O[novel-outline<br/>fixes structure]
  O --> S[novel-script]
  O --> A[novel-art]
  O --> C[novel-characters]
  S <--> A
  A <--> C
  C <--> S
  S & A & C --> SB[novel-storyboard<br/>output only]
  SB --> E[export: manifest.json + E01-0x/ packs]

How it works

Each skill has a required SKILL.md (the agent workflow) and scripts/<name>.mjs (deterministic, zero-dependency tools). It also has references/ (instructions loaded on demand), examples/ (which double as test fixtures) and a required scripts/selftest.mjs. The selftest makes no model calls and covers all deterministic logic.

The report.mjs assembler calls each skill's render --html and handles three conflicts:

  • The five reports share 57 class names, and 13 of them have different definitions. Every selector gets a per-report scope prefix.
  • Each report's script uses global document.querySelector calls. Each script is wrapped in a scope proxy, because otherwise all five export buttons would hit the first report.
  • Image paths are recomputed relative to the output file.

The combined report is close to 600k characters, so it shows one panel at a time. Keys 1–5 switch panels, deep links like #pane-script work, and "平铺全部" (show all) expands every panel so Cmd+F search works across them.

How to use it

git clone https://github.com/eternityspring/shuohao-skills.git
cd shuohao-skills
./scripts/install.sh
./scripts/install.sh novel-characters   # 只装某一个
./scripts/install.sh --codex            # 只装到 codex
./scripts/install.sh --uninstall        # 取消软链

Skills are installed as symlinks, so a git pull takes effect without reinstalling. To link one manually:

ln -s "$PWD/skills/novel-characters" ~/.claude/skills/novel-characters

Merge the reports and run the tests:

node scripts/report.mjs --from <demo目录> --out report.html
node scripts/report-selftest.mjs   # 92 项断言,不起浏览器
for f in skills/*/scripts/selftest.mjs; do node "$f"; done

--from finds the five JSON files automatically if you use the directory convention below. You can also pass them individually with --outline --cast --art --script --storyboard. If some stages are missing, the report just has fewer panels.

The working-directory convention is <demo>/{outline,characters,art,script,storyboard,docs,scripts}/. The storyboard directory holds manifest.json plus the E01-0x/ segment packs (prompt.md + f1..fN.png), exactly as written by export --out storyboard. The README recommends committing only the JSON, MD, docs/ and scripts/ files and gitignoring the report HTML and PNGs, since render regenerates them.

Limits

  • Silent image loss: segment folders must sit next to the storyboard report HTML, or you must pass render --frames <dir>. When the author moved 10 segment folders into segments/, embedded images dropped from 2 to 0 and every frame became a "not generated" placeholder, with no error.
  • Platform: verified only on macOS with Node 24. Linux and older Node versions are untested.
  • CI: there is none; you are expected to run the selftests locally (about 1 s).
  • Models and cost: image generation depends on GPT and Qwen. The page gives no API setup or cost figures.
  • Licence: none is stated.
  • Commercial link: the author promotes a paid WeChat group and says it is a separate service from ReelBench.

Organisations named here

  • Claude Code
  • Qwen

Technologies named here

  • GPT
  • Claude Code
  • Codex
  • Qwen
  • novel-outline
  • novel-characters
  • novel-art
  • novel-script
  • novel-storyboard
  • character-refs
  • report.mjs
  • report-selftest.mjs
  • install.sh
  • Node.js

Techniques named here

  • 五段管线:大纲收敛、剧本/场景/角色同步迭代、分镜只出不决策
  • CSS 作用域前缀
  • 脚本作用域代理
  • 图片路径重算