feat: expand catalog to 1,252 resources with podcast, course, and discovery updates - #2
Open
iChubai wants to merge 1 commit into
Open
feat: expand catalog to 1,252 resources with podcast, course, and discovery updates#2iChubai wants to merge 1 commit into
iChubai wants to merge 1 commit into
Conversation
…covery updates Grow the index from 1,025 to 1,252 verified videos, complete eight official course series, and add podcast discovery plus learning-workbench editorial surfaces.
iChubai
force-pushed
the
expand-catalog-and-discovery
branch
from
August 26, 2026 06:22
aaefa73 to
baf593b
Compare
There was a problem hiding this comment.
Pull request overview
Expands ScholarTube’s catalog and discovery experience by adding podcast-aware filtering/display, richer editorial framing (library intros, curation protocol, overrides), and improved learning-path/workbench logic—alongside new maintenance scripts and tests to keep the enlarged dataset consistent.
Changes:
- Add first-class podcast support across the UI (new “Podcast” format, show index section, filtering, and format-family handling).
- Improve learning-path generation, “next” recommendations, and researcher aggregation; add automated tests for these behaviors.
- Add editorial overrides, concept-map expansions, and maintenance scripts/docs for taxonomy, series grouping, hygiene, and notes.
Reviewed changes
Copilot reviewed 41 out of 49 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/styles.css | Styles for library intro, podcast show cards, resource topics, and responsive tweaks. |
| src/resource-utils.js | Adds podcast detection + format-family helpers and integrates them into search/filtering. |
| src/learning-utils.js | Reworks learning-path construction, adds step reasons, improves next recommendations and researcher aggregation. |
| src/export-utils.js | Exports format-family details and clarifies format output for podcasts. |
| src/editorial-overrides.js | Adds hand-written why/audience copy keyed by resource id. |
| src/concept-map.js | Expands concept clusters and prerequisite relationships. |
| src/components/ScholarTubers.jsx | Expands/edits curated profile definitions. |
| src/components/ResourceDetail.jsx | Adds topics chips and podcast-aware format line in detail view. |
| src/components/ResourceCard.jsx | Displays “Podcast” and “Core” labeling in cards when applicable. |
| src/components/PodcastShows.jsx | New podcast show index section with curated show intros and “browse episodes” actions. |
| src/components/PathGraph.jsx | Updates copy for the skill tree UI. |
| src/components/Library.jsx | Adds Podcast format tab, show filtering, intro panel, and accessibility attributes. |
| src/components/LearningWorkbench.jsx | Adds goal summaries/stage trails, path step reasons, improved researcher view, and next-step framing. |
| src/components/Hero.jsx | Updates hero messaging and adds podcast episode count. |
| src/components/Header.jsx | Adds “Podcasts” nav link and renames “About” to “Curation”. |
| src/components/Footer.jsx | Updates footer copy and adds new anchor links (learning/podcasts/contribute). |
| src/components/FeaturedCarousel.jsx | Updates featured slide metadata labeling and aria-labels. |
| src/components/Directions.jsx | Adds podcast breakdown in direction cards using format-family. |
| src/components/Curation.jsx | Expands on-page curation protocol and introduces signal definitions. |
| src/components/CourseSeriesDetail.jsx | Adds series intro copy and podcast-aware series labeling. |
| src/components/CourseSeriesCard.jsx | Podcast-aware “episode/lecture” labeling and improved aria-label wording. |
| src/components/Contribute.jsx | Tightens contribution copy/checklist and broadens URL placeholder to Bilibili. |
| src/App.jsx | Adds PodcastShows section and updates featured rotation/format param handling. |
| scripts/test-resource-detail.mjs | New tests for editorial overrides + generated detail copy determinism/shape. |
| scripts/test-learning-paths.mjs | New tests for learning-path stability and researcher parsing. |
| scripts/apply-taxonomy-fixes.mjs | New guarded taxonomy fix script (idempotent, evidence-backed). |
| scripts/apply-metadata-hygiene.mjs | New idempotent hygiene script (speaker/format/domain/keywords/tiering). |
| scripts/apply-editorial-notes.mjs | New idempotent notes generator replacing boilerplate with field-driven notes. |
| scripts/apply-course-series.mjs | Expands series assignment to include Talk series + new mappings/order tie-breaks. |
| README.md | Updates catalog counts and documents new maintenance/test commands. |
| package.json | Adds new scripts for curation pipeline, tests, and data adders. |
| dist/index.html | Updates built asset references (hashed JS/CSS). |
| data/world_models_research_craft_curation_2026-08-25.md | Documents world-model/research-craft expansion batch and verification. |
| data/series_and_notes_quality_2026-08-25.md | Documents series consolidation + notes/taxonomy quality pass. |
| data/podcast_expansion_2026-08-25.md | Documents podcast expansion batch and verification. |
| data/official_course_completions_2026-08-25.md | Documents official course completion batch and verification. |
| data/metadata_verification_report.json | Updates verification totals and platform breakdown post-expansion. |
| data/metadata_hygiene_2026-08-25.md | Documents hygiene pass rules/results and merge guidance. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+190
to
+193
| - **Build** — `npm run build` (Vite + publish-root) succeeds against the | ||
| updated JSON. Built artifacts (`index.html`, `dist/`, `assets/`) were | ||
| intentionally **not** committed so the site can be rebuilt once after all | ||
| parallel content PRs merge. |
Comment on lines
25
to
+26
| <span><b>{countBySection('Interview')}</b> interviews</span> | ||
| <span><b>{podcastCount}</b> podcast episodes</span> |
Comment on lines
+3
to
+20
| import { formatDuration, formatViews, getDisplayTopic } from '../resource-utils' | ||
| import { buildSeriesIntro } from '../resource-detail-utils' | ||
|
|
||
| // Local copy of the podcast heuristic, duplicated from resource-detail-utils.js | ||
| // on purpose so resource-utils.js stays untouched. Keep both copies aligned: | ||
| // podcast if format/seriesTitle/channel matches /podcast/i, or title/channel contains 播客. | ||
| function isPodcastResource(resource) { | ||
| return ( | ||
| /podcast/i.test(resource.format || '') || | ||
| /podcast/i.test(resource.seriesTitle || '') || | ||
| /podcast/i.test(resource.channel || '') || | ||
| (resource.title || '').includes('播客') || | ||
| (resource.channel || '').includes('播客') | ||
| ) | ||
| } | ||
|
|
||
| // Hand-written introductions for the shows the index knows well. Everything | ||
| // else falls back to the generated series introduction. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
npm ci && npm run dev— library search, filters, podcast tab, and series detail still worknpm run test:detailandnpm run test:pathspassMade with Cursor