Community编程与开发github.com

eternityspring/shuohao-skills

给 AI 短剧出美术设定集(场景 + 叙事道具):场景的设计意图、一致性锚点、光照时段变体、 空景提示词;道具的戏剧功能、状态变体、尺度参照、白底无手提示词。 产出 art.json + Markdown + 单页评审报告(含导出 JSON)。 为 AI 生成而设计,不是实拍——环境和道具都是生成资产,交付的是让它们跨集长一样的一致性方案; 10 道质量门全部由脚本确定性检查(锚点 3–5、无人无手、白底可抠、尺度短语、提示词英文……)。 有 novel-outline 的 outline.json 就用 seed 预填场景清单与出现集。 零依赖、零 API key、不出图——交付的是提示词,出图在下游。 Use when asked to 场景设定、出场景、环境设定集、场景一致性、scene bibles for AI short drama。

shuohao-skills 是什么?

shuohao-skills is a Claude Code agent skill that 给 AI 短剧出美术设定集(场景 + 叙事道具):场景的设计意图、一致性锚点、光照时段变体、 空景提示词;道具的戏剧功能、状态变体、尺度参照、白底无手提示词。 产出 art.json + Markdown + 单页评审报告(含导出 JSON)。 为 AI 生成而设计,不是实拍——环境和道具都是生成资产,交付的是让它们跨集长一样的一致性方案; 10 道质量门全部由脚本确定性检查(锚点 3–5、无人无手、白底可抠、尺度短语、提示词英文……)。 有 novel-outline 的 outline.json 就用 seed 预填场景清单与出现集。 零依赖、零 API key、不出图——交付的是提示词,出图在下游。 Use when asked to 场景设定、出场景、环境设定集、场景一致性、scene bibles for AI short drama。.

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/eternityspring/shuohao-skills/tree/HEAD/skills/novel-art

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

novel-art

Generates art bibles for AI short dramas: scenes + narrative props. Baked-in assumption: this is AI-generated, not live-action—no location scouting, set building, prop buying. Environments and props are assets that will be generated dozens of times and must look the same, so all deliverables revolve around consistency:

DeliverableWhat It Solves
Consistency anchors (3–5 per scene)Viewers recognize the scene by these; QC uses them to check if generated shots have drifted
Lighting time-of-day variantsAI changing time of day means regenerating, not relighting—each state is a complete prompt
Empty-shot generation promptsEnvironments and characters are two asset layers; mixing people into reference images ruins consistency entirely
Variant mechanism (variantOf)Generating a new scene is cheap, but a variant reusing the parent scene's assets is more consistent
Prop state variantsA suitcase closed vs. open are two reference images—props have state arcs; scenes do not
Prop size referenceAI often draws handheld props the size of furniture; prompts must include size phrases
Prop white-background hand-freeProp images must be cuttable for compositing into any shot; hands holding the prop are the most common contaminant

{baseDir} = the directory containing this file. Script {baseDir}/scripts/novel-art.mjs, zero dependencies, runs directly with node.

Boundaries (what it does NOT do): No storyboarding, no script writing, no character work (that's novel-characters's job), no outline planning (that's novel-outline's job). Only narrative props (those that get close-ups, appear across episodes, carry story—typically 3–8 items) are collected—scene furnishings go into scene anchors; one-time hand props use shot-level prompts and are not separate assets.


Step 0 — Determine Input

Three input types, priority from high to low:

  1. outline.json (output of novel-outline)—optimal: scene list, episode appearances, payoff moments, reuse strategies are all prebuilt
  2. Original novel text—summarize scene list yourself (prioritize main stages; refer to novel-outline's main scene limit approach: don't overdo it)
  3. User-written scene list

If a cast.json (output of novel-characters) is available, include it—needed to verify that prompts contain no character names.

Step 1 — Seed Skeleton (only if outline.json exists)

node {baseDir}/scripts/novel-art.mjs seed <outline.json> > <workdir>/art.json

Deterministic transfer: scene id/name/main scene flag/episode appearances/payoff moments; scenes with reuse strategies get a seedNote suggesting they be made as variants. Don't let the model regenerate these facts.

Without outline.json, build the list yourself using references/schema.md.

Step 2 — Fill Settings Per Scene + Extract Narrative Props

