name: kindle-sender description: Send Research Swarm documents to Kindle. Use when "send to Kindle", "send research to Kindle", "send someday-maybe to Kindle", "Kindle my research", "with links expanded", "send last week's research", "send January research". allowed-tools: Read, Bash, Glob, Write, AskUserQuestion
Kindle Sender
What This Does
Converts markdown documents from your Zettelkasten to EPUB and emails them to your Kindle for offline reading.
Four modes:
- Research mode - Send all Research Swarm docs linked in today's daily note
- Date range mode - Send research from a date range (last week, this month, etc.). Automatically scans daily notes in the range and extracts Research Swarm links.
- Review mode - Send your Someday-Maybe.md backlog for Kindle review
-
Deep reading mode - Send with
--expand-linksto include full content of all linked documents as an appendix
When to Use
- "Send my research to Kindle"
- "Send today's research to Kindle"
- "Send last week's research to Kindle"
- "Send January research to Kindle"
- "Send research from Jan 15 to Jan 20"
- "Send someday-maybe to Kindle"
- "Send someday-maybe to Kindle with links expanded"
- "Kindle my research"
Prerequisites (One-Time Setup)
Before first use, configure these environment variables in ~/.zshrc:
export KINDLE_EMAIL="your-name@kindle.com"
export GMAIL_USER="your-email@gmail.com"
export GMAIL_APP_PASSWORD="your-app-password"
Setup steps:
-
Find your Kindle email:
- Go to Amazon → Manage Content & Devices
- Click "Preferences" tab
- Look for "Personal Document Settings"
- Your Kindle email ends in
@kindle.com
-
Whitelist your sender email:
- Same page, under "Approved Personal Document E-mail List"
- Add your Gmail address
-
Create Gmail app password:
- Go to Google Account → Security
- Enable 2-Step Verification if not already
- Go to "App passwords" (search for it)
- Create a new app password for "Mail"
- Use this password, NOT your regular Gmail password
-
Install Python dependencies:
pip3 install pypandoc pypandoc_binary python-dateutilNote:
python-dateutilis optional but recommended. Without it, relative dates like "last month" use a 30-day approximation. -
Reload shell:
source ~/.zshrc
Instructions
Standard Flow (All Modes)
Step 1: Determine what to send
- Daily notes: Find files in
/Users/eddale/Documents/COPYobsidian/MAGI/Zettelkasten/YYYY-MM-DD.md - Research mode: Extract
[[Research Swarm - *]]links from Captures section - Someday-maybe: Use the Someday-Maybe.md file
- Specific files: Use paths provided by user
Step 2: Run dry-run with --expand-links to see linked documents
cd /Users/eddale/Documents/GitHub/powerhouse-lab/skills/kindle-sender/tools
python3 send_to_kindle.py --files "file1.md" "file2.md" --expand-links --dry-run
Step 3: Show preview and ask about link expansion
Display what will be sent, then use AskUserQuestion with TWO questions:
-
Link expansion (unless user already said "with links expanded"):
- Question: "Include linked documents as appendix?"
- Options:
- "Yes, expand links" - Include full content of all [[wikilinks]] as tappable appendix sections
- "No, just the files" - Send documents without expanding links
-
Confirm send:
- Question: "Send X documents to Kindle?"
- Options: "Yes, send them" / "No, cancel"
Step 4: Send based on user choices
# With link expansion
python3 send_to_kindle.py --files "file1.md" --expand-links
# Without link expansion
python3 send_to_kindle.py --files "file1.md"
Step 5: Report results "Sent X documents to your Kindle. They should arrive within a few minutes."
Mode-Specific Commands
Daily note research (single day):
python3 send_to_kindle.py --daily-note "YYYY-MM-DD" [--expand-links] [--dry-run]
Date range research (multiple days):
# Last week's research
python3 send_to_kindle.py --start-date "7 days ago" --end-date today [--expand-links] [--dry-run]
# Specific month
python3 send_to_kindle.py --start-date 2026-01-01 --end-date 2026-01-31 [--expand-links] [--dry-run]
# Specific date range
python3 send_to_kindle.py --start-date "Jan 15" --end-date "Jan 20" [--expand-links] [--dry-run]
Someday-maybe:
python3 send_to_kindle.py --someday-maybe [--expand-links] [--dry-run]
Specific files:
python3 send_to_kindle.py --files "Doc1.md" "Doc2.md" [--expand-links] [--dry-run]
Script Options
| Flag | Description |
|---|---|
--daily-note YYYY-MM-DD |
Send Research Swarm docs from that day's note |
--start-date DATE |
Only include files from this date forward |
--end-date DATE |
Only include files up to this date |
--someday-maybe |
Send the Someday-Maybe.md file |
--files FILE1 FILE2... |
Send specific markdown files |
--expand-links |
Include content of linked docs (wikilinks) as appendix |
--dry-run |
Show what would be sent without sending |
Date Format Support
The --start-date and --end-date flags accept flexible date formats:
| Format | Example |
|---|---|
| ISO | 2026-01-15 |
| Month name | Jan 15, January 15, Jan 15 2026 |
| Relative | today, yesterday, 7 days ago, last week |
| Slash | 01/15/2026, 1/15/26 |
Troubleshooting
| Problem | Solution |
|---|---|
| "KINDLE_EMAIL not set" | Add to ~/.zshrc and run source ~/.zshrc |
| "Authentication failed" | Use app password, not regular Gmail password |
| "Document not delivered" | Check sender is whitelisted in Amazon settings |
| "pypandoc not found" | Run pip3 install pypandoc pypandoc_binary |
Examples
Example 1: Research with link expansion choice
User: Send my research to Kindle
Claude: Found 3 Research Swarm documents in today's Captures:
1. Research Swarm - Markdown to Kindle Workflow - 2026-01-09.md
2. Research Swarm - API Design Patterns - 2026-01-09.md
3. Research Swarm - Newsletter Growth - 2026-01-09.md
These documents contain 27 linked documents total.
[AskUserQuestion with two questions:]
1. Include linked documents as appendix? → Yes/No
2. Send these 3 documents to Kindle? → Yes/No
User: Yes to both
Claude: Sent 3 documents (with 27 linked docs expanded) to your Kindle.
Example 2: Daily notes batch
User: Send my daily notes from Monday through Friday to Kindle
Claude: Found 5 daily notes (Jan 12-16). Dry run shows 100 linked documents.
[AskUserQuestion:]
1. Include linked documents as appendix? → User selects "Yes, expand links"
2. Send 5 documents to Kindle? → User selects "Yes, send them"
Claude: Sent 5 documents with 100 linked docs as appendices. Arriving shortly.
Example 3: User explicitly requests link expansion
User: Send someday-maybe to Kindle with links expanded
Claude: Will send Someday-Maybe.md with 13 linked documents:
- PROJECT - Email Agent
- Research - Claude Code Testing Infrastructure - 2026-01-06
- ...
[AskUserQuestion - skip link expansion question since user specified it:]
Send Someday-Maybe.md to Kindle? → Yes/No
User: Yes
Claude: Sent Someday-Maybe.md (with 13 referenced documents) to your Kindle.
Example 4: User declines link expansion
User: Send today's research to Kindle
Claude: Found 2 Research Swarm documents with 15 linked docs.
[AskUserQuestion:]
1. Include linked documents as appendix? → User selects "No, just the files"
2. Send 2 documents to Kindle? → Yes
Claude: Sent 2 documents to your Kindle. They should arrive within a few minutes.
Example 5: Date range - last week's research
User: Send last week's research to Kindle
Claude: Scanning daily notes from 2026-01-15 to 2026-01-22...
Found 5 daily notes with 12 unique Research Swarm documents:
- Research Swarm - Newsletter Monetization - 2026-01-15.md
- Research Swarm - API Patterns - 2026-01-17.md
...
[AskUserQuestion:]
1. Include linked documents as appendix? → Yes/No
2. Send 12 documents to Kindle? → Yes/No
# Runs:
python3 send_to_kindle.py --start-date "7 days ago" --end-date today [--expand-links]
Example 6: Date range - specific month
User: Send January research to Kindle
Claude: Scanning daily notes from 2026-01-01 to 2026-01-31...
Found 18 daily notes with 42 unique Research Swarm documents.
# Runs:
python3 send_to_kindle.py --start-date 2026-01-01 --end-date 2026-01-31 [--expand-links]
Example 7: Date range - specific dates
User: Send research from Jan 15 to Jan 20
Claude: Scanning daily notes from 2026-01-15 to 2026-01-20...
# Runs:
python3 send_to_kindle.py --start-date "Jan 15" --end-date "Jan 20" --dry-run
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!