tech-news-bulletin
by @juniarto-samsudin
Collect latest technology and AI news from RSS feeds AND the TLDR.tech AI newsletter, merge them into a unified daily digest, and send via email.
clawhub install tech-news-bulletinπ About This Skill
name: tech-news-bulletin description: Collect latest technology and AI news from RSS feeds AND the TLDR.tech AI newsletter, merge them into a unified daily digest, and send via email. metadata: { "openclaw": { "emoji": "π¬", "requires": { "bins": ["python3"], "packages": ["feedparser", "requests", "beautifulsoup4"] }, "env": ["SMTP_EMAIL", "SMTP_PASSWORD"] } }
Tech News Bulletin
Collect the latest technology and AI news from two sources: 1. RSS feeds β e.g., TechCrunch, Wired AI, Google AI Blog 2. TLDR.tech AI Newsletter β yesterday's edition, fetched and sanitized automatically
Merge both into a single deduplicated digest and send it to a list of email addresses.
When to use (trigger phrases)
Use this skill immediately when the user asks any of:
Workflow
1. Fetch RSS feeds from configured sources
2. Fetch TLDR.tech AI newsletter for the previous day (https://tldr.tech/ai/YYYY-MM-DD)
3. Sanitize TLDR HTML β extract article title, canonical link, and summary; strip sponsor blocks, navigation, footers
4. Merge & deduplicate all articles by URL
5. Sort by date (newest first) and limit to MAX_ARTICLES
6. Summarize each article via Ollama (falls back to the description snippet if unavailable)
7. Build HTML digest with per-article source badges (RSS source name vs. "TLDR AI")
8. Send digest to all configured email addresses via SMTP
Installation
Install required Python packages:
pip install feedparser requests beautifulsoup4
Ensure environment variables are set:
export SMTP_EMAIL="your-email@example.com"
export SMTP_PASSWORD="your-app-password"
Configuration
Edit scripts/bulletin.py to customize:
RSS_FEEDS β list of RSS URL endpointsEMAIL_ADDRESSES β recipients for the bulletinMAX_ARTICLES β maximum articles in the combined digest (default 15)TLDR_BASE_URL β base URL for the TLDR newsletter (default https://tldr.tech/ai/)The Ollama endpoint is http://172.20.86.203:11434 with model glm-4.7-flash:latest.
Usage
To run the bulletin now:
python3 /home/juniarto/.openclaw/workspace/skills/tech-news-bulletin/scripts/bulletin.py
Check the log output:
tail -f /tmp/openclaw-debug.log
Or let the skill handle it automatically via cron:
openclaw cron add --job='{
"name": "daily-tech-bulletin",
"schedule": { "kind": "every", "everyMs": 86400000, "anchorMs": 42000000 },
"payload": { "kind": "systemEvent", "text": "run-tech-news-bulletin" },
"sessionTarget": "isolated",
"enabled": true
}'
Digest Format
Subject: Daily Tech & AI News Bulletin
Body (HTML):
Differences from tech-news-digest
| Feature | tech-news-digest | tech-news-bulletin | |---|---|---| | RSS feeds | β | β | | TLDR.tech AI newsletter | β | β | | Source badges in digest | β | β | | HTML sanitizer (inline) | β | β | | Combined deduplication | β | β |
Rules
SMTP_EMAIL, SMTP_PASSWORD)today - 1 day at runtime, so no manual date config is neededπ‘ Examples
To run the bulletin now:
python3 /home/juniarto/.openclaw/workspace/skills/tech-news-bulletin/scripts/bulletin.py
Check the log output:
tail -f /tmp/openclaw-debug.log
Or let the skill handle it automatically via cron:
openclaw cron add --job='{
"name": "daily-tech-bulletin",
"schedule": { "kind": "every", "everyMs": 86400000, "anchorMs": 42000000 },
"payload": { "kind": "systemEvent", "text": "run-tech-news-bulletin" },
"sessionTarget": "isolated",
"enabled": true
}'
βοΈ Configuration
Edit scripts/bulletin.py to customize:
RSS_FEEDS β list of RSS URL endpointsEMAIL_ADDRESSES β recipients for the bulletinMAX_ARTICLES β maximum articles in the combined digest (default 15)TLDR_BASE_URL β base URL for the TLDR newsletter (default https://tldr.tech/ai/)The Ollama endpoint is http://172.20.86.203:11434 with model glm-4.7-flash:latest.
π Constraints
SMTP_EMAIL, SMTP_PASSWORD)today - 1 day at runtime, so no manual date config is needed