spotify-news-digest
by @ibillxia
Scrape and summarize Spotify-related news from multiple sources (Spotify official blogs, engineering/research/newsroom, TechCrunch, The Verge, Music Business...
One-Time Digest (Last 24 Hours)
cd /projects/.openclaw/skills/spotify-news-digest
python3 scripts/generate_digest.py
Last 7 Days (Broader Coverage)
python3 scripts/generate_digest.py --hours 168
Save to Markdown File
python3 scripts/generate_digest.py --hours 24 --output /tmp/spotify_digest.md
Add / Remove Sources
Editconfig/sources.json:
{
"sources": [
{
"name": "My Custom Source",
"type": "rss",
"url": "https://example.com/feed/",
"language": "en",
"category": "media",
"keyword_filter": "spotify"
}
],
"settings": {
"max_news_per_source": 15,
"final_output_count": 20,
"similarity_threshold": 0.65,
"timeout": 12,
"keyword_filter_default": "spotify"
}
}
keyword_filter: When set, only articles containing this keyword (case-insensitive) in title or summary are included. Leave empty for official Spotify feeds that are already Spotify-only.
_disabled: true: Mark a source to skip it at runtime without deleting it.
> Security: Only add public news domains to sources.json. Do not add intranet, VPN, or cloud metadata URLs โ they could be fetched directly via RSS without domain-allowlist filtering.
Extend the DDG Domain Allowlist
If you add sources that are reachable via DDG News search (not RSS), also add their domain toALLOWED_DDG_DOMAINS near the top of scripts/fetch_spotify_news.py:
ALLOWED_DDG_DOMAINS: tuple = (
'atspotify.com',
'techcrunch.com',
...
'your-new-domain.com', # โ add here
)
Tune Deduplication
Inscripts/process_spotify_news.py:
processor = SpotifyNewsProcessor(similarity_threshold=0.65)
0.5 = aggressive dedup | 0.8 = loose dedup
Tune Source Authority Weights
Inprocess_spotify_news.py, edit source_weight:
source_weight = {
'Spotify Engineering Blog': 90,
'Spotify Newsroom': 80,
'TechCrunch': 60,
# Add your custom sources here
}
No articles fetched (0 ๆก)
Most likely a network restriction on RSS endpoints.# Test direct RSS access
curl -I https://engineering.atspotify.com/feed/Test DDG search fallback
python3 -c "
from ddgs import DDGS
with DDGS() as d:
r = list(d.news('spotify new feature', max_results=3, timelimit='w'))
print(r)
"
If RSS is blocked but DDG works, the skill will still return results via the search fallback. This is normal in restricted network environments.
ddgs not installed
pip3 install ddgs
> duckduckgo-search (older package name) is also supported as a fallback.
Slow fetch / timeout
Sources with slow RSS feeds are marked_disabled: true in sources.json. To disable an additional slow source:
{ "name": "...", "_disabled": true, ... }
Too many duplicate articles
Lower the similarity threshold:SpotifyNewsProcessor(similarity_threshold=0.5)
Articles missing Chinese summary
Theformat_digest() function wraps untranslated titles in [brackets]. This is intentional โ the LLM caller should fill zh_summary before rendering. See Usage Examples โ LLM-Enhanced Summaries above.clawhub install spotify-news-digest