Skip to content

feat(core,studio): read a YouTube video, its tracks and transcript (extension 0.7.0) - #309

Merged
russoedu merged 2 commits into
mainfrom
feat/youtube-parser
Oct 17, 2026
Merged

russoedu merged 2 commits into
mainfrom
feat/youtube-parser

Conversation

@russoedu

@russoedu russoedu commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Part of #294 (YouTube parser).

  • A request with "as": "youtube" to a video's address (watch?v=, youtu.be/, /shorts/, /embed/, /live/) reads the video as JSON: title, author, channel, description, length, views, keywords, thumbnail, the caption tracks it has, and a transcript with the start and duration of every line (youtube.language picks the track, youtube.transcript: false skips it). It asks YouTube's player endpoint the way its Android app does, then fetches the track's text as json3; nothing is scraped from the watch page. The requests go through the engine's own HTTP client, so allowed hosts and the proxy apply.
  • Everything for JSON works on it: jsonpath, mappings, every output format.
  • Studio recognises a video address (detect-url) and shows the document as a tree; the recipe runs from there. Extension 0.7.0: the bumps in the earlier ODF PRs (0.7.0 to 0.9.0) did not land, so those merges published nothing; this release carries .ods, .odt, .odp and YouTube.
  • New youtube option on the request step (only with as: "youtube"), in the recipe schema and the regenerated JSON schema; authoring guide §4.14.

A limit, stated plainly. YouTube refuses machine translation (tlang) with a 429 for this kind of client (checked on both Android and iOS identities): it needs a token only a signed-in browser session gets. So youtube.translateTo uses the video's own track when it has one in that language (the uploader's words beat a machine translation), and otherwise fails saying so and listing the tracks the video does have. Also, YouTube changes this without notice: the parser reports what it got (a captcha page, an empty body, a status) instead of guessing.

Checked: typecheck, lint, unit tests for core, studio, studio-ui, cli, mcp and the extension; the editor and MCP e2e. Against the real YouTube: the details, the English and German transcripts, transcript: false, and the error for an unavailable video; in a real Studio, a recipe over the video's transcript produced six time-stamped records. The unit tests use a captured player response and transcript of a real video.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap

russoedu and others added 2 commits October 17, 2026 01:17
… JSON (0.10.0)

A request with as: youtube reads the video's details, caption tracks and a transcript with the time
of every line, in a chosen language. Studio recognises a video address and shows the document as a
tree. YouTube's machine translation needs a browser token: a language the video has a track for
is that track, any other fails saying so.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
…Tube reader

The earlier 0.7.0 to 0.9.0 bumps did not land, so those merges published nothing: the
extension on the Marketplace is still 0.6.0. This release carries .ods, .odt, .odp and YouTube.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
@russoedu russoedu changed the title feat(core,studio): read a YouTube video, its tracks and transcript (0.10.0) feat(core,studio): read a YouTube video, its tracks and transcript (extension 0.7.0) Oct 17, 2026
@russoedu
russoedu merged commit e1344dd into main Oct 17, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant