kindle-sender
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".
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
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
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-01-26
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!