everything used to make Welcome to flarebot
Every panel prompt gets wrapped in this canonical style prefix
(from docs/art/cartoon/_gen_batch.sh):
Hand-drawn cartoon illustration in the loose frenetic style of Sergio Aragonés Mad Magazine margin doodles — bold dynamic ink linework with variable line weight, exaggerated cartoon figures with bulbous noses and big expressive eyes, action lines, dust clouds, motion smears, sweat droplets, hand-lettered captions integrated into the scene. Full color in classic Mad-magazine cover palette: deep red, mustard yellow, sky blue, leaf green on warm cream paper. NO photo-realism, NO digital smoothness, NO stiff geometric lines.
One line per panel in docs/art/cartoon/_prompts.tsv — name, tab, subject
prompt. The style envelope above is prepended to each at generation time.
Subject: a small friendly cartoon robot with a bright candle-flame head, stubby riveted arms, and a little chest hatch labeled .env with a brass keyhole (FLAREBOT) flinging open the big wooden double doors of a cluttered workshop. A hand-lettered banner across the top reads: WELCOME TO FLAREBOT. Speech bubble from the robot: 'LET'S MAKE YOUR IDEA!'. A cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) steps in with a giant glowing lightbulb over their head. Confetti, dust clouds, action lines.
Subject: a cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) at a workbench laptop whose screen reads 'git clone' in big letters. Overhead a toy crane lowers a shiny robot skeleton frame onto the bench. A wooden sign on the bench reads YOUR FORK. A small friendly glowing orange starburst sprite with big eyes labeled CLAUDE hovers beside the bench holding a tiny wrench. Caption ribbon: STEP 1 · FORK IT. Action lines, dust clouds. No magazine masthead, no logo text except the labels described.
Subject: a cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) pulling a giant lever on a carnival-style control panel with four big toggle switches labeled DRAW, SHIP, RECAP, MAP, green lights popping on above each switch. A small friendly cartoon robot with a bright candle-flame head and a chest hatch labeled .env (FLAREBOT) holds a clipboard and presses a big red button labeled TEST. Caption ribbon: STEP 2 · THE WIZARD. Sparks flying, action lines.
Subject: a cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) feeding three oversized brass keys labeled XAI, OPENAI and CF into the open chest hatch labeled .env of a small friendly cartoon robot with a bright candle-flame head (FLAREBOT), a padlock snapping shut on the hatch. A big red rotated rubber stamp across the corner reads: NEVER COMMIT KEYS. A tiny cartoon burglar peeking through the window is being shooed away by the robot. Caption ribbon: STEP 3 · YOUR KEYS. Action lines, sweat droplets.
Subject: a cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) with a big speech bubble: 'DRAW ME A FOX!'. A small friendly glowing orange starburst sprite with big eyes labeled CLAUDE pulls a lever, and a small friendly cartoon robot with a bright candle-flame head and a chest hatch labeled .env (FLAREBOT) sprays paint from a nozzle arm onto a framed picture of a fox piloting a hot-air balloon. Finished framed paintings stack into a wooden crate labeled art/. Caption ribbon: STEP 4 · DRAW. Paint splatters, motion smears.
Subject: a small friendly cartoon robot with a bright candle-flame head and a chest hatch labeled .env (FLAREBOT) launching framed paintings from a wooden catapult up toward a big smiling cloud labeled CLOUDFLARE, a banner hanging from the cloud reads workers.dev. A cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) cheers with a speech bubble: 'SHIP IT!'. Little rocket trails behind the flying frames. Caption ribbon: STEP 5 · SHIP. Action lines, smoke puffs.
Subject: a workshop corkboard wall. On the left a hand-drawn calendar poster labeled RECAP with tiny cartoon doodles inside the day cells. On the right a detective-style string-and-pins graph labeled MAP with round nodes connected by yarn, a few nodes circled in red dashed ink. A cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) inspects the graph with a magnifying glass. A small friendly cartoon robot with a bright candle-flame head (FLAREBOT) stamps a sheet of paper with a rubber stamp reading LOCAL ONLY. Caption ribbon: STEP 6 · LOOK INSIDE. Dust clouds, action lines.
Subject: a cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) bolting a shiny new mechanical arm labeled NEW SCRIPT onto a small friendly cartoon robot with a bright candle-flame head and a chest hatch labeled .env (FLAREBOT), who proudly flexes the new arm. On the workbench sit a fresh brass key labeled NEW KEY and a rolled blueprint labeled NEW SKILL. A hand-lettered banner across the top reads: MAKE IT YOURS. Sparks flying, dust clouds, action lines.
Subject: a small friendly cartoon robot with a bright candle-flame head, stubby riveted arms, and a chest hatch labeled .env (FLAREBOT) and a small friendly glowing orange starburst sprite with big eyes labeled CLAUDE together heaving a framed comic-book page up into a big fluffy cumulus cloud shaped like a castle with a banner reading PAGES, a rope-and-pulley crane doing the lifting. A cheerful maker with wild curly hair, round goggles pushed up on the forehead, rolled-up sleeves and a tool belt (the MAKER, name-patch MAKER) cheers from below waving a checkered flag. A wooden signpost planted in the ground points at the cloud and reads ephemeral-sean.pages.dev. Caption ribbon: EPILOGUE - LIVE ON THE CLOUD. Confetti, action lines, dust clouds.
docs/art/cartoon/_gen_batch.sh — regenerates any missing panel JPEG
in parallel via genimg.sh (xAI Grok). Delete a .jpeg and re-run to re-roll it.
#!/usr/bin/env bash
# Parallel-batch driver for Sergio Aragonés / Mad-margin cartoon JPEGs.
# Copy this file into a project's art/cartoon/ folder alongside _prompts.tsv.
#
# Usage:
# bash _gen_batch.sh # generate every JPEG missing from this folder
#
# The companion file _prompts.tsv must live next to this script and contain:
# name<TAB>subject-prompt-without-style-envelope
# one line per image, no header, no blank lines.
#
# genimg.sh refuses to clobber existing JPEGs, so re-running this regenerates
# only the missing ones. To re-roll a single image: delete its .jpeg, re-run.
#
# Default: 4 jobs in parallel. Tune MAXP if you hit rate limits.
set -uo pipefail
# ---- Configuration -----------------------------------------------------------
# Path to scriptorium's genimg.sh wrapper. Sean's checkout is typically here;
# adjust if you've put scriptorium elsewhere.
GENIMG="${GENIMG:-$HOME/git/scriptorium/scripts/genimg.sh}"
# Output dir = the dir this script lives in.
OUTDIR="$(cd "$(dirname "$0")" && pwd)"
# Parallelism. xAI handles 4 concurrent reasonably; bump if you have headroom.
MAXP="${MAXP:-4}"
# The canonical style envelope. Don't edit casually — it's tuned.
STYLE='Hand-drawn cartoon illustration in the loose frenetic style of Sergio Aragonés Mad Magazine margin doodles — bold dynamic ink linework with variable line weight, exaggerated cartoon figures with bulbous noses and big expressive eyes, action lines, dust clouds, motion smears, sweat droplets, hand-lettered captions integrated into the scene. Full color in classic Mad-magazine cover palette: deep red, mustard yellow, sky blue, leaf green on warm cream paper. NO photo-realism, NO digital smoothness, NO stiff geometric lines.'
# ---- Sanity checks -----------------------------------------------------------
if [ ! -x "$GENIMG" ] && [ ! -f "$GENIMG" ]; then
echo "ERROR: scriptorium genimg.sh not found at $GENIMG" >&2
echo "Set GENIMG=/path/to/genimg.sh or move scriptorium to ~/git/scriptorium" >&2
exit 1
fi
if [ ! -f "$OUTDIR/_prompts.tsv" ]; then
echo "ERROR: _prompts.tsv not found in $OUTDIR" >&2
echo "Create it: one line per image, name<TAB>subject-prompt, no header." >&2
exit 1
fi
# ---- Run ---------------------------------------------------------------------
pids=()
count=0
while IFS=$'\t' read -r name subject; do
[ -z "${name:-}" ] && continue
out="$OUTDIR/$name.jpeg"
if [ -f "$out" ]; then
echo "[skip-exists] $name"
continue
fi
echo "[start] $name"
(
bash "$GENIMG" "$out" "$STYLE $subject" xai > "/tmp/genimg-$name.log" 2>&1
if [ -s "$out" ]; then
echo "[done] $name ($(wc -c < "$out" | tr -d ' ') bytes)"
else
echo "[FAIL] $name — see /tmp/genimg-$name.log"
fi
) &
pids+=($!)
count=$((count+1))
if [ "$count" -ge "$MAXP" ]; then
wait "${pids[@]}"
pids=()
count=0
fi
done < "$OUTDIR/_prompts.tsv"
# drain remaining
if [ "${#pids[@]}" -gt 0 ]; then
wait "${pids[@]}"
fi
echo "ALL DONE."
ls -la "$OUTDIR"/*.jpeg 2>/dev/null | wc -l | xargs echo "jpegs in dir:"