✓ Verified
📁 File Management
✓ Enhanced Data
X To Kindle
Send X/Twitter posts to Kindle for distraction-free reading.
- Rating
- 4.1 (342 reviews)
- Downloads
- 1,048 downloads
- Version
- 1.0.0
Overview
Send X/Twitter posts to Kindle for distraction-free reading.
Complete Documentation
View Source →
X to Kindle
Convert X/Twitter posts into Kindle-readable documents via email.
Requirements
- Gmail account with App Password (or other SMTP setup)
- Kindle email address (found in Amazon account settings)
Workflow
When user shares an X link:
- Extract content via fxtwitter API:
text
https://api.fxtwitter.com/status/<tweet_id>
twitter.com//status/ or x.com//status/
- Format as HTML file (save to /tmp):
html
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>{title}</title></head>
<body style="font-family: Georgia, serif; max-width: 600px; margin: 0 auto; padding: 20px; line-height: 1.6;">
<h1>@{author_handle}</h1>
<p>{tweet_text}</p>
<p><em>{timestamp}</em></p>
<p><a href="{original_url}">View on X</a></p>
</body>
</html>
- Send via SMTP with HTML as ATTACHMENT (Kindle requires attachment, not inline HTML):
python
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
msg = MIMEMultipart()
msg['Subject'] = "Tweet from @handle"
msg['From'] = from_email
msg['To'] = kindle_email
# Plain text body (not the content)
msg.attach(MIMEText("Article attached.", 'plain'))
# HTML file as attachment - THIS IS REQUIRED
with open("/tmp/article.html", "rb") as f:
attachment = MIMEBase('text', 'html')
attachment.set_payload(f.read())
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment', filename='article.html')
msg.attach(attachment)
Tools
send_to_kindle: Send a local file to the configured Kindle email.
Configuration
Set the following environment variables in your Clawdbot configuration (or .env file):
SMTP_EMAIL: Your sender email (e.g., gmail)SMTP_PASSWORD: Your app passwordKINDLE_EMAIL: Your Kindle email addressSMTP_SERVER: (Optional) Default: smtp.gmail.comSMTP_PORT: (Optional) Default: 587
Tool Definitions
send_to_kindle
Send a local file (PDF, HTML, TXT) to the Kindle.- Run:
python3 skills/x-to-kindle/send_to_kindle.py
Configuration
Store in TOOLS.md:
markdown
## Kindle
- Address: [email protected]
## Email (Gmail SMTP)
- From: [email protected]
- App Password: xxxx xxxx xxxx xxxx
- Host: smtp.gmail.com
- Port: 587
Example
User sends: https://x.com/elonmusk/status/1234567890
- Fetch
https://api.fxtwitter.com/status/1234567890 - Extract author, text, timestamp
- Send HTML email to Kindle address
- Confirm: "Sent to Kindle 📚"
Installation
Terminal bash
openclaw install x-to-kindle
Copied!
💻Code Examples
Store in TOOLS.md:
store-in-toolsmd.md
## Kindle
- Address: [email protected]
## Email (Gmail SMTP)
- From: [email protected]
- App Password: xxxx xxxx xxxx xxxx
- Host: smtp.gmail.com
- Port: 587example.html
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>{title}</title></head>
<body style="font-family: Georgia, serif; max-width: 600px; margin: 0 auto; padding: 20px; line-height: 1.6;">
<h1>@{author_handle}</h1>
<p>{tweet_text}</p>
<p><em>{timestamp}</em></p>
<p><a href="{original_url}">View on X</a></p>
</body>
</html>example.py
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
msg = MIMEMultipart()
msg['Subject'] = "Tweet from @handle"
msg['From'] = from_email
msg['To'] = kindle_email
# Plain text body (not the content)
msg.attach(MIMEText("Article attached.", 'plain'))
# HTML file as attachment - THIS IS REQUIRED
with open("/tmp/article.html", "rb") as f:
attachment = MIMEBase('text', 'html')
attachment.set_payload(f.read())
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment', filename='article.html')
msg.attach(attachment)⚙️Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
SMTP_EMAIL | string | - | Your sender email (e.g., gmail) |
SMTP_PASSWORD | string | - | Your app password |
KINDLE_EMAIL | string | - | Your Kindle email address |
SMTP_SERVER | string | - | (Optional) Default: smtp.gmail.com |
SMTP_PORT | string | - | (Optional) Default: 587 |
Tags
#pdf_and-documents
Quick Info
Category File Management
Model Claude 3.5
Complexity One-Click
Author brianlu365ai
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
Ready to Install?
Get started with this skill in seconds
openclaw install x-to-kindle
Related Skills
✓ Verified
💻 Development
4claw
4claw — a moderated imageboard for AI agents.
🧠 Claude-Ready
)}
★ 4.4 (118)
↓ 4,990
v1.0.0
✓ Verified
💻 Development
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
🧠 Claude-Ready
)}
★ 4.3 (89)
↓ 4,621
v1.0.0
✓ Verified
💻 Development
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
🧠 Claude-Ready
)}
★ 4.7 (88)
↓ 1,625
v1.0.0
✓ Verified
💻 Development
Adversarial Prompting
Adversarial analysis to critique, fix.
🧠 Claude-Ready
)}
★ 4.6 (372)
↓ 28,222
v1.0.0