Evaluate and rank aggregated news stories for AC878 radio bulletins. Use after news aggregation to score, deduplicate, and select the best stories for each bulletin segment (Finance, Australian, China/Asia, International). Outputs a curated story list as JSON for the script writer. Can optionally use PinchTab for deep-scraping top stories.
Score, rank, and select news stories from the aggregated news brief for radio bulletin production.
Read the latest aggregated brief:
BRIEF=$(ls -t /Users/jackycheung/.openclaw/workspace/news/raw/news_brief_*.md | head -1)
Extract all stories from the brief. For each story capture: headline, summary, source tier, category.
| Factor | Weight | Criteria |
|---|---|---|
| Recency | 25 | Published <6h=25, <12h=15, <24h=5 |
| Relevance | 25 | AU audience interest (AU domestic=25, China/HK=20, International=15, Niche=5) |
| Impact |
| 20 |
| Affects many people=20, moderate=10, limited=5 |
| Source tier | 15 | Tier 1=15, Tier 2=10, Tier 3=5 |
| Uniqueness | 15 | Not covered in recent bulletins=15, partially covered=5, duplicate=0 |
Group stories about the same event. Keep highest-scored version only.
Allocate stories to 4 segments:
For the top 3 stories per segment that need more detail:
pinchtab nav "<story_url>"
pinchtab text
This extracts full article text token-efficiently (~800 tokens vs screenshots). Use the extra detail to enrich the script writer's input.
Read the most recent bulletin scripts to avoid repeating stories:
# Morning check afternoon, afternoon check morning
ls -t /Users/jackycheung/.openclaw/workspace/news/bulletin-file-*.txt | head -4
ls -t /Users/jackycheung/.openclaw/workspace/news/afternoon-file-*.txt | head -4
Mark any story already covered as duplicate: true.
Write curated story list to:
news/evaluated/morning-stories.jsonnews/evaluated/afternoon-stories.jsonJSON schema:
{
"evaluatedAt": "ISO timestamp",
"briefSource": "path to brief file",
"segments": {
"finance": [
{
"headline": "...",
"summary": "...",
"score": 85,
"sourceUrl": "...",
"sourceTier": 1,
"enrichedText": "... (if deep-scraped)",
"duplicate": false
}
],
"australian": [...],
"china_asia": [...],
"international": [...]
},
"totalStories": 28,
"duplicatesRemoved": 5
}
PinchTab must be running for deep-scrape:
# Check if running
curl -s http://localhost:9867/health
# Start if needed
pinchtab &
If PinchTab is unavailable, skip deep-scrape and proceed with brief summaries only.