X to Kindle
name: x-to-kindle
by brianlu365ai · published 2026-03-22
$ claw add gh:brianlu365ai/brianlu365ai-x-to-kindle---
name: x-to-kindle
description: Send X/Twitter posts to Kindle for distraction-free reading. Use when user shares an X/Twitter link and wants to read it on Kindle, or asks to send a tweet/thread to their Kindle device.
---
# X to Kindle
Convert X/Twitter posts into Kindle-readable documents via email.
Requirements
Workflow
When user shares an X link:
1. **Extract content** via fxtwitter API:
```
https://api.fxtwitter.com/status/<tweet_id>
```
Extract from URL: `twitter.com/*/status/<id>` or `x.com/*/status/<id>`
2. **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>
```
3. **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
Configuration
Set the following environment variables in your Clawdbot configuration (or `.env` file):
Tool Definitions
send_to_kindle
Send a local file (PDF, HTML, TXT) to the Kindle.
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: 587Example
User sends: `https://x.com/elonmusk/status/1234567890`
1. Fetch `https://api.fxtwitter.com/status/1234567890`
2. Extract author, text, timestamp
3. Send HTML email to Kindle address
4. Confirm: "Sent to Kindle 📚"
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...