tech-news-digestGenerate tech news digests with unified source model, quality scoring, and multi-format output. Six-source data collection from RSS feeds, Twitter/X KOLs, Gi...
Install via ClawdBot CLI:
clawdbot install dinstein/tech-news-digestAutomated tech news digest system with unified data source model, quality scoring pipeline, and template-based output generation.
config/defaults/. Copy to workspace for customization:
mkdir -p workspace/config
cp config/defaults/sources.json workspace/config/
cp config/defaults/topics.json workspace/config/
X_BEARER_TOKEN - Twitter API bearer token (optional)BRAVE_API_KEY - Brave Search API key (optional)GITHUB_TOKEN - GitHub personal access token (optional, improves rate limits)
# Full pipeline
python3 scripts/fetch-rss.py --config workspace/config
python3 scripts/fetch-twitter.py --config workspace/config
python3 scripts/fetch-web.py --config workspace/config
python3 scripts/fetch-github.py --config workspace/config
python3 scripts/merge-sources.py --rss rss.json --twitter twitter.json --web web.json --github github.json
sources.json - Unified Data Sources{
"sources": [
{
"id": "openai-rss",
"type": "rss",
"name": "OpenAI Blog",
"url": "https://openai.com/blog/rss.xml",
"enabled": true,
"priority": true,
"topics": ["llm", "ai-agent"],
"note": "Official OpenAI updates"
},
{
"id": "sama-twitter",
"type": "twitter",
"name": "Sam Altman",
"handle": "sama",
"enabled": true,
"priority": true,
"topics": ["llm", "frontier-tech"],
"note": "OpenAI CEO"
}
]
}
topics.json - Enhanced Topic Definitions{
"topics": [
{
"id": "llm",
"emoji": "🧠",
"label": "LLM / Large Models",
"description": "Large Language Models, foundation models, breakthroughs",
"search": {
"queries": ["LLM latest news", "large language model breakthroughs"],
"must_include": ["LLM", "large language model", "foundation model"],
"exclude": ["tutorial", "beginner guide"]
},
"display": {
"max_items": 8,
"style": "detailed"
}
}
]
}
fetch-rss.py - RSS Feed Fetcherpython3 scripts/fetch-rss.py [--config CONFIG_DIR] [--hours 48] [--output FILE] [--verbose]
fetch-twitter.py - Twitter/X KOL Monitor python3 scripts/fetch-twitter.py [--config CONFIG_DIR] [--hours 48] [--output FILE]
X_BEARER_TOKEN environment variablefetch-web.py - Web Search Enginepython3 scripts/fetch-web.py [--config CONFIG_DIR] [--freshness 48h] [--output FILE]
BRAVE_API_KEY)fetch-github.py - GitHub Releases Monitorpython3 scripts/fetch-github.py [--config CONFIG_DIR] [--hours 168] [--output FILE]
GITHUB_TOKEN for higher rate limitsmerge-sources.py - Quality Scoring & Deduplicationpython3 scripts/merge-sources.py --rss rss.json --twitter twitter.json --web web.json --github github.json
validate-config.py - Configuration Validatorpython3 scripts/validate-config.py [--config-dir CONFIG_DIR] [--verbose]
Place custom configs in workspace/config/ to override defaults:
"enabled": falseid → user version takes precedenceid → appended to defaultsid → user version completely replaces default// workspace/config/sources.json
{
"sources": [
{
"id": "simonwillison-rss",
"enabled": false,
"note": "Disabled: too noisy for my use case"
},
{
"id": "my-custom-blog",
"type": "rss",
"name": "My Custom Tech Blog",
"url": "https://myblog.com/rss",
"enabled": true,
"priority": true,
"topics": ["frontier-tech"]
}
]
}
references/templates/discord.md))references/templates/email.md) references/templates/markdown.md)All sources pre-configured with appropriate topic tags and priority levels.
pip install -r requirements.txt
Optional but Recommended:
feedparser>=6.0.0 - Better RSS parsing (fallback to regex if unavailable)jsonschema>=4.0.0 - Configuration validationAll scripts work with Python 3.8+ standard library only.
# Validate configuration
python3 scripts/validate-config.py --verbose
# Test RSS feeds
python3 scripts/fetch-rss.py --hours 1 --verbose
# Check Twitter API
python3 scripts/fetch-twitter.py --hours 1 --verbose
workspace/archive/tech-digest/Set in ~/.zshenv or similar:
export X_BEARER_TOKEN="your_twitter_bearer_token"
export BRAVE_API_KEY="your_brave_search_api_key" # Optional
The cron prompt should NOT hardcode the pipeline steps. Instead, reference references/digest-prompt.md and only pass configuration parameters. This ensures the pipeline logic stays in the skill repo and is consistent across all installations.
读取 <SKILL_DIR>/references/digest-prompt.md,按照其中的完整流程生成日报。
用以下参数替换占位符:
- MODE = daily
- TIME_WINDOW = past 1-2 days
- FRESHNESS = pd
- RSS_HOURS = 48
- ITEMS_PER_SECTION = 3-5
- BLOG_PICKS_COUNT = 2-3
- EXTRA_SECTIONS = (无)
- SUBJECT = Daily Tech Digest - YYYY-MM-DD
- WORKSPACE = <your workspace path>
- SKILL_DIR = <your skill install path>
- DISCORD_CHANNEL_ID = <your channel id>
- EMAIL = (optional)
- LANGUAGE = Chinese
- TEMPLATE = discord
严格按 prompt 模板中的步骤执行,不要跳过任何步骤。
读取 <SKILL_DIR>/references/digest-prompt.md,按照其中的完整流程生成周报。
用以下参数替换占位符:
- MODE = weekly
- TIME_WINDOW = past 7 days
- FRESHNESS = pw
- RSS_HOURS = 168
- ITEMS_PER_SECTION = 5-8
- BLOG_PICKS_COUNT = 3-5
- EXTRA_SECTIONS = 📊 Weekly Trend Summary (2-3 sentences summarizing macro trends)
- SUBJECT = Weekly Tech Digest - YYYY-MM-DD
- WORKSPACE = <your workspace path>
- SKILL_DIR = <your skill install path>
- DISCORD_CHANNEL_ID = <your channel id>
- EMAIL = (optional)
- LANGUAGE = Chinese
- TEMPLATE = discord
严格按 prompt 模板中的步骤执行,不要跳过任何步骤。
digest-prompt.md, not scattered across cron configsOpenClaw enforces cross-provider isolation: a single session can only send messages to one provider (e.g., Discord OR Telegram, not both). If you need to deliver digests to multiple platforms, create separate cron jobs for each provider:
# Job 1: Discord + Email
- DISCORD_CHANNEL_ID = 1470806864412414071
- EMAIL = user@example.com
- TEMPLATE = discord
# Job 2: Telegram DM
- DISCORD_CHANNEL_ID = (无)
- EMAIL = (无)
- TEMPLATE = telegram
Replace DISCORD_CHANNEL_ID delivery with Telegram delivery in the second job's prompt (use message tool with channel=telegram).
This is a security feature, not a bug — it prevents accidental cross-context data leakage.
This skill uses a prompt template pattern: the agent reads digest-prompt.md and follows its instructions. This is the standard OpenClaw skill execution model — the agent interprets structured instructions from skill-provided files. All instructions are shipped with the skill bundle and can be audited before installation.
The Python scripts make outbound requests to:
sources.json)api.x.com)api.search.brave.com)api.github.com)No data is sent to any other endpoints. All API keys are read from environment variables declared in the skill metadata.
Email delivery uses the gog CLI with hardcoded subject formats (Daily Tech Digest - YYYY-MM-DD). The prompt template explicitly prohibits interpolating untrusted content into shell arguments.
Scripts read from config/ and write to workspace/archive/. No files outside the workspace are accessed.
--verbose for detailsvalidate-config.py for specific issues--hours) and source enablementAll scripts support --verbose flag for detailed logging and troubleshooting.
MAX_WORKERS in scripts for your systemTIMEOUT for slow networksMAX_ARTICLES_PER_FEED based on needsGenerated Mar 1, 2026
Automated generation of daily or weekly tech news digests for blogs, newsletters, or social media channels. The system aggregates content from RSS feeds, Twitter KOLs, and GitHub releases, applying quality scoring to highlight trending topics like LLMs or frontier tech, saving editorial time.
Internal monitoring of competitor and industry developments for tech companies, using the pipeline to fetch and merge data from web searches and GitHub releases. Teams can customize topics to track specific technologies, enabling proactive strategy adjustments based on scored insights.
Supporting venture capital or hedge funds by automating the collection of tech news from diverse sources, with deduplication and quality scoring to identify high-impact trends. Custom topics can focus on emerging sectors, aiding in due diligence and market analysis.
Curating up-to-date tech content for online courses or training programs, using the system to gather and filter news from RSS and web searches based on educational topics. Outputs in markdown format can be integrated into learning platforms for student engagement.
Enhancing community engagement on platforms like Discord by generating regular news digests from configured sources, with templates for formatted posts. The system prioritizes high-quality, recent articles to keep members informed about relevant tech developments.
Offering the tech news digest system as a cloud service with tiered subscriptions, providing API access, managed configurations, and premium templates. Revenue comes from monthly fees based on usage limits, source integrations, and support levels.
Licensing the software to media companies or enterprises for rebranding and internal use, with customization options for sources and outputs. Revenue is generated through one-time licensing fees or ongoing maintenance contracts for updates and support.
Providing the core pipeline as open source to build a community, while monetizing advanced features like enhanced templates, analytics dashboards, or priority support. Revenue streams include paid add-ons, consulting services, and enterprise support packages.
💬 Integration Tip
Start by customizing the sources.json and topics.json files in the workspace to match specific interests, then run the fetch scripts sequentially to test data collection before integrating outputs into existing workflows like email campaigns or Discord bots.
Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
Comprehensive news aggregator that fetches, filters, and deeply analyzes real-time content from 8 major sources: Hacker News, GitHub Trending, Product Hunt, 36Kr, Tencent News, WallStreetCN, V2EX, and Weibo. Best for 'daily scans', 'tech news briefings', 'finance updates', and 'deep interpretations' of hot topics.
This skill should be used when the user asks for news updates, daily briefings, or what's happening in the world. Fetches news from trusted international RSS feeds and can create voice summaries.
Aggregates and summarizes the latest AI news from multiple sources including AI news websites and web search. Provides concise news briefs with direct links to original articles. Activates when user asks for 'today's AI news', 'AI updates', 'latest AI developments', or mentions wanting a 'daily AI briefing'.
Generates a warm, compact daily briefing with weather, calendar, reminders, birthdays, and important emails for cron or chat delivery.
Provides a personalized morning report with today's reminders, undone Notion tasks, and vault storage summary for daily planning.