Marketing & SalesDocumentedScanned

blog-to-kindle

Scrape blogs/essay sites and compile into Kindle-friendly EPUB with AI-generated cover.

Share:

Installation

npx clawhub@latest install blog-to-kindle

View the full skill documentation and source below.

Documentation

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 Nano Banana Pro)
# See nano-banana-pro skill for cover generation

# 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 user@kindle.com

Workflow (MUST follow this order)

  • Fetch - Download all essays/posts from the blog

  • Generate Cover - Create cover art via Nano Banana Pro skill (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 Pattern
    Paul Grahampaulgrahampaulgraham.com/articles.html
    Kevin Kellykevinkellykk.org/thetechnium
    Derek Siverssiverssive.rs/blog
    Wait But Whywaitbutwhywaitbutwhy.com/archive
    Astral Codex Tenacxastralcodexten.com
    For unlisted sites, use --site custom --url .

    Cover Generation

    Use the nano-banana-pro skill to generate covers. Prompt template:

    Book cover for '[Author Name]: [Subtitle]'. 
    Minimalist design with elegant typography. 
    [Brand color] accent. Clean white/cream background. 
    Simple geometric or abstract motif related to [topic].
    Professional literary feel. No photos, no faces.
    Portrait orientation book cover dimensions.

    Generate at 2K resolution for good quality without huge file size.

    Kindle Delivery

    Default Kindle address (Simon): simonpilkington74_8oVjpj@kindle.com

    Uses Mail.app via AppleScript to send. Ensure:

    • Sender email is on Kindle approved list

    • File under 50MB (EPUB compresses well)


    State Tracking

    State files stored in ~/.clawdbot/state/blog-kindle/:

    • {site}-last-fetch.json - Last fetch timestamp, article count

    • {site}-sent.json - List of sent article IDs


    Use for incremental updates (only fetch new posts).

    Manual Workflow (no scripts)

    If scripts unavailable, follow this pattern:

  • Fetch: curl archive page → parse article links → fetch each → convert to markdown

  • Combine: Concatenate markdown with YAML frontmatter (title, author)

  • Cover: Generate via Nano Banana Pro

  • 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.