<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ergashev Maksud</title>
    <description>The latest articles on DEV Community by Ergashev Maksud (@ergashev_maksud_fede931ac).</description>
    <link>https://dev.to/ergashev_maksud_fede931ac</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3904862%2F8a7a9528-6220-49ab-9a5a-a0024cc56cc8.png</url>
      <title>DEV Community: Ergashev Maksud</title>
      <link>https://dev.to/ergashev_maksud_fede931ac</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ergashev_maksud_fede931ac"/>
    <language>en</language>
    <item>
      <title>I built my first Chrome extension to copy YouTube transcripts — here's what I learned</title>
      <dc:creator>Ergashev Maksud</dc:creator>
      <pubDate>Wed, 29 Apr 2026 18:34:37 +0000</pubDate>
      <link>https://dev.to/ergashev_maksud_fede931ac/i-built-my-first-chrome-extension-to-copy-youtube-transcripts-heres-what-i-learned-4m57</link>
      <guid>https://dev.to/ergashev_maksud_fede931ac/i-built-my-first-chrome-extension-to-copy-youtube-transcripts-heres-what-i-learned-4m57</guid>
      <description>&lt;p&gt;I watch a lot of YouTube — lectures, tech talks, podcasts. And I kept doing the same thing over and over: open the transcript panel, scroll, select all, copy, paste into ChatGPT or Claude. Every time it was messy — broken lines, timestamps mixed in, no formatting.&lt;/p&gt;

&lt;p&gt;So I decided to build a Chrome extension to do it for me. I had zero experience with browser extensions before this.&lt;/p&gt;

&lt;p&gt;What it does&lt;br&gt;
It adds a small button inside the YouTube player. You click it, and you get the full transcript in a clean overlay. From there you can:&lt;/p&gt;

&lt;p&gt;Copy or download as Markdown, plain text, SRT, or VTT&lt;br&gt;
Search inside the transcript&lt;br&gt;
Click any timestamp to jump to that moment&lt;br&gt;
Switch between subtitle languages&lt;br&gt;
Send the text directly to Claude or ChatGPT&lt;br&gt;
No AI, no accounts, no tracking. Just the text.&lt;/p&gt;

&lt;p&gt;What I learned building it&lt;br&gt;
YouTube doesn't make it easy. There's no public API for transcripts. I had to reverse-engineer how YouTube loads captions internally — through InnerTube endpoints, timedtext XML, DOM scraping, and signed URLs that expire. Some videos (like TED talks with community captions) need a completely different approach than regular videos.&lt;/p&gt;

&lt;p&gt;Publishing on the Chrome Web Store is painful. I got rejected twice before getting approved. First time for unclear permissions justification, second time for a screenshot that didn't meet their size requirements (1280x800). The review process takes 1-3 days each time, so every rejection costs you a week.&lt;/p&gt;

&lt;p&gt;The manifest v3 migration is real. Most tutorials and Stack Overflow answers are still for manifest v2. If you're building a new extension in 2026, you're dealing with service workers instead of background pages, and content scripts run in an isolated world by default — which means you can't access YouTube's page variables directly without injecting a MAIN world script.&lt;/p&gt;

&lt;p&gt;The hardest part&lt;br&gt;
Language switching. YouTube renders its transcript language dropdown as a custom Polymer component (tp-yt-paper-item inside iron-dropdown). The same component is used for the comments sort dropdown ("Top" / "Newest"), so you have to distinguish between them. And for videos with community-contributed captions, the timedtext API returns empty — you have to physically click through YouTube's own UI to switch languages.&lt;/p&gt;

&lt;p&gt;Try it&lt;br&gt;
If you work with YouTube transcripts regularly, feel free to check it out:&lt;/p&gt;

&lt;p&gt;YT Transcript on Chrome Web Store&lt;/p&gt;

&lt;p&gt;Free: 10 exports/month. If you need more — $7 one-time, no subscription.&lt;/p&gt;

&lt;p&gt;This was my first extension and first time publishing anything. Happy to answer questions about the process.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>browser</category>
    </item>
  </channel>
</rss>
