ai-news-aggregator-sl

Fetches AI & tech news (default) or any custom topic (crypto, geopolitics, etc.) from RSS feeds, Tavily search, Twitter/X, and YouTube. Writes an English editorial digest using OpenAI by default (or DeepSeek / Claude), then posts it to Discord. Supports any time range (today, last 3 days, last week). Trigger when user asks for news, a digest, trending topics, or YouTube updates on any subject.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "ai-news-aggregator-sl" with this command: npx skills add ScottLL/ai-news-aggregator-sl

🦞 AI News Aggregator

Collects news on any topic, writes an English editorial digest using your choice of AI provider, and posts it to Discord.

Default (AI topic): TechCrunch · The Verge · NYT Tech (RSS) + curated AI YouTube channels Custom topics: Tavily news search + YouTube topic search (no Shorts, sorted by views) AI providers: OpenAI (default) · DeepSeek · Anthropic Claude — switchable per request


Network Endpoints

EndpointPurposeCondition
https://api.openai.com/v1/chat/completionsAI editorial summarisationOnly if provider=openai (default)
https://api.deepseek.com/chat/completionsAI editorial summarisationOnly if provider=deepseek
https://api.anthropic.com/v1/messagesAI editorial summarisationOnly if provider=claude
https://discord.com/api/webhooks/...Post digest to DiscordAlways (required)
https://techcrunch.com/.../feed/RSS news (AI topic)Default AI topic only
https://www.theverge.com/rss/...RSS news (AI topic)Default AI topic only
https://www.nytimes.com/svc/collections/...RSS news (AI topic)Default AI topic only
https://api.tavily.com/searchCustom topic news searchOnly if TAVILY_API_KEY set
https://api.twitterapi.io/twitter/tweet/advanced_searchTwitter searchOnly if TWITTERAPI_IO_KEY set
https://www.googleapis.com/youtube/v3/...YouTube searchOnly if YOUTUBE_API_KEY set

Exactly one AI endpoint is contacted per run, determined by the active provider. The default provider is OpenAI (OPENAI_API_KEY required). Switch providers with --provider deepseek or --provider claude.


Usage Examples

  • "Get today's AI news"
  • "Collect news about crypto"
  • "Last week's news about climate change"
  • "What's trending in AI today?"
  • "Get crypto news from the last 3 days using OpenAI"
  • "Show me recent Bitcoin YouTube videos"
  • "Summarise WWIII news with Claude"
  • "AI news using GPT-4o"
  • "AI news dry run" (preview without posting to Discord)
  • "Test my Discord webhook"

API Keys

KeyRequiredWhere to get it
DISCORD_WEBHOOK_URL✅ AlwaysDiscord → Channel Settings → Integrations → Webhooks → Copy URL
OPENAI_API_KEYIf using OpenAI (default)platform.openai.com/api-keys
DEEPSEEK_API_KEYIf using DeepSeekplatform.deepseek.com/api_keys
ANTHROPIC_API_KEYIf using Claudeconsole.anthropic.com → API Keys
TAVILY_API_KEYFor custom topicsapp.tavily.com
TWITTERAPI_IO_KEYOptionaltwitterapi.io
YOUTUBE_API_KEYOptionalconsole.cloud.google.com → YouTube Data API v3

AI Providers & Models

Provider--provider valueDefault modelBest for
OpenAIopenai (default)gpt-4o-miniQuality, reliability
DeepSeekdeepseekdeepseek-chatCost-effective, fast
Claudeclaudeclaude-3-5-haiku-20241022Nuanced writing

Override per request using the --provider flag. Set a permanent non-default with openclaw config set env.AI_PROVIDER '"deepseek"'. Override the model with --model (e.g. --model gpt-4o or --model claude-3-5-sonnet-20241022).


Implementation

IMPORTANT: Always run news_aggregator.py using the steps below. Do NOT search the web manually or improvise a response — the script handles all fetching, summarisation, and Discord posting.

Step 1 — Locate the script

The script is bundled with this skill. Find it:

SKILL_DIR=$(ls -d ~/.openclaw/skills/ai-news-aggregator-sl 2>/dev/null || ls -d ~/.openclaw/skills/news-aggregator 2>/dev/null)
SCRIPT="$SKILL_DIR/news_aggregator.py"
echo "Script: $SCRIPT"
ls "$SCRIPT"

Step 2 — Check uv is available

which uv && uv --version || echo "uv not found"

