中文 English Follow on X

👋 Open to work / collaboration — I'm between jobs right now, and this repo is what I build in that spare time. Happy to hear from anyone this resonates with. Besides remote work, I'm also open to a half-collaboration: a few thousand RMB a month for living costs plus a profit share. On-site trips are possible where the work genuinely needs them. What I'm really after is finding people on the same wavelength to build something in this AI wave. Email: eternityspring@gmail.com · Résumé: resume.79px.com · WeChat hao_dev (please mention github when you add me)

These skills are free and open source, built and battle-tested on real AI short-drama production. If they save you an afternoon, consider buying me a coffee on Ko-fi ☕ — it keeps the updates coming.

shuohao-skills

Agent skills for AI short-drama production — from a novel to shoot-ready material: character bibles, adaptation outlines, scene & prop bibles, screenplays, storyboards. Built for AI coding agents, runs in both Claude Code and codex.

Here is the whole pipeline — the outline converges the structure; script, scenes and characters iterate together; the storyboard only outputs, it makes no new decisions:

AI short-drama production pipeline
Skill What it does
novel-outline Adapts a novel into a five-piece short-drama outline: adaptation notes, cast, beats, per-episode synopses, asset list (including a narrative-prop table). All 14 quality gates are script-checked; includes a checkup mode for existing outlines
novel-characters Turns the cast the outline settled on into a character bible: profiles, design prompts, voice prompts, model sheets. Seeds the roster from outline.json; report language is configurable
character-refs Actually generates reference images for characters from any story (not just novels — your own original story works too): describe a character in one message; it is split into fields, gaps filled and confirmed, then a front full-body anchor is generated and every other view (headshot, 90° profile, back, details) references only that anchor, in on-demand tiers. Every image is labeled and individually regenerable, with staleness tracked. Works with Qwen Image (ComfyUI), codex image generation, the GPT Image 2 API, or a custom command
novel-art Art bibles for AI production (scenes + narrative props): consistency anchors, lighting & state variants, scale references, no-people/no-hands white plates. Seeds from outline.json; all 10 quality gates script-checked
novel-script Screenwriting for AI short drama: scenes + beat flow (action beats alternating with dialogue lines), per-episode duration deterministically estimated from reading speed, a gated cold-open hook in the first 3 beats, a per-character line book with voice prompts that feeds straight into TTS. All 10 quality gates script-checked
novel-storyboard Storyboarding for AI short drama: segments (one generation, ≤15s) → cuts (2–5s hard gate) → keyframes (master pinned at 0.00s, sub-frames at their cut marks), with MiniMax H3 prompt alignment and cut times audited verbatim; frames actually generated with the design sheets as references, plus one-command H3 / Seedance production packs. All 18 quality gates script-checked

The five pipeline skills render their reports in English too — reports default to a Chinese UI; pass --lang en to render for a fully English report (data content stays as authored). character-refs ships Chinese, English and Japanese UIs too, and translates on the spot for other languages.

One page for the whole pipeline

The five stage reports can be merged into a single page with a left-hand nav — you get a pane for every stage you actually have:

node scripts/report.mjs --from <demo-dir> --out report.html

--from discovers the five json files using the working-directory convention; you can also point at each one directly (--outline --cast --art --script --storyboard). Ran only the character pass? You get one pane, no error.

It is an assembler, not a separate skill: it imports no skill code, it shells out to each skill's own render --html and stitches the results. So the five skills stay untouched, still run standalone, and are still copyable on their own — and when a skill changes its rendering, this picks it up for free.

Merging solves three problems, all of them inside the assembler, none inside the skills:

  • Style bleed. The five reports share 57 class names, 13 of which mean different things in different reports (.copy, .kpis, .badge, .chip…), so every selector gets a scope prefix
  • Script bleed. Each report's script does document-wide lookups like document.querySelector('.expo'). Merged, that only ever finds the first one — all five export buttons would break. Each script gets wrapped in a scoping proxy
  • Asset paths. Each report's images are relative to its own json directory (images/…, E01-01/f1.png) and get rebased against the output file

One pane shows at a time by default (the five together run to roughly 600k characters). "Show all" in the bottom-left expands every pane so Cmd+F reaches the whole document. Number keys 1–5 switch panes, and #pane-script deep-links straight to one.

node scripts/report-selftest.mjs   # 92 assertions, no browser needed

Point it at a novel and you get all five:

novel-outline · short-drama adaptation outline

Adaptation outline report

novel-characters · character bible

Character bible report

novel-art · art bible (scenes + props, sheets actually generated by the skill)

Art bible report

novel-script · screenplay (duration gauge + episode scripts + line book)

Screenplay report

novel-storyboard · storyboard (cut rhythm strip + master/sub keyframes actually generated by the skill + H3 prompts)

Storyboard report

No novel needed for this one — real reference images for any character:

character-refs · character references (anchor by GPT, the rest by Qwen, all actually generated by the skill)

Character references report

Install

git clone https://github.com/eternityspring/shuohao-skills.git
cd shuohao-skills
./scripts/install.sh

It detects whether you have Claude Code or codex installed and symlinks every skill into place — so git pull takes effect immediately, with no reinstall.

./scripts/install.sh novel-characters   # just one skill
./scripts/install.sh --codex            # only into codex
./scripts/install.sh --uninstall        # remove the symlinks

Prefer to do it by hand:

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

Requirements

Required? Notes
Node Yes ≥ 18. The skill scripts use only the standard library — no npm dependencies, nothing to install
Model quota Yes Uses your current session's quota. No API key needed
codex CLI Optional Just one of the two runtimes these skills run in, equivalent to Claude Code. The five pipeline skills do not generate images, so none of its local capabilities are needed
Image model Only for character-refs One of: your own ComfyUI (Qwen Image), local codex image generation (uses your ChatGPT plan quota), an OpenAI API key (GPT Image 2), or a custom command. Chosen on first use

Note on output language. These skills are Chinese-first. novel-characters produces Chinese character profiles even for an English source novel, and its validator actively rejects English in those fields. See that skill's README for what it would take to change.

Repository conventions

One directory per skill, self-contained and copyable on its own:

skills/<skill-name>/
├── SKILL.md          the workflow the agent reads (required)
├── README.md         the docs a human reads
├── scripts/
│   ├── <name>.mjs    deterministic helpers, zero dependencies
│   └── selftest.mjs  self-test, never calls a model (required)
├── references/       detailed instructions, loaded on demand
├── examples/         bundled samples that double as test fixtures
└── assets/           screenshots

Two hard requirements:

  • Every skill must have a SKILL.md
  • Every skill must have a scripts/selftest.mjs that calls no model and costs no quota, covering all deterministic logic

Run every self-test before adding a skill:

for f in skills/*/scripts/selftest.mjs; do node "$f"; done

There is no CI — the self-tests run in about a second, so running them locally beats waiting on a pipeline. Only tested on macOS with Node 24; there is no platform-specific code, so Linux and older Node releases should be fine, but that is unverified.

Star history

Star History Chart

License

Apache 2.0

S
Description
No description provided
Readme Apache-2.0
23 MiB
Languages
JavaScript 99.7%
Shell 0.3%