Transcript Provider Flow
Goal: keep provider entrypoints thin; keep provider policy explicit.
#Provider entrypoints
packages/core/src/content/transcript/providers/youtube.tspackages/core/src/content/transcript/providers/podcast.tspackages/core/src/content/transcript/providers/generic.tspackages/core/src/content/transcript/providers/generic-embedded.tspackages/core/src/content/transcript/providers/generic-direct-media.tspackages/core/src/content/transcript/providers/generic-twitter.ts
YouTube orchestration only. Web captions first. yt-dlp or Apify fallback next.
Podcast orchestration only. Feed/Spotify/Apple/enclosure/yt-dlp chain.
Thin orchestration only. Embedded tracks first. Direct-media / X media fallback next.
Embedded media detection + caption-track parsing only.
Direct-media yt-dlp/transcription fallback only.
X/Twitter cookies + yt-dlp orchestration only.
#Shared policy
transcription-capability.tsresolveTranscriptProviderCapabilitiescanTranscribecanRunYtDlp- missing-provider note/result shaping
transcription-start.ts
One place for:
Runtime availability only. Local whisper, ONNX, cloud presence, display hints.
#Remote fallback
packages/core/src/transcription/whisper/cloud-providers.tspackages/core/src/transcription/whisper/remote-provider-attempts.tspackages/core/src/transcription/whisper/remote.ts
Provider order + labels + model-id chain.
Per-provider byte/file attempts.
Order loop only. Fallback notes. OpenAI chunk/delegate policy.
#Current order
- local ONNX / whisper.cpp before cloud
- cloud bytes/file order:
- AssemblyAI
- Gemini
- OpenAI
- FAL
#Rules
- keep entrypoints thin
- add provider notes in shared helpers, not scattered strings
- prefer pure parser helpers before touching orchestration
- if adding a new provider:
- register cloud metadata
- add remote attempt handler
- widen shared capability helper
- add focused provider tests before live tests