Install
$ agentstack add skill-littlewindy123-lianhuanhua-skills-lianhuanhua ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Lianhuanhua
Create a complete, reproducible comic-video project. Codex directs the story and images. Bundled scripts handle audio, timelines, validation, and FFmpeg rendering.
Non-negotiable constraints
- Support Codex CLI workflow and local Studio V0.3.
- Use Doubao Speech 2.0 as the only hosted TTS provider.
- Use
X-Api-Resource-Id: seed-tts-2.0. - For TTS 2.0 timing, request
audio_params.enable_subtitle=true; do not rely on the TTS 1.0-onlyenable_timestampbehavior. - Default Studio image workflow is Codex automatic generation with node confirmations. Do not use visual inspection unless the user chooses strict review.
- Do not call text-to-video or image-to-video models.
- Never claim success until the final media passes ffprobe validation.
- Preserve raw service events and generated prompts for debugging and reproducibility.
- Do not generate all story panels in parallel when using Codex image generation. Generate anchors first, then panels sequentially.
- Default Studio image workflow is
mode=codex,review=none,repair=ask. - Before generating any panel from a reference image that looks like a meme, sticker, network character, IP, logo, text-marked character, or viral image, search the web and record the identity. Do not guess the species or identity from first glance.
- Studio-first startup: when the user says they want to create/start/make a Lianhuanhua video without already providing complete files and settings, launch or reuse the local Studio page first. Do not ask for story text, reference images, voice, ratio, or style in chat before opening Studio.
Resolve paths
Treat the directory containing this SKILL.md as SKILL_ROOT.
The CLI entry point is:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py"
Use an absolute path when the shell or operating system makes relative paths ambiguous.
Run the local Studio V0.3 web UI with:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" studio --workspace
Studio is a local-only HTML/CSS/JavaScript interface backed by Python's standard library HTTP server. It is for local project work, not production hosting.
Studio-first startup
For ordinary creation requests such as “我要开始创作了”, “我要做视频”, “连环画 Skills 我要来做视频了”, or similar:
- Initialize or locate the current Lianhuanhua workspace.
- Start or reuse the Studio server before asking for creative inputs.
- Open or navigate the browser to the Studio URL.
- Let the user enter narration, Doubao key, voice, speech rate, aspect ratio, reference image or style text, and image density in the page.
- Use chat follow-ups only for Studio handoff actions such as “继续”, troubleshooting, or explicit user questions.
Only skip Studio-first startup when the user explicitly asks for CLI-only operation, batch automation without UI, or has already supplied complete inputs and asks Codex to proceed without the page.
Inputs
Require:
- Either at least one character/reference image, or a concrete visual style description.
- Exactly one story source:
- written narration text, or
- existing audio, or
- existing video.
Optional:
- Desired mood and visual style.
- Desired voice in ordinary language, such as “温柔成熟女声” or “沉稳男声”.
- Advanced override: a Doubao speaker ID.
- Image workflow:
external: export prompts only; the user generates images elsewhere and returns files.codex: Codex uses$imagegen.hybrid: Codex generates key images only; the user generates the rest externally.- Existing SRT or timeline JSON.
- Background music.
- Output dimensions; default to 1080x1920, 30 fps.
- Target subtitle font.
Outputs
Always preserve and return:
output/silent_video.mp4output/narration.*output/subtitles.srtoutput/final_video.mp4output/timeline.jsonoutput/storyboard.jsonoutput/panels/logs/
Also preserve the character/style/continuity JSON files and panel prompts in work/. Studio also preserves:
work/studio_state.jsonoutput/prompts-package.zipoutput/prompts.json
Read references progressively
Read only the reference needed for the current phase:
- Overall phases:
references/workflow.md - Doubao TTS:
references/doubao-tts-2.0.md - Existing audio/video:
references/audio-timeline.md - Character lock:
references/character-consistency.md - Storyboard creation:
references/storyboard-rules.md - Image generation:
references/image-generation.md - Rendering:
references/rendering.md - Output checks:
references/output-contract.md - Failures:
references/troubleshooting.md
Phase 0: Preflight
- Inspect all supplied files.
- Determine the source mode:
text,audio, orvideo. - Confirm that reference images are readable and suitable for the requested aspect ratio.
- If any reference image looks like a meme, sticker, known IP, logo, text-marked character, or viral image, search the web before image generation and record the result in
work/character_bible.jsonunderidentity_research. - Run:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" doctor
- Initialize a workspace:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" init --workspace
- Copy inputs into the initialized
input/directories without overwriting originals. - Do not continue when FFmpeg or ffprobe is missing.
Studio V0.3 handoff protocol
When the user says "继续" in Codex while working from Studio:
- Find the current project workspace.
- Read
work/studio_state.json. - Execute only the task named by
action. - If
panel_idexists, process only that one panel. - Stop at the next confirmation node and let the user return to Studio.
- Do not score all images, repair all images, or retry unrelated panels unless the current action explicitly asks for it.
- If the action would call
$imagegenand a real reference image hasidentity_research.status=pending, do not generate images yet. Search suspected IP/meme identity first, updatework/character_bible.json, then continue.
Studio V0.3 is a single creation cockpit. Users enter narration, Doubao key, voice, speech rate, aspect ratio, reference images or style text, and image density. The main flow is Codex automatic generation, with confirmations at voice_ready, storyboard_ready, images_ready, and video_ready.
Allowed stages are create, voice, storyboard, images, and video.
Allowed actions are:
generate_voicegenerate_full_projectgenerate_storyboard_and_promptsgenerate_all_panelsregenerate_panelvalidate_manual_panelsrender_videoconfirm_voiceconfirm_storyboardconfirm_images
Do not write Doubao API keys to project.json, studio_state.json, prompts.json, or exported packages. Studio may store the key only in work/.secrets.json, which is excluded by .gitignore.
Phase 1A: Text narration mode
- Read
references/doubao-tts-2.0.md. - Normalize punctuation and line breaks without changing the story's meaning.
- Create
work/narration_plan.jsonfrom the bundled template. - Select the voice automatically from the story, mood, audience, language, and requested style. Do not ask ordinary users for a speaker ID.
- Search the bundled official TTS 2.0 catalog when choosing:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" voices --query ""
- The catalog contains all 442 official TTS 2.0 voices captured from the official voice list on 2026-06-25. Write the chosen voice name or natural-language preference to
project.tts.voice_preference. - If the user explicitly supplies a speaker ID, write it to
project.tts.speaker; it overrides automatic selection. - If the user asks where to find or create a voice, explain:
- preset voices: audition and copy the ID from the Doubao Speech console's voice library,
- custom voices: create an authorized voice through Voice Replication, then copy its speaker ID,
- official voice list:
https://www.volcengine.com/docs/6561/1257544, - console:
https://console.volcengine.com/speech/app.
- Require only
DOUBAO_API_KEYfor a bundled catalog voice. TreatDOUBAO_SPEAKERas an advanced optional override. - Prefer one continuous TTS request for naturalness unless the story requires major voice-direction changes.
- Use
seed-tts-2.0-expressivewhen voice instructions are required and the selected voice supports it. - Put the primary voice direction in
additions.context_texts; only its first item is relied upon. - Generate audio and subtitle events:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" tts --workspace
- Verify that
work/audio/narration.*,work/timeline.json, andwork/subtitles.srtexist. - If the API returns audio but no subtitles, keep the audio and raw event log, then use the media transcription fallback only after explaining the fallback in the project log.
Phase 1B: Existing audio/video mode
- Read
references/audio-timeline.md. - Extract normalized WAV from the supplied file:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" extract-media --workspace --input
- Prefer a supplied SRT or timeline JSON.
- Otherwise transcribe locally with faster-whisper:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" transcribe --workspace
- This transcription is a local alignment utility, not another TTS provider.
- Review names and emotionally important wording against the user's source before continuing.
Phase 2: Build the visual identity lock
- Read
references/character-consistency.md. - Inspect every reference image carefully.
- If a reference image resembles a meme, sticker, network character, IP, logo, text-marked character, or viral image, search the web for the actual identity. Do not label it as a generic animal, mascot, or person unless search confirms that no known identity is available.
- Write
work/character_bible.jsonusing the schema inassets/schemas/character_bible.schema.json, includingidentity_research. - If identified, record the real IP/name, aliases, creator or owner when discoverable, source URLs, confidence, observable traits, and the exact
prompt_identitythat future panel prompts must use. - If search is inconclusive, record
status=unidentifiedand describe only observable traits. If no reference image exists, recordstatus=not_needed. - Separate:
- immutable identity traits,
- mutable pose/expression traits,
- forbidden changes.
- Write
work/style_bible.jsonusing the bundled schema. - If the user chose
codexorhybrid, use$imagegento creatework/character_sheet.pngfrom the original reference image only after identity research is no longer pending. - If the user chose
external, do not call$imagegen; keep the original reference images as the visual lock and let the exported prompt pack describe the desired panels. - Only visually inspect the character sheet when the user chose
codex,hybrid, or explicitly asked for visual checking.
Phase 3: Create the storyboard
- Read
references/storyboard-rules.md. - Read
work/timeline.jsonand preserve its absolute timing. - Split each narration segment into one to four visual beats based on actions, time changes, location changes, emotional turns, and duration.
- Do not split merely by character count.
- Create
work/storyboard.jsonusingassets/schemas/storyboard.schema.json. - Each shot must define:
- absolute start/end,
- source narration segment,
- story action,
- character state,
- scene state,
- composition,
- motion preset,
- transition,
- whether it is an anchor frame.
- Create
work/continuity_ledger.jsonand carry state between shots. - Validate before image generation:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" validate --workspace
Phase 4: Generate consistent panels
- Read
references/image-generation.md. - If
project.image_workflow.modeis missing orask, Studio V0.3 should default tocodex. In CLI-only workflows, stop once and ask the user to choose:
external: cheapest; export prompt pack only, user generates images in GPT or another image tool.codex: most automatic; use$imagegeninside Codex.hybrid: Codex generates anchors/key images, user generates ordinary panels externally.
- Save the choice to
project.image_workflow.mode. Studio defaults tocodex; default review isnone; default repair isask. - Build deterministic prompt files and the external prompt pack:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" build-prompts --workspace
This writes both work/prompts/*.md and:
output/image_prompt_pack.mdoutput/image_prompt_pack.jsonoutput/prompts-package.zipoutput/prompts.json
- For
externalmode:
- Do not call
$imagegen. - Return
output/image_prompt_pack.mdto the user. - Tell the user they can paste the pack into GPT or another image generator, create all panels in one batch, save files with the exact
Output path, then return them. - When the user returns images, run low-cost validation only: existence, readability, target aspect ratio, schema checks, and later ffprobe.
- Do not inspect visual quality, character drift, or style drift unless the user explicitly asks.
- For
codexmode, generate anchor frames first:
- opening state,
- major scene changes,
- emotional turning point,
- ending state.
- Invoke
$imagegenexplicitly for every generated or edited image only incodexor selectedhybridsteps.
- Before invoking
$imagegen, checkwork/character_bible.json. - If a real reference image exists and
identity_research.statusis notsearched,identified,unidentified, ornot_needed, stop and complete identity research first. - If
identity_research.is_known_ip=true, panel prompts must use the real IP/name, aliases, user reference image, and observable traits. Do not replace it with a generic label such as “cat”, “bear”, or “mascot”.
- Attach, in this order when available:
- original character reference,
- approved character sheet,
- current scene anchor,
- previous approved panel.
- Prefer editing the previous approved panel for small changes. Generate from references only when the scene changes substantially.
- Save output exactly to the path assigned in
storyboard.json. - Do not write
work/panel_reviews.jsonby default. Ifproject.image_workflow.reviewismanual, list generated image paths for the user to inspect. If it isstrict, visually inspect panels and write/updatework/panel_reviews.json. - If a file is missing or unreadable, report the exact path. Do not auto-generate or auto-repair unless
project.image_workflow.repairiscodexor the user explicitly asks. - If the user says a panel is wrong, either export a targeted repair prompt (
prompt-only) or use$imagegento repair only that panel when the user chooses Codex repair.
Studio Phase 4A: Manual image package
For manual image generation, provide output/prompts-package.zip.
The ZIP must contain:
README.mdprompts.mdprompts.csvprompts.jsonpanels/panel_001.txt,panels/panel_002.txt, and so on.
When manual images are returned, perform deterministic checks only: filenames, duplicates, missing panels, file size, readability, target aspect ratio, schema checks, and later ffprobe. Do not judge image quality or style drift unless explicitly asked.
Phase 5: Render
- Read
references/rendering.md. - Confirm every storyboard image exists.
- Use low-cost image checks only unless the user requested strict visual review:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" validate --workspace --require-images
- Render the silent video:
python "$SKILL_ROOT/scripts/lianhuanhua_cli.py" render --workspace --silent-only
- Render final video with narration and optional subtitles:
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: littlewindy123
- Source: littlewindy123/lianhuanhua-skills
- License: MIT
- Homepage: https://github.com/littlewindy123/lianhuanhua-skills#readme
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.