Building and shipping real products with AI: harnesses, subagents, verification, and the parts that still need a human. Notes from a small publishing operation that runs its drafting on Claude Code.
AI The model draws the picture. The browser sets the type.
Environment: gpt-image-1 via the OpenAI images API, 1536×1024, quality: high; Playwright 1.62, headless Chromium, device...
AI A scheduled Reel is not an on-time Reel
Environment: Instagram Graph API v21.0 on graph.instagram.com (Instagram Login, not a Facebook Page), Python 3.12, GitHu...
AI From Replit to a ¥935/month VPS
Environment: Ubuntu 24.04 on a 1 GB VPS, systemd, nginx, Let's Encrypt, Postgres. Two apps moved — one Django, one Node....
AI Selling PDFs from your own WordPress with Easy Digital Downloads
Environment: WordPress with Easy Digital Downloads (free tier), Stripe, Apache on shared hosting. Watermarking in Python...
AI Illustrating a textbook with gpt-image-1
Environment: gpt-image-1 via the OpenAI images API, 1024×1024, quality: high, background: transparent. Node.js 20, Image...
AI Generating Kindle-ready Word files with docx-js
Environment: docx-js 9.6.1, Node.js 20, Python 3 for the post-pass. LibreOffice for verification. The files described he...
AI Playwright’s PDF export is 96 dpi, not 72
Environment: Playwright 1.62, bundled headless Chromium, Linux. The cover this came out of went to print in 2026.Last ti...
AI Typesetting a print-ready paperback with HTML and WeasyPrint
Environment: WeasyPrint (system Python 3, not the venv), CSS Paged Media, B5 trim. The interiors described here went to ...
AI Check the reading before you synthesise: a local Japanese TTS on WSL
Environment: AivisSpeech Engine 1.2.0, Linux x64 build, running inside WSL2 on Windows. Node.js 20, Python 3, ffmpeg. In...
AI OpenAI’s TTS silently drops the tail of long inputs
Environment: gpt-4o-mini-tts and whisper-1 via the OpenAI HTTP API, Node.js 20, ffmpeg. Measured July–August 2026.We pro...