An automated art project where Claude for Chrome creates crowdsourced illustrations using Kid Pix, sourced from user submissions at claudedraws.xyz.
🎨 Live Gallery: claudedraws.xyz 💬 Request Art: claudedraws.xyz/submit
Claude Draws is a fully automated art pipeline that:
- Accepts Submissions - Users submit art requests via the web form at claudedraws.xyz/submit
- Creates Art - Uses browser automation to have Claude for Chrome draw in Kid Pix (a nostalgic 90s paint program)
- Processes & Publishes - Automatically extracts metadata, uploads images to R2 storage, and saves metadata to D1 database
- Notifies Users - Sends email notifications when artworks are complete (if email provided)
The entire process runs autonomously - from request to published artwork - with no manual intervention required.
Web Form Submission → Cloudflare D1 Database → Browser Automation →
→ Claude Draws in Kid Pix → Temporal Workflow →
→ BAML Metadata Extraction → Cloudflare R2 Storage →
→ D1 Metadata Insert → Email Notification (optional)
Frontend
- SvelteKit - SSR-on-demand with D1 API backend
- Tailwind CSS - Styling
- Cloudflare Workers - Hosting
Backend
- Python - CLI automation
- Playwright - Browser automation via Chrome DevTools Protocol
- Temporal - Workflow orchestration
- BAML - AI-powered metadata extraction
- Cloudflare D1 - SQLite database for artwork metadata
- Cloudflare R2 - Object storage for images
Art Tool
- Kid Pix - Open-source JavaScript recreation of the classic 90s drawing program
This is a monorepo containing both the Python backend and SvelteKit frontend:
claude-draws/
├── backend/ # Python backend services
│ ├── claudedraw/ # CLI for browser automation
│ ├── workflows/ # Temporal workflows for processing
│ ├── worker/ # Temporal worker process
│ ├── baml_src/ # BAML metadata extraction configs
│ └── pyproject.toml # Python dependencies
├── gallery/ # SvelteKit static site
├── .chrome-data/ # Chrome profile for automation
├── downloads/ # Temporary artwork storage
├── docs/ # Architecture documentation
└── docker-compose.yml # Orchestrates all services
- Fully Automated - No manual steps from request to publication
- Reliable - Temporal workflows provide automatic retries and error recovery
- Scalable - Static site hosted on Cloudflare's global CDN
- Cost-Effective - R2 storage with zero egress fees
- Open Source - MIT licensed, contributions welcome
TODO: Complete local development setup instructions
For now, see CLAUDE.md for detailed technical documentation and development commands.
- Visit claudedraws.xyz/submit
- Describe your artwork idea in the submission form
- Optionally include your email to get notified when it's ready
- Watch the livestream or wait for your email notification
- View your finished piece on claudedraws.xyz
Visit claudedraws.xyz to see all the artworks Claude has created!
Each artwork includes:
- The finished Kid Pix illustration
- Claude's title for the piece
- Claude's artist statement explaining the creative choices
- The original user prompt
Uses Playwright with Chrome DevTools Protocol (CDP) to control Claude for Chrome extension, combined with OS-level keyboard automation to trigger browser shortcuts.
Temporal handles the complex multi-step process of extracting metadata, uploading images to R2, and inserting metadata into D1 - all with automatic retries and full visibility.
BAML (Bounded Automation Markup Language) reliably parses Claude's unstructured HTML responses to extract artwork titles and artist statements.
SvelteKit uses SSR-on-demand to render pages with fresh data from D1 database. New artworks appear immediately in the gallery without requiring a rebuild or deployment.
MIT - see LICENSE for details
- Kid Pix - Original software by Craig Hickman (1989)
- Kid Pix JS - Open-source recreation at kidpix.app
- Claude - Anthropic's AI assistant powering the artwork creation
Note: This is an experimental art project demonstrating AI automation capabilities. The artwork created is generated by Claude for Chrome using browser automation, not by Claude's API.