If uv is not found, ask the user to install it from their system package manager or from https://docs.astral.sh/uv/getting-started/installation/. Do not run a curl-pipe-sh command on the user's behalf.

Step 3 — API keys

Env vars are passed automatically by OpenClaw from its config. No .env file is needed.

Verify the required keys are set (without revealing values):

[[ -n "$OPENAI_API_KEY" ]]      && echo "OPENAI_API_KEY: set"      || echo "OPENAI_API_KEY: MISSING (required for default provider)"
[[ -n "$DISCORD_WEBHOOK_URL" ]] && echo "DISCORD_WEBHOOK_URL: set" || echo "DISCORD_WEBHOOK_URL: MISSING"

If any are missing, ask the user to register them:

openclaw config set env.OPENAI_API_KEY '<key>'
openclaw config set env.DISCORD_WEBHOOK_URL '<url>'
# Optional alternatives:
openclaw config set env.DEEPSEEK_API_KEY '<key>'
openclaw config set env.ANTHROPIC_API_KEY '<key>'

Step 4 — Parse the request

Extract topic, days, and provider from what the user said:

For AI provider:

User said--provider--model
"use OpenAI" / "with GPT" / "using ChatGPT" / nothing specified(omit — default)(omit)
"use Claude" / "with Anthropic"--provider claude(omit)
"use DeepSeek"--provider deepseek(omit)
"use GPT-4o" / "with gpt-4o"--provider openai--model gpt-4o
"use claude sonnet"--provider claude--model claude-3-5-sonnet-20241022
"use deepseek reasoner"--provider deepseek--model deepseek-reasoner

Extract topic and days from what the user said:

User said--topic--days
"AI news" / "tech news" / nothing specific(omit — default AI)1
"crypto news"--topic "crypto"1
"news about climate change"--topic "climate change"1
"last week's crypto news"--topic "crypto"7
"last 3 days of Bitcoin news"--topic "Bitcoin"3
"yesterday's AI news"(omit topic)1
"this week in AI"(omit topic)7

For report type:

User saidflag to add
"news" / "articles" / "digest"--report news
"trending" / "Twitter" / "YouTube"--report trending
"dry run" / "preview" / "don't post"--dry-run
"test Discord" / "test webhook"--test-discord
anything else(omit — runs all)

Step 5 — Run with uv

uv run automatically installs all dependencies from the script's inline metadata — no venv setup needed.

uv run "$SCRIPT" [--topic "TOPIC"] [--days N] [--report TYPE] [--provider PROVIDER] [--model MODEL] [--dry-run]

Examples:

# AI news today — OpenAI (default)
uv run "$SCRIPT"

# Crypto news using OpenAI
uv run "$SCRIPT" --topic "crypto" --provider openai

# Last week's climate news using Claude
uv run "$SCRIPT" --topic "climate change" --days 7 --provider claude

# Use a specific model
uv run "$SCRIPT" --topic "Bitcoin" --provider openai --model gpt-4o

# Trending AI on Twitter and YouTube
uv run "$SCRIPT" --report trending

# Preview without posting to Discord
uv run "$SCRIPT" --topic "Bitcoin" --dry-run

# Test webhook connection
uv run "$SCRIPT" --test-discord

Step 6 — Report back

Tell the user what was posted to Discord, how many items were found per source, and note any skipped sources (e.g. "YouTube skipped — YOUTUBE_API_KEY not set").

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

DailyBit — AI Tech Daily Digest

Curated daily digest from 92 top tech blogs (Andrej Karpathy's list) with AI-generated Chinese summaries, hierarchical tags, and personalized recommendations...

Registry SourceRecently Updated
2030Profile unavailable
General

AI News ZH - 中文AI科技日报

中文AI科技日报自动采集与推送。从The Verge、Wired、TechCrunch等英文源抓取最新AI资讯,自动翻译整理为中文,按分类推送到飞书/Telegram/Discord等渠道。适合关注AI行业动态的中文用户。

Registry SourceRecently Updated
2.3K7Profile unavailable
Automation

ai-news-pipeline-new

Run a self-contained Chinese and international AI news workflow inside the current workspace. Use when the user wants to collect RSS news, filter domestic an...

Registry SourceRecently Updated
440Profile unavailable
General

AI领域重点企业资讯抓取与简报生成

Collect, filter, classify AI industry news, generate Chinese titles and summaries, and export Excel and Word briefs based on company lists and sources.

Registry SourceRecently Updated
1620Profile unavailable