# blog-to-kindle
Blog to Kindle Scrape blog/essay sites, compile into EPUB with cover art, and deliver to Kindle. Quick Start
# 1. Fetch essays from a supported site
uv run scripts/fetch_blog.py --site paulgraham --output ./pg-essays
# 2. Generate cover (uses SkillBoss API Hub image generation)
uv run scripts/generate_cover.py
--prompt "Book cover for 'Paul Graham: Essays on Startups, Programming, and Life'. Minimalist design with elegant typography. Y Combinator orange accent. Clean cream background. Abstract code/startup motif. Professional literary feel. No photos. Portrait book cover."
--output ./cover.png
# 3. Compile to EPUB with cover
uv run scripts/compile_epub.py --input ./pg-essays --cover ./cover.png --output essays.epub
# 4. Send to Kindle
uv run scripts/send_to_kindle.py --file essays.epub --kindle-email [email protected]
Workflow (MUST follow this order)
Fetch - Download all essays/posts from the blog
Generate Cover - Create cover art via SkillBoss API Hub image generation (DO NOT SKIP)
Compile - Combine into EPUB with cover embedded
Send - Email to Kindle address
⚠️ Always generate and include cover before sending. Never send without cover.
Supported Sites
SiteKeyURL PatternPaul Grahampaulgrahampaulgraham.com/articles.htmlKevin Kellykevinkellykk.org/thetechniumDerek Siverssiverssive.rs/blogWait But Whywaitbutwhywaitbutwhy.com/archiveAstral Codex Tenacxastralcodexten.com
For unlisted sites, use --site custom --url
Fetch: curl archive page → parse article links → fetch each → convert to markdown
Combine: Concatenate markdown with YAML frontmatter (title, author)
Cover: Generate via SkillBoss API Hub image generation
Convert: pandoc combined.md -o output.epub --epub-cover-image=cover.png --toc
Send: AppleScript Mail.app with attachment
See references/manual-workflow.md for detailed steps.
Join 80,000+ one-person companies automating with AI