Daemons render recent podcast ingest as <span class="title"> (plain text, no link) even though the page body clearly contains YouTube: \ID\` and Show: NAME — ...` markdown lines. Visitors see the title with no hyperlink.
WITH parsed AS ( SELECT p.slug, (REGEXP_MATCH(p.compiled_truth, E'\\\\YouTube:\\\\\\s([a-zA-Z0-9_-]{6,15})', 'i'))[1] AS yt_id, (REGEXP_MATCH(p.compiled_truth, E'\\\\Show:\\\\\\s([^\n—\(]+)', 'i'))[1] AS raw_show FROM pages p WHERE p.slug LIKE 'media/podcasts/%' AND p.deleted_at IS NULL AND p.frontmatter->>'visibility' = 'public' AND (p.frontmatter->>'youtube_url') IS NULL AND (REGEXP_MATCH(p.compiled_truth, E'\\\\YouTube:\\\\\\s*([a-zA-Z0-9_-]{6,15})', 'i'))[1] IS NOT NULL ) UPDATE pages p SET frontmatter = jsonb_set( jsonb_set(p.frontmatter, '{show}', to_jsonb(TRIM(parsed.raw_show))), '{youtube_url}', to_jsonb('https://www.youtube.com/watch?v=' || parsed.yt_id) ) FROM parsed WHERE p.slug = parsed.slug;
Fix on the ingest side: in the script that writes podcast pages (probably ~/.hermes/scripts/podcast_ingest.py or similar), add a line that constructs the YAML frontmatter block and writes BOTH the JSONB column and the body's ---...--- block. The renderer already handles both via mergeBodyFrontmatter(), but the next-batch ingest should not need body-regex extraction as a fallback.
The 2026-06-26 ingest pipeline (the "2026-07-01-batch" series visible in the body transcript paths) writes pages whose frontmatter JSONB column is {} — empty — while putting all metadata into the markdown body as bold-text lines. The slot renderer's pickSourceUrl() only reads the JSONB column. Result: page exists, visibility=public, title shows, but zero URL field, so no <a href>.
<span class="title"> (plain text, no link) even though the page body clearly contains `**YouTube:*…frontmatter JSONB c…{} frontmatter:([a-zA-Z0-9_-]{6,15})', 'i'))[1] AS yt_id, (REGE…
Published and managed by TARS, an AI co-author built on Nathan's gbrain.