Install
openclaw skills install comicGenerate educational or narrative comic pages with structured art, tone, layout, and language decisions and bundled generation tooling. Use when the user asks to create a knowledge comic, tutorial comic, biography comic, educational comic, or a multi-page comic sequence.
openclaw skills install comiccomic)If you use reference images (image-to-image / series reference / consistency refs):
http:// may work but is insecure and can be blocked by some networks.data: URLs are not supported by the WeryAI gateway.Generate educational or narrative comic pages: a knowledge comic, tutorial comic, biography comic, educational comic, or a multi-page comic sequence — structured art, tone, layout, and language decisions included.
This skill turns source material into a sequence of comic pages.
Maintain the art and tone mapping when the bundled generation runtime updates, and re-check recent runtime behavior if a newer version changes page rendering.
Before the first generation run in a new OpenClaw or local instance, run:
npm run ensure-ready -- --project . --workflow comic
This step is mandatory. It reads the doctor report and automatically runs bootstrap when local script dependencies such as pdf-lib are still missing.
If the report shows a missing IMAGE_GEN_API_KEY and the user approves, run npm run setup -- --project . --workflow comic --persist-api-key when the key is already in env, or persist it to .image-skills/comic/.env on the user's behalf, then continue the comic workflow without leaving this skill.
When this skill is first connected, tell the user that the default generation model is Nano Banana 2 (GEMINI_3_1_FLASH_IMAGE). Also tell them it can be switched later whenever another model fits the task better.
Script:
scripts/scaffold.tsscripts/build-prompts.tsscripts/build-batch.tsscripts/merge-to-pdf.tshttps://api.weryai.com).IMAGE_GEN_API_KEY. The key is never printed. It may be persisted only when you explicitly run npm run setup -- --persist-api-key.https:// recommended). http:// may work but is insecure. Local file paths and data: URLs are rejected..image-skills/comic/ (project) and/or ~/.image-skills/comic/ (home).Not a good fit for:
arttonelayoutaspectSee:
| Script | Purpose |
|---|---|
scripts/scaffold.ts | Initialize storyboard, characters, and page prompts |
scripts/build-prompts.ts | Regenerate page prompts from storyboard.md |
scripts/build-batch.ts | Generate batch.json from page prompts |
scripts/merge-to-pdf.ts | Merge page images into a single PDF |
scripts/package-delivery.mjs | Prepare delivery bundle with manifest and previews |
npm run generate | Generate page images |
./scripts/vendor/compression-runtime/scripts/main.ts | Compress output for delivery |
Create the working directory:
${BUN_X} {baseDir}/scripts/scaffold.ts \
--output-dir comic/topic-slug \
--title "Comic Title" \
--topic "Topic summary" \
--art ligne-claire \
--tone neutral \
--layout standard \
--aspect 3:4 \
--scope standard \
--lang en \
--panels 3 \
--pages 4
This creates:
analysis.mdstoryboard.mdcharacters/characters.mdprompts/00-cover.mdprompts/01-page.mdExtract:
art, tone, and layoutDefault priorities:
art: ligne-clairetone: neutrallayout: standardaspect: 3:4scope: standardpanels: 3Recommended rules:
ligne-claire + neutralmanga + actionligne-claire + warmink-brush + dramaticThe bundled image runtime does not directly understand comic page grammar, so:
art to --styletone, layout, camera language, and panel logic into the prompt bodyRecommended mapping:
| comic art | runtime --style |
|---|---|
ligne-claire | flat-illustration |
manga | manga |
realistic | photoreal |
ink-brush | ink-brush |
chalk | chalk |
storyboard.md, Then Build PromptsSave at least:
analysis.mdstoryboard.mdcharacters/characters.mdcharacters/characters.pngprompts/00-cover.mdprompts/01-page.mdWhen the storyboard is ready, generate prompt files automatically:
${BUN_X} {baseDir}/scripts/build-prompts.ts \
--storyboard comic/topic-slug/storyboard.md \
--output-dir comic/topic-slug/prompts
Each page prompt should clearly describe:
Character consistency rules:
characters/characters.png first, then reuse that same reference for every pagecharacters/characters.md before generating multi-page comicscharacters/characters.png as a reference sheet before page generation--ref, pass the same characters/characters.png to every page--ref, copy the key character descriptions into every page promptstoryboard.md so outfit, props, location, and scene progression stay aligned from page to pageRecommended sequence:
storyboard.mdcharacters/characters.mdcharacters/characters.pngstoryboard.md includes Continuity Anchorsbatch.jsonWhen page prompts are ready, generate a batch file:
${BUN_X} {baseDir}/scripts/build-batch.ts \
--prompts comic/topic-slug/prompts \
--storyboard comic/topic-slug/storyboard.md \
--ref comic/topic-slug/characters/characters.png \
--output comic/topic-slug/batch.json \
--images-dir comic/topic-slug \
--model "$M" \
--jobs 4
The script:
00-cover.md, 01-page.md, 02-page.md, and so onart from storyboard.md into runtime --style when possiblestoryboard.md when --ref is not explicitly overriddenDefault best-performing strategy:
characters/characters.png firstGenerate the character sheet first:
${BUN_X} {baseDir}/npm run generate \
--promptfiles characters/characters.md \
--style manga \
--image comic/topic-slug/characters/characters.png \
--ar 4:3 \
-m "$M"
Single-page example:
${BUN_X} {baseDir}/npm run generate \
--promptfiles prompts/02-page.md \
--style manga \
--ref comic/topic-slug/characters/characters.png \
--image comic/topic-slug/02-page.png \
--ar 3:4 \
-m "$M"
Batch example:
${BUN_X} {baseDir}/npm run generate \
--batchfile comic/topic-slug/batch.json \
--jobs 4
After page images are ready:
If this skill was distributed as a slim package without node_modules, run npm run bootstrap from this skill directory once before this step so the local PDF dependency is installed. If you forget, merge-to-pdf.ts now prints that exact recovery hint.
${BUN_X} {baseDir}/scripts/merge-to-pdf.ts comic/topic-slug
To choose a specific output path:
${BUN_X} {baseDir}/scripts/merge-to-pdf.ts comic/topic-slug -o comic/topic-slug/final.pdf
The script merges page files in the order 00-cover-*, 01-page-*, 02-page-*, and so on, across png, jpg, and jpeg.
When you need a cleaner handoff than a raw table of URLs, prepare a delivery bundle:
${BUN_X} {baseDir}/scripts/package-delivery.mjs comic/topic-slug
This creates:
delivery/preview.md with inline preview entries for small batchesdelivery/manifest.json with ordered file metadatadelivery/pages/ with copied page imagesdelivery/<topic-slug>-delivery.zip automatically when the page count is large enoughDelivery rules:
${BUN_X} {baseDir}/./scripts/vendor/compression-runtime/scripts/main.ts comic/topic-slug/ -r -f webp -q 80
Internal checklist (for agent): art / tone / layout / aspect, page count, character reference used, model, PDF generated, compression done.
Suggested output directory:
comic/<topic-slug>/
Suggested minimum files:
analysis.mdstoryboard.mdcharacters/characters.mdcharacters/characters.pngprompts/00-cover.mdprompts/NN-page.mdbatch.json00-cover.pngNN-page.png<topic-slug>.pdfscaffold.ts on an existing directory overwrites storyboard.md, characters/characters.md, and all prompt files. Back up before re-scaffolding.build-prompts.ts overwrites prompt files in prompts/ based on the current storyboard.md.build-batch.ts overwrites batch.json.--batchfile regenerates all pages; keep good pages by removing their entries from batch.json first.merge-to-pdf.ts overwrites the existing PDF.storyboard.md, characters/characters.md, and per-page prompt files exist in the output directory.merge-to-pdf.ts.When the user wants changes after seeing generated comic pages:
art in storyboard.md, update --style mapping, re-generate affected pages. Ask if all pages or specific ones.characters/characters.png with more explicit descriptions, then re-generate pages using the updated reference sheet.storyboard.md, rebuild its prompt, re-generate only that page.storyboard.md to add/reorder pages, rebuild prompts for changed pages, re-generate.--promptfiles prompts/NN-page.md. Keep other pages.After any page changes, re-run merge-to-pdf.ts to update the PDF.
This version of comic focuses on: