Files
yt-channel-scraper/graphify-out/GRAPH_REPORT.md
T
urieljareth 06497299ab feat: integrated audio player + animated transcript follower
- Video detail (done videos): added 'Download audio' button; removed the
  manual 'Thumbnail' button (thumbnails auto-download now, so it was redundant).
- New 'GET /api/videos/{id}/audio' endpoint (also serves HEAD for probing),
  serving data/audio/<video_id>.mp3. Audio job outtmpl switched to %(id)s so
  files are addressable per video.
- Integrated <audio> player appears in the detail view once the MP3 is present
  (probed via HEAD on openVideo; polled after a download job until ready).
- Synced transcript follower: as audio plays, the matching segment is
  highlighted (seg-active) and auto-scrolled into view like a karaoke/lyrics
  tracker. Clicking any segment timestamp or chapter seeks the audio to that
  point (falls back to scroll when no audio). Playback indicator pulses while
  playing.
2026-07-27 00:00:28 -06:00

6.7 KiB

Graph Report - . (2026-07-26)

Corpus Check

  • Corpus is ~28,854 words - fits in a single context window. You may not need a graph.

Summary

  • 392 nodes · 951 edges · 14 communities (12 shown, 2 thin omitted)
  • Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 65 edges (avg confidence: 0.76)
  • Token cost: 11,800 input · 4,100 output

Community Hubs (Navigation)

  • Webapp Frontend (JS)
  • Transcript Extraction & Parsing
  • Config & Discovery Pipeline
  • Store & Export Layer
  • CLI Command Layer
  • Platform Design & Proposals
  • Segments Search & Backfill
  • Store Platform Tests
  • Content Analysis
  • README & Config Docs
  • Package Manifest

God Nodes (most connected - your core abstractions)

  1. Store - 81 edges
  2. Segment - 32 edges
  3. api() - 31 edges
  4. toast() - 29 edges
  5. Config - 23 edges
  6. process_video() - 19 edges
  7. JobManager - 17 edges
  8. resolve_active_path() - 13 edges
  9. discover_channel() - 13 edges
  10. backfill_from_markdown() - 13 edges

