From podcast-creator
Generate a square cover image for a podcast episode with Gemini 3 Flash Image (fallback to Pro), driven by the episode title from show_notes.json or a manual prompt.
How this skill is triggered — by the user, by Claude, or both
Slash command
/podcast-creator:cover-image-generationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a cover image for a podcast episode using the Gemini 3 Flash Image
Generate a cover image for a podcast episode using the Gemini 3 Flash Image model, with an automatic fallback to the Gemini 3 Pro Image model ("Nano Banana Pro") if the primary model errors out.
This is a pipeline producer skill: the orchestrator (podcast-studio) invokes
it after metadata, passing the run directory via --workspace, the metadata
file via --metadata, and the GEMINI_API_KEY in the subprocess environment.
The cover's title text comes from show_notes.json; any house style for the
cover comes from the active show profile via the prompt the orchestrator
supplies — this skill ships only generic, neutral fallback templates.
google-genai (>= 2.0.1) — installed into that venv (not the system Python).Interpreter (R70).
generate_image.pyimportsgoogle-genai, which lives in the orchestrator's uv-managed venv — run it through the venv interpreter the orchestrator resolved in Step 0 ("$PODCAST_PY" <script>), not barepython3. Thepython3 …in the examples is shorthand; substitute the resolved venv interpreter. See podcast-studio SKILL.md Step 0.
--metadata <path> — a show_notes.json produced by metadata-generation.
The script reads show_title from it and builds the prompt from a built-in
template set (preferred path).--prompt "<text>" — a fully constructed prompt you supply yourself.--workspace <run-dir> — used to derive the default output path when
--output is omitted.One of --metadata or --prompt is required.
Preferred — drive the cover from the episode metadata:
python3 "${CLAUDE_SKILL_DIR}/scripts/generate_image.py" \
--workspace <run-dir> \
--metadata <run-dir>/data/show_notes.json
Alternative — supply a manual prompt:
python3 "${CLAUDE_SKILL_DIR}/scripts/generate_image.py" \
--workspace <run-dir> \
--prompt "A prompt describing the cover"
| Argument | Default | Description |
|---|---|---|
--workspace | workspace | Run directory; used for the default output path. |
--metadata | — | Path to show_notes.json; the title drives a templated prompt. |
--prompt | — | A manually constructed prompt (mutually sufficient with --metadata). |
--output | {workspace}/images/cover.png | Output image path. The extension is rewritten to match the bytes actually returned. |
--reference | — | Optional reference image uploaded for visual consistency. |
The image is saved to {workspace}/images/cover.<ext>, where <ext> matches
the actual returned format (.png or .jpg, sniffed from the image magic
bytes). Reference the file by its real name (e.g. glob cover.*); do not
assume .png.
gemini-3.1-flash-image-previewgemini-3-pro-image-previewWhen --metadata is used, the script selects one of its built-in prompt
templates at random and inserts the episode title. The title text is the only
text that should appear on the cover.
When you construct a prompt yourself via --prompt:
npx claudepluginhub cmgramse/skill-development --plugin podcast-creatorBuilds a throwaway prototype to answer a design question about UI appearance or state/logic behavior. Guides you through two branches: interactive terminal app for logic validation, or multiple UI variations for visual exploration.