One task per scene, enable concurrency if possible. Each task receives:

  • {baseDir}/references/scene-pass.md and {baseDir}/references/schema.md (read them, follow them)
  • The skeleton for that scene + all information from the novel/outline about that space
  • Names of other scenes in the same batch (spatial atmosphere must be differentiated; don't make everything the same "shabby")

Core requirements are in scene-pass.md; the three heaviest: anchors must be paintable, verifiable, and checkable ("patched boat canopy" is an anchor; "dilapidated atmosphere" is an adjective); lighting states are derived from episodes, don't write a full set that won't be used; always use variants instead of creating new scenes.

Narrative props should preferentially consume from the outline: as of version 1.1.0, outline.json includes props; seed transfers the prop table along with "what it carries," "which payoff moments it supports," and "which episodes it appears in"—this step only fills design fields (size, anchors, state variants, white-background prompts). If the outline has no props, extract from the novel text—then this step is the model's job: collect only props that have close-ups, appear across episodes, and carry story; typically 3–8, on the same order as the number of main characters. Fill each according to references/prop-pass.md: dramatic function, anchors, state variants, size, white-background hand-free prompt. A suitcase that "follows a character" belongs here—don't stuff it into scene anchors or character profiles.

Step 3 — Validation ⛔ Cannot Skip

node {baseDir}/scripts/novel-art.mjs validate <art.json> --cast <cast.json>

All 10 quality gates are code. Scenes share 6 gates: anchors 3–5, lighting states ≥1, no people, prompts entirely in English, no character names (only checked if --cast is given), variant references complete. Props have 4 dedicated gates: states ≥1, size phrase included in prompt, negative prompt bans hands, design image pure white background.

Fix any violations one by one, re-run until passing.

Step 4 — Output & Report

cd <output directory>
node {baseDir}/scripts/novel-art.mjs render <drama-name>-art.json --md   > <drama-name>-art.md
node {baseDir}/scripts/novel-art.mjs render <drama-name>-art.json --html > art-report.html

Report interface defaults to Chinese; for English use --lang en (or set "lang": "en" at the top level of art.json; --lang has priority). render by default looks for images in images/<slug>-sheet.png alongside art.json (for both scenes and props); if images are elsewhere, use --images <directory> to point there—this skill does not generate these files; after downstream image generation, re-run render to embed them. Report includes: KPIs, scene list, scene detail cards, prop list, prop detail cards (with anchor checklists / state variants / prompt packages all with copy buttons), quality gate panel, JSON export (downloads art.json as-is).

One-line summary: how many scenes (main scenes / variants each), how many props, total anchors, report path; mention any failed gates explicitly.

Do not say "images generated"—that step no longer exists; the deliverable is prompts.

Final layout:

<output directory>/
├── <drama-name>-art.json
├── <drama-name>-art.md
├── art-report.html                ← double-click to open
└── images/                        ← this skill does not write this directory
    └── <slug>-sheet.png           ← downstream puts generated images here; render will pick them up

The Three Skill Relay

novel-outline    → outline.json (What: structure & episodes)
novel-characters → cast.json    (Who: character assets)
novel-art        → art.json     (Where + what's in hand: art assets)

seed consumes the scenes and props sections of outline.json (if outline has no props, props are left blank and the model extracts from the original text); --cast consumes cast.json. Each of the three JSON files has a report with export buttons; after modifications, they can be fed back to their respective render/validate commands.

Boundaries

  • Report interface supports Chinese and English (--lang; defaults to Chinese, or follows the lang field in art.json); generation prompts are always in English
  • This skill does not generate images. image.sheet is a layout instruction for downstream; sheet specs are in references/sheet.md
  • Scene count has no hard limit—the limit is enforced by novel-outline's main scene gate; here, each asset's quality is managed
  • Only narrative props are collected, 3–8 items recommended—each additional item requires more cross-episode consistency maintenance

Self-Test

node {baseDir}/scripts/selftest.mjs

151 assertions; no model calls, no quota spent. Each of the 10 quality gates has its own breaking test case. Run this after modifying scripts.

Built-in Example

{baseDir}/examples/Ferry-art.json: Complete settings for three scenes + two narrative props (old suitcase, old county office inkstone) from "Ferry"; all quality gates pass (including character name checks against the novel-characters example cast). Serves as a quality baseline and a test fixture.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能