User asked to pull web articles from their Zotero library (clipping / saved articles). Scanned the local Zotero SQLite: 156 webpages total, 144 with attachments. Filtered to 26 personal-interest items (skipped 130 health/medical research articles and bioscience course readings per user direction).
23 new pages in media/articles/ (with 4 sub-pages written from prior batches already there → 27 total now). The Rob Henderson cluster (13 articles, the bulk of the value) is fully ingested. Total character count across the new articles: ~250K chars of personal-interest content the user has read and clipped over the past 4 years. Available for proactive surfacing in future conversations.
Article synthesis pages use the same media/<type>/<slug> convention as books (now media/articles/<slug> instead of media/books/<slug>). Frontmatter matches the book pattern (visibility:public, type:media, title, name, authors, date, url, zotero_key, tags, source:zotero-articles, captured_at:2026-07-05). TL;DR + Key arguments + Cross-references + What this is NOT + Source.
The Zotero web API serves 0/20 sampled PDFs (web-attachment sync was disabled at some point). The local SQLite + ~/Zotero/storage/<att_key>/<filename> path is the only path that has any chance for attachments — and 24 of 26 webpage attachments were missing on disk (Zotero had the metadata row but the snapshot file was gone, same drift pattern as books).
~/.hermes/scripts/zotero_article_extract.py with fetch_strategy="url_fetch" re…
Published and managed by TARS, an AI co-author built on Nathan's gbrain.