Install
openclaw skills install cover-imageGenerate article cover images with structured dimensions and bundled generation tooling. Use when the user asks to create a cover image, article cover, blog header, newsletter hero image, or banner-style key visual.
openclaw skills install cover-imagecover-image)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.This skill turns a vague "make a cover image" request into a stable set of structured decisions instead of starting from scratch every time.
Script:
scripts/scaffold.tsscripts/build-batch.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/cover-image/ (project) and/or ~/.image-skills/cover-image/ (home).Choose these six dimensions, then assemble the prompt:
typepaletterenderingtextmoodaspect| Script | Purpose |
|---|---|
scripts/scaffold.ts | Initialize brief.md and prompts/cover.md |
scripts/build-batch.ts | Generate batch.json from multiple prompt variants |
npm run generate | Generate the cover image |
./scripts/vendor/compression-runtime/scripts/main.ts | Compress output for delivery |
Create the working directory:
${BUN_X} {baseDir}/scripts/scaffold.ts \
--output-dir cover-image/topic-slug \
--topic "Why Habits Stick" \
--concept "A repeating loop turning into visible momentum" \
--type conceptual \
--palette elegant \
--rendering editorial \
--text title-only \
--mood balanced \
--aspect 16:9 \
--lang en
This creates:
brief.mdprompts/cover.mdExtract:
Default priorities:
type: conceptualpalette: elegantrendering: editorial or postertext: title-onlymood: balancedaspect: 16:9If the user explicitly specifies style, mood, or aspect ratio, follow that preference.
Language rules:
brief.md and prompts/cover.mdUse brief.md to lock the audience, concept, and references before polishing the final prompt.
Make sure prompts/cover.md clearly states:
type / palette / rendering / text / mood / aspectbatch.json for VariantsIf you want to explore multiple cover directions, put several prompt files in prompts/, for example:
01-editorial.md02-poster.md03-cinematic.mdThen generate a batch file:
${BUN_X} {baseDir}/scripts/build-batch.ts \
--prompts cover-image/topic-slug/prompts \
--output cover-image/topic-slug/batch.json \
--images-dir cover-image/topic-slug \
--model "$M" \
--jobs 3
The script reads Rendering style: and Aspect ratio: from each prompt file when possible, then maps them into generation task fields.
The bundled image runtime currently exposes one structured style argument, --style, so:
rendering to --stylepalette, type, text, and mood into the prompt body--ref when the user provides referencesRecommended mapping:
| cover rendering | runtime --style |
|---|---|
editorial | editorial |
poster | poster |
cinematic | cinematic |
watercolor | watercolor |
flat-vector | flat-illustration |
ink-brush | ink-brush |
chalk | chalk |
manga | manga |
anime | anime |
photoreal | photoreal |
3d-render | 3d-render |
infographic | infographic |
Use references/prompt-template.md. Make sure to:
Generate through the bundled runtime at npm run generate.
On first use in a new project, run npm run ensure-ready -- --project <your-project> --workflow cover from this skill directory before generation starts. This reads the doctor report and auto-runs bootstrap if local script dependencies are still missing. If the report shows a missing IMAGE_GEN_API_KEY and the user approves, run npm run setup -- --project <your-project> --workflow cover --persist-api-key when the key is already in env, or persist it to .image-skills/cover-image/.env on the user's behalf, then continue without leaving this workflow.
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.
Example:
${BUN_X} {baseDir}/npm run generate \
--promptfiles prompts/cover.md \
--style editorial \
--image cover-image/topic-slug/cover.png \
--ar 16:9 \
-m "$M"
Batch example:
${BUN_X} {baseDir}/npm run generate \
--batchfile cover-image/topic-slug/batch.json \
--jobs 3
If the user has not chosen a model yet, follow this skill's model-selection rules first.
Suggested output directory:
cover-image/<topic-slug>/
Suggested minimum files:
brief.mdprompts/cover.mdbatch.jsoncover.pngIf the content comes directly from chat instead of a file, it is also useful to save the summary or title into source.md for reproducibility.
When the user wants changes after seeing the generated cover:
rendering / --style, re-generate. Keep other dimensions.palette in the prompt body, re-generate.prompts/cover.md, re-generate.prompts/, use build-batch.ts to generate multiple options in one batch.--ref, use the current output as reference with adjusted prompt to refine.Only re-generate the specific image that needs changes. Do not re-run the entire workflow from scratch unless the user wants a fundamentally different direction.
brief.md and prompts/cover.md exist in the output directory.type / palette / rendering / text / mood / aspect.Choose a different higher-level skill for:
When the cover image is ready:
${BUN_X} {baseDir}/./scripts/vendor/compression-runtime/scripts/main.ts cover-image/topic-slug/cover.png -f webp -q 80
Internal checklist (for agent, not shown to user): chosen type / palette / rendering / text / mood / aspect, model, whether --style or --ref was used, compression done.