Surprising Connections (you probably didn't know these)

  • test_dashboard_aggregates() --calls--> Segment [INFERRED] tests/test_store_platform.py → src/yt_scraper/parse.py
  • test_store_and_search_segments() --calls--> Segment [INFERRED] tests/test_store_platform.py → src/yt_scraper/parse.py
  • test_store_segments_overwrites() --calls--> Segment [INFERRED] tests/test_store_platform.py → src/yt_scraper/parse.py
  • store() --calls--> Store [INFERRED] tests/test_store_platform.py → src/yt_scraper/store.py
  • test_migration_idempotent() --calls--> Store [INFERRED] tests/test_store_platform.py → src/yt_scraper/store.py

Import Cycles

  • None detected.

Hyperedges (group relationships)

  • Workstream B webapp stack (FastAPI + Alpine SPA + subagent) — opencode_agent_webapp_builder, opencode_goals_webapp_build, src_yt_scraper_webapp_static_index, docs_superpowers_specs_2026_07_26_platform_design_dark_command_center, docs_superpowers_specs_2026_07_26_platform_design_sse_job_runner [EXTRACTED 0.95]
  • FTS5 transcript search flow (proposal -> spec -> SPA view) — opportunities_search_fts5, docs_superpowers_specs_2026_07_26_platform_design_transcript_fts5, src_yt_scraper_webapp_static_index [INFERRED 0.85]
  • Cookie auth chain (vault -> resolve_active_path -> scrape job) — docs_superpowers_specs_2026_07_26_platform_design_cookie_vault_ux, docs_superpowers_specs_2026_07_26_platform_design_sse_job_runner, docs_superpowers_specs_2026_07_26_platform_design_cookies_bug_fix, src_yt_scraper_webapp_static_index [INFERRED 0.85]

Communities (14 total, 2 thin omitted)

Community 0 - "Webapp Frontend (JS)"

Cohesion: 0.06 Nodes (59): activateCookie(), addChannel(), api(), axisOpts(), barOpts(), cancelScrape(), checkHealth(), closeStream() (+51 more)

Community 1 - "Transcript Extraction & Parsing"

Cohesion: 0.07 Nodes (57): Environment, align_chapters(), Chapter, chapters_from_info(), Section, _parse_tags(), Regenerar Markdown desde segmentos almacenados., re_render_cmd() (+49 more)

Community 2 - "Config & Discovery Pipeline"

Cohesion: 0.06 Nodes (40): APIRouter, FastAPI, _build_config(), Config, DelayConfig, load_config(), Any, Path (+32 more)

Community 3 - "Store & Export Layer"

Cohesion: 0.07 Nodes (28): Connection, Cursor, Row, is_expired(), list_vault(), export_csv(), export_html(), export_json() (+20 more)

Community 4 - "CLI Command Layer"

Cohesion: 0.08 Nodes (41): analyze_cmd(), _apply_filters(), audio_cmd(), _channel_targets(), channels_add(), cli(), export_cmd(), _extract_handle() (+33 more)

Community 5 - "Platform Design & Proposals"

Cohesion: 0.12 Nodes (20): Platform Implementation Plan, Platform Design Spec, Cookie drag-and-drop vault UX, cli.py cookies scope bug fix, Design language: dark data command center, Architecture: Monorepo in-package webapp (Approach A), Scope rule: No AI features, Single-threaded scrape job runner + SSE event bus (+12 more)

Community 6 - "Segments Search & Backfill"

Cohesion: 0.26 Nodes (11): backfill_from_markdown(), parse_markdown(), ParsedMarkdown, Path, Parse all done .md files under md_root, populate segments/FTS/metadata. Idempote, search(), store_segments(), _strip_quotes() (+3 more)

Community 7 - "Store Platform Tests"

Cohesion: 0.17 Nodes (5): store(), test_dashboard_aggregates(), test_migration_idempotent(), test_store_and_search_segments(), test_store_segments_overwrites()

Community 8 - "Content Analysis"

Cohesion: 0.27 Nodes (10): _iter_texts(), Path, Return [(YYYY-MM, count)] of months where term appears in transcripts., render_timeline_chart(), render_top_words_chart(), render_wordcloud(), term_timeline(), _tokenize() (+2 more)

Knowledge Gaps

  • 10 isolated node(s): yt-channel-scraper, OPPORTUNITIES.md - extension audit, Design language: dark data command center, yt-dlp InnerTube mechanism (ANDROID/IOS/WEB clients), Feature proposal: search (FTS5 transcript search) (+5 more) These have ≤1 connection - possible missing edges or undocumented components.
  • 2 thin communities (<3 nodes) omitted from report — run graphify query to explore isolated nodes.

Suggested Questions

Questions this graph is uniquely positioned to answer:

  • Why does Store connect Store & Export Layer to Transcript Extraction & Parsing, Config & Discovery Pipeline, CLI Command Layer, Segments Search & Backfill, Store Platform Tests, Content Analysis? High betweenness centrality (0.194) - this node is a cross-community bridge.
  • Why does Segment connect Transcript Extraction & Parsing to CLI Command Layer, Segments Search & Backfill, Store Platform Tests? High betweenness centrality (0.057) - this node is a cross-community bridge.
  • Why does Config connect Config & Discovery Pipeline to Transcript Extraction & Parsing, CLI Command Layer? High betweenness centrality (0.024) - this node is a cross-community bridge.
  • Are the 4 inferred relationships involving Store (e.g. with ParsedMarkdown and store()) actually correct? Store has 4 INFERRED edges - model-reasoned connections that need verification.
  • Are the 17 inferred relationships involving Segment (e.g. with Chapter and Section) actually correct? Segment has 17 INFERRED edges - model-reasoned connections that need verification.
  • What connects yt-channel-scraper, OPPORTUNITIES.md - extension audit, Design language: dark data command center to the rest of the system? 10 weakly-connected nodes found - possible documentation gaps or missing edges.
  • Should Webapp Frontend (JS) be split into smaller, more focused modules? Cohesion score 0.062317429406037 - nodes in this community are weakly interconnected.