Automated weekly news digest — fetches articles, filters out opinions and speculation, keeps only tangible events.
A GitHub Actions workflow runs every Monday: Python scripts pull articles from Google News via SerpAPI, then a Copilot CLI agent applies the filter-actual-news skill to separate signal from noise and publish a digest as a GitHub Discussion.
"Did something happen, or is someone just talking?"
If nobody actually did anything, it's not news. Laws voted, companies restructured, courts ruled — those stay. Op-eds, predictions, "X calls for Y" — those get cut.
SerpAPI (Google News) → `/tmp/news/news.json` → Copilot Agent → output.json → GitHub Discussion
- Fetch —
run_queries.pyreadsconf/queries.ymland runs each query against Google News via SerpAPI. Deduplicates and saves results to/tmp/news/. - Filter — The Copilot CLI agent loads the skill (
skills/filter-actual-news/SKILL.md) and per-topic include/exclude rules fromqueries.yml. Articles that don't describe a concrete event are dropped. Default: exclude. - Rank — Surviving articles are deduplicated (same event, multiple outlets → keep the best source), then tiered: High / Medium / Low.
- Publish — The agent writes
output.json. The workflow creates a GitHub Discussion with the formatted digest.
- A GitHub repository (public or private)
- A SerpAPI account (free tier: 250 searches/month)
- GitHub Copilot access (for the Copilot CLI agent step)
- Sign up at serpapi.com
- Go to Dashboard → API Key and copy your key
The Copilot CLI agent authenticates via the COPILOT_GITHUB_TOKEN environment variable. Follow the Copilot CLI authentication docs:
- Go to Fine-grained personal access tokens
- Under Permissions, click Add permissions and select Copilot Requests
- Click Generate token
- Copy the token
The workflow publishes digests as GitHub Discussions. This requires a separate token with Discussions write access. If not set, the workflow runs normally but skips publishing.
- Go to Fine-grained personal access tokens
- Set Repository access to your AIctuality repo
- Under Repository permissions, set Discussions → Read and write
- Click Generate token
- Copy the token
Go to your repo → Settings → Secrets and variables → Actions → New repository secret:
| Secret | Value | Required |
|---|---|---|
SERPAPI_KEY |
Your SerpAPI API key | Yes |
COPILOT_GITHUB_TOKEN |
The Copilot token from step 2 | Yes |
DISCUSSIONS_WRITE_TOKEN |
The Discussions token from step 3 | No |
The workflow publishes digests as GitHub Discussions:
- Go to Settings → General → Features
- Check Discussions
- Make sure a "General" category exists (it's created by default)
The workflow runs automatically every Monday at 7 AM PST. To trigger it manually:
- Go to Actions → Weekly News Monitor → Run workflow
- Check the job summary for the digest, or look in Discussions
Edit conf/queries.yml to add, remove, or tweak topics. Each entry has:
- id: my-topic
query: "search terms here"
description: "What this topic tracks"
num: 30 # articles per query
gl: "us" # country
hl: "en" # language
filters:
include:
- Concrete events you want to keep
exclude:
- Noise patterns you want to dropThe skill reads these filters at runtime — no code changes needed.