A lightweight AI-news pipeline + web app that:
- Pulls AI headlines from RSS feeds
- Ranks + deduplicates them
- Writes curated results to
public/news.json - Can post a short daily summary to X via GitHub Actions
- News ingestion: fetches from multiple AI-related RSS sources
- Curation: scores by recency/source weight, removes duplicates
- Output: saves top stories to
public/news.json - Automation: GitHub Actions runs on schedule and on manual trigger
- Social posting: optional X posting using Tweepy user-context auth
- Fetches RSS feeds
- Normalizes, scores, deduplicates
- Writes top items to
public/news.json
Run locally:
npm ci
node scripts/update-news.mjs- Reads top stories from
public/news.json - Builds a compact “AI morning brief” tweet
- Posts to X via Tweepy (
Client.create_tweet) - Supports optional test override via
X_TEST_TEXT
Run locally:
pip install tweepy
export X_API_KEY=...
export X_API_SECRET=...
export X_ACCESS_TOKEN=...
export X_ACCESS_TOKEN_SECRET=...
python scripts/post-to-x.pyThis workflow can:
- Gate execution to 07:05 America/New_York (or bypass via
force_run=true) - Refresh
public/news.json - Commit/push updated
news.jsonwhen changed - Post to X using
scripts/post-to-x.py
Manual test trigger (workflow_dispatch) supports:
force_run: settrueto bypass time gatetest_text: optional exact text for posting diagnostics
Set these in repo settings:
X_API_KEYX_API_SECRETX_ACCESS_TOKENX_ACCESS_TOKEN_SECRET
Security note: if credentials are ever exposed, rotate all 4 immediately.
public/news.json entries look like:
{
"id": "2026-02-16-1",
"title": "...",
"summary": "...",
"url": "https://...",
"date": "2026-02-16",
"source": "Google News (AI)"
}- X post 403 Forbidden: often account/app/content restrictions.
- Verify auth with a minimal post first.
- Try manual
test_textrun to isolate formatting/content issues. - Ensure account has required write access and tokens are current.
- React + Vite (frontend)
- Node.js script for RSS ingestion
- Python + Tweepy for X posting
- GitHub Actions for scheduling/automation