Claude Code as a Creative Tool: Some Experiments
I got annoyed at Nano Banana.
Not in a serious way - just that low-grade aesthetic irritation you feel when something is almost good. The AI-generated infographics flooding LinkedIn have a recognisable look: certain font choices that aren't quite right, text rendering that's slightly off in a way that's hard to articulate but impossible to unsee once you notice it. Image generation models, it turns out, are not great at fonts. They know what text looks like from a distance.
So I started thinking about what else you could do. If the problem is font rendering, use a real font renderer. Browsers do this brilliantly. And if you can write HTML and CSS - which Claude Code absolutely can - you can leverage the full weight of browser typography, CSS gradients, and Google Fonts to produce something that looks genuinely polished.
The pipeline is: write the HTML and CSS, serve it locally with python3 -m http.server, then capture it with Playwright at double resolution for a retina-quality PNG. Basically Canva-tier output from a few dozen lines of code. That one surprised me.
Here's a demo based on David Rock's SCARF framework - entirely generated with this approach:

What Else Is Possible? #
Once that worked, I couldn't stop pulling the thread.
The question I kept asking wasn't "what does Claude Code do well?" - it was "what toolchains are already installed on this machine, and what weird combinations haven't I tried yet?" Playwright isn't just a testing tool. ffmpeg isn't just for converting videos. Pillow isn't just for resizing images. These tools have capabilities that most people never touch because there's no obvious reason to reach for them in a normal workflow.
Kinetic typography was the next one. Python generates frames as PIL images, pipes the raw RGB bytes directly to ffmpeg via stdin, and out comes an H.264 MP4. No screen recording, no intermediate files, full pixel control. The first version was fairly mechanical - words appearing in sequence. By the third iteration I had a virtual camera system flying through a large canvas of positioned words, with motion blur and easing functions to make the motion feel like it had some personality. Well, at least - I have the bones of that. Claude has dreadful taste in this regard and I'm probably going to need to think about my approach to this particular challenge a bit more.
The one I keep coming back to, though, is the terminal GIF generator.
The Claude Code Terminal GIF #

There's something a bit self-referential about using Claude Code to generate an animated GIF of a Claude Code terminal session. But it works really well. macOS terminal chrome, traffic lights, the Claude Code welcome UI, box-drawing characters - all constructed in Python, frame by frame, with a natural typing simulation that adds jitter and punctuation-specific pauses to make it feel like an actual person is typing. (Comma: +180ms. Period: +200ms. Small detail, huge difference.)
The thing I find most satisfying about this one isn't the output itself - it's the method. There's no screen recording involved, no faking it after the fact. The whole thing is generated. Every frame is deterministic.
The Meta-Pattern #
If there's a through-line to all of these experiments, it's that the interesting stuff happens at the intersections of tools that weren't designed to talk to each other. Playwright as a rendering engine. ffmpeg as a frame sink. Pillow as an animation system. None of these are surprising uses of powerful tools - they're obvious once you've done them. But nobody points you toward them.
I've got a list of things I haven't tried yet: generative art, data visualisation animations, SVG-to-video pipelines, PyCairo illustrations, music generation. Some of them will be dead ends. That's fine. I've got a piece of music Claude generously self described as some ambient Jazz. It sounded a bit more like an RPG video game from the mid-nineties when your character is wandering around a field having just heard some bad news. But I've got some more ideas.
Anyway. If you're using Claude Code and you've been treating it as a code assistant rather than a creative tool, it might be worth pulling the thread a little.

- Previous: The Tidiest Debt We Ever Carried