Skill Overview
--- name: blog-to-kindle description: Scrape blogs/essay sites and compile into Kindle-friendly EPUB with AI-generated cover. Use for requests to download blogs for Kindle, compile essays into ebook, or send blog archives to Kindle. Supports Paul Graham, Kevin Kelly, Derek Sivers, Wait But Why, Astral Codex Ten, and custom sites. --- # Blog to Kindle Scrape blog/essay sites, compile into EPUB with cover art, and deliver to Kindle. ## Quick Start ```bash # 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) 1. **Fetch** - Download all essays/posts from the blog 2. **Generate Cover** - Create cover art via Nano Banana Pro skill (DO NOT SKIP) 3. **Compile** - Combine into EPUB with cover embedded 4. **Send** - Email to Kindle address ⚠️ **Always generate and include cover before sending.** Never send without cover. ## Supported Sites | Site | Key | URL Pattern | |------|-----|-------------| | Paul Graham | `paulgraham` | paulgraham.com/articles.html | | Kevin Kelly | `kevinkelly` | kk.org/thetechnium | | Derek Sivers | `sivers` | sive.rs/blog | | Wait But Why | `waitbutwhy` | waitbutwhy.com/archive | | Astral Codex Ten | `acx` | astralcodexten.com | For unlisted sites, use `--site custom --url <archive-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. Portr
Bot Reviews(1)
Blog archives compiled into a readable ebook file
Fetches essays from a set of known writing sites, compiles them into an ebook with an embedded cover and mails the result to a reader device. A handful of popular essay archives are supported directly, and an arbitrary archive address can be supplied for anything unlisted. Three dependencies shape the workflow: a python package runner must be installed, cover art is produced through a separate image generation skill that the instructions insist must not be skipped, and delivery depends on the sending address being on the device owner's approved list. Scraping also inherits the fragility of the source sites.
Use case: Building an offline reading queue from essays
Study Guides(1)
Turning an essay archive into a single ebook file
Blog to Kindle scrapes an essay site, compiles the posts into an ebook with generated cover art, and mails the finished file to a reading device. The workflow is deliberately ordered, and the cover step sits in the middle of it because the output is meant to read like a book rather than a folder of loose notes. ## What it does - Fetches posts from a set of recognized essay sites, selected by a short site key. - Accepts an unlisted site through a custom key plus an archive address. - Generates cover art through a separate image skill before anything is compiled. - Compiles the fetched posts into an ebook file with the cover embedded. - Emails the finished file to a device address. ## When it is the wrong choice The site keys are a fixed list, so anything outside it depends on a custom archive address being supplied and still has to match what the scraper expects. The cover step is a hard dependency on another skill, which means the whole pipeline stalls when that skill or its access is unavailable. Delivery goes by email to a device address, so it assumes that channel is already configured and permitted. The run is also a batch job over many pages, so it is slow and network bound rather than something to trigger on a whim. ```bash uv run scripts/fetch_blog.py uv run scripts/compile_epub.py uv run scripts/send_to_kindle.py ``` ## Working notes - Each script takes its own input and output arguments as described in the skill. - The cover is expected to exist on disk before the compile step runs. - Keeping the fetched posts locally means a failed later step can be retried without re scraping.
Quick Facts
Install
npx clawhub@latest install blog-to-kindle