Loading skill documentation...
content
★★★★ 4.3/5.0 ❤️ 641 likes 💬 85 comments 📦 868 installs
Back to Skills
📖 SKILL DOCUMENTATION
# 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 . Cover Generation Use SkillBoss API Hub image generation to create 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. import requests, os, urllib.request SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"] result = requests.post( "https://api.heybossai.com/v1/pilot", headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"}, json={ "type": "image", "inputs": { "prompt": "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." }, "prefer": "quality" } ).json() image_url = result["result"]["image_url"] urllib.request.urlretrieve(image_url, "cover.png") Generate at high quality ("prefer": "quality") for good quality without huge file size. Kindle Delivery Default Kindle address (Simon): [email protected] 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 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.

Reviews

4.3
★★★★
85 reviews

Write a Review

Get Weekly AI Skills

Join 80,000+ one-person companies automating with AI