OpenClaw · Skill
X To Kindle
Convert X/Twitter posts into Kindle-readable documents via email.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install brianlu365ai/x-to-kindleClawHub installer
npx clawhub@latest install brianlu365ai/x-to-kindleOpenClaw CLI
openclaw skills install brianlu365ai/x-to-kindleDirect OpenClaw install
openclaw install brianlu365ai/x-to-kindleWhat this skill does
Convert X/Twitter posts into Kindle-readable documents via email.
Why it matters
Kindle's e-ink display and lack of notifications make it easier to read long threads than scrolling through the Twitter app.
Typical use cases
- Sending a long tweet thread to Kindle before a flight
- Reading a viral discussion without opening the Twitter app
- Archiving a notable tweet to your Kindle library
- Catching up on saved tweets during a commute without a backlit screen
- Forwarding a thread someone shared in chat to read later
Source instructions
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:
https://api.fxtwitter.com/status/<tweet_id>Extract from URL:
twitter.com/*/status/<id>orx.com/*/status/<id> -
Format as HTML file (save to /tmp):
<!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):
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 <file_path>
Configuration
Store in TOOLS.md:
## Kindle
- Address: user@kindle.com
## Email (Gmail SMTP)
- From: your@gmail.com
- 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 📚"