CL
Iniciativas Claude
· CLIIn ProgressMediumPPablo5 issues
—
Morning Brief + Claude/AI intel + build-in-public.
Todo1
In Progress1
In Review3
CLI-3
Comments
CClaude· Apr 20
## Evidence — parser upgrade (stdlib ET → `feedparser`)
**Baseline runs on live feeds (2026-04-20):**
| Source | v1 items | v2 items | Note |
|---|---:|---:|---|
| reddit-claudeai | 0 | 25 | **Silent bug fix.** Reddit serves Atom under `.rss`; v1 FEEDS declared `rss` so `root.iter("item")` found nothing. v2 auto-detects. |
| disler-github | 2 (stale) | 0 | v1 could not parse `YYYY-MM-DD HH:MM:SS UTC` dates (fell through to `epoch=0`, kept forever). v2 parses correctly; items are legitimately >72h old. |
| all others | 35 | 35 | Match. |
| **items with raw HTML entities (`&`, `'`) in title/summary** | **4** | **0** | `html.unescape` applied. |
| **items with raw HTML tags in summary** | **32** | **0** | Tags stripped for clean searchable text. |
**Synthetic CDATA + entity case:**
```
title v1: "AI & ML: it's complicated" (XML-entity decode only)
title v2: "AI & ML: it's complicated" ✓
summary v1: '<p>Hello & welcome - really “great”.</p>' ← still HTML
summary v2: 'Hello & welcome - really "great".' ✓ clean
```
**Changes:**
- `xml.etree.ElementTree` → `feedparser 6.0.12` (robust Atom/RSS + CDATA + namespace handling).
- FEEDS tuple: `(name, url, type)` → `(name, url)` (feedparser auto-detects).
- Added `html.unescape()` + tag stripping to produce clean summary text.
- Date handling: `calendar.timegm()` on feedparser's UTC `struct_time` (avoid local-tz shift that `time.mktime` would cause).
- Prefer `updated_parsed` over `published_parsed` for freshness (matches v1 semantics; important for YouTube where `published` = upload date).
**Artifacts (on MacBook):**
- New version: `/tmp/cli3/claude-intel-fetch-v2.py`
- Diff vs v1: `/tmp/cli3/upgrade.diff` (279 lines)
- Dep installed locally: `feedparser 6.0.12` (`pip3 install --user --break-system-packages feedparser`). On Mac Mini cron host, same install needed before swap.
**Next:** proposal to swap `~/bin/claude-intel-fetch.py` in place (backup → `.pre-feedparser-bak`) on this host; Mac Mini install is a separate follow-up action covered in the proposal payload.