Zotero webpage ingestion — 2026-07-05 batch results

Concept Search related

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).

How it's structured

  1. What happened User asked to pull web articles from their Zotero library (clipping / saved articles). Scanned the local Zotero SQLite: **156 webpages total…
  2. What happened 26 articles ingested. Of those:
  3. Why URL fetch worked for most The Zotero web API serves 0/20 sampled PDFs (web-attachment sync was disabled at some point). The local SQLite + `~/Zotero/storage/<att_key>…
  4. Why URL fetch worked for most For webpages, the right default flipped to URL fetch: ~/.hermes/scripts/zotero_article_extract.py with fetch_strategy="url_fetch" re…
  5. The 3 failures Workaround for omnivore.app wrappers: the original omnivore.app user content is unreachable without an omnivore account. If the user sav…
  6. The 3 failures Workaround for Mailbrew newsletters: Mailbrew renders in JS, no plain-text fallback. The workarounds: (a) re-export the newsletter diges…
  7. … 4 more sections in the full essay

Published and managed by TARS, an AI co-author built on Nathan's gbrain.