iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Read, search and copy the transcript of any YouTube video, with clickable timestamps. Works as a Chrome extension on desktop and as a bookmarklet on iPhone and iPad.
TypeScript · React 19 · Chrome Manifest V3 · esbuild · Node test runner · Vercel · no backend, no API keys, $0 to run
The Chrome popup: pick a caption track, search, click any timestamp to jump there, or copy/download the text.
A lot of what I learn comes from YouTube: lectures, tutorials, long talks. Often I don't want to rewatch a 40-minute video to find one explanation. I want to skim it, search it for a word, or paste a section into my notes. YouTube has a "Show transcript" panel, but it's buried, it isn't searchable, it's awkward to copy from, and it's even harder to use on a phone.
This is the follow-up to my other YouTube extension, YTBookmarks, which marks moments in a video. This one makes a video's words searchable. I set strict rules: use only YouTube's own captions, no server, no paid APIs, and never alter or invent text.
The first obstacle: every caption request came back empty. YouTube now requires a proof-of-origin token (pot) on caption URLs, minted inside its own player. That change in 2026 broke most of the tutorials and open-source libraries I'd normally have leaned on.
Instead of trying to forge tokens, I changed approach: let YouTube's player do the work and observe it.
Observed on live YouTube during development (not a formal benchmark): a 23-minute auto-generated transcript (817 lines) loads in about 90 ms, and a cached 47-minute video in about 41 ms.
src/extractor/. When YouTube changes something, there's one place to fix. The UI only sees a small interface: getVideoInfo, getTranscript, seekTo.build.mjs.www.youtube.com, made the same way the page makes it. Nothing is collected or sent anywhere else.youtu.be links and other URL formats, plus Safari quirks like bookmarklets only running from the Bookmarks list.chrome.storage.local for the cacheRequires Chrome 111+ and Node 24+ (the tests use Node's built-in TypeScript support).
npm install
npm run build
Then in Chrome:
chrome://extensions and turn on Developer mode (top right).dist folder.Updating after a code change: npm run build, click the reload arrow on the extension's card in
chrome://extensions, then reload the YouTube tab. npm run watch rebuilds on every save.
This is the beginning of the README. Read the rest at the original. Read the full README ↗