YouTube Transcript (Android client)

unlisted

by ybl0901

Import YouTube captions into your vault as Markdown notes, with YAML metadata and optional timestamps.

Updated 2d agoMIT
View on GitHub

YouTube Transcript (Android client)

Import YouTube captions into your Obsidian vault as Markdown notes.

Why this plugin exists

YouTube's InnerTube API validates client fingerprints. Only one combination is accepted for caption retrieval: the Android client together with a matching Android User-Agent. Every other combination — Android with a desktop Chrome User-Agent, iOS with any User-Agent — is answered with:

LOGIN_REQUIRED: Sign in to confirm you're not a bot

Browser extensions cannot set User-Agent, because it is a forbidden header controlled by the browser. They have to patch requests through declarativeNetRequest, which behaves differently across Chrome versions and request origins.

Obsidian runs on Electron. requestUrl can send any User-Agent, so this plugin talks to InnerTube the same way the Android app does — no workarounds, no per-version hacks.

Usage

Copy a YouTube URL, then run one of the commands from the command palette (Cmd/Ctrl + P):

CommandDescription
Fetch transcript from clipboard URLReads the URL from your clipboard
Fetch transcript from URL promptOpens a dialog to paste a URL

Supported URL forms:

  • https://www.youtube.com/watch?v=VIDEO_ID
  • https://youtu.be/VIDEO_ID
  • https://www.youtube.com/shorts/VIDEO_ID
  • A bare 11-character video ID

The note is written to the folder configured in settings. Existing notes are only overwritten when they were created by this plugin — see Overwrite protection.

Settings

SettingDescription
Note folderFolder inside the vault, for example YouTube
Language priorityComma-separated language codes, for example zh-Hant,zh-Hans,en. Manual captions are preferred over auto-generated ones
Filename templateSupports {{title}}, {{channel}}, {{id}}, {{lang}}
TagsComma-separated tags written to the frontmatter
Include frontmatterToggle YAML metadata
Include timestampsPrefix each paragraph with [mm:ss]
Overwrite auto-generated notesSee below

Output example

---
title: "But what is a neural network? | Deep learning chapter 1"
source: "YouTube"
url: "https://www.youtube.com/watch?v=aircAruvnKk"
video_id: "aircAruvnKk"
channel: "3Blue1Brown"
duration: "18:40"
language: "zh"
caption_track: "Chinese"
caption_type: "manual"
captured: "2026-10-19 18:10:36"
tags:
  - youtube
  - captions
---

# But what is a neural network? | Deep learning chapter 1

> Channel: 3Blue1Brown · [Original video](https://www.youtube.com/watch?v=aircAruvnKk)

## Transcript

...

Overwrite protection

Notes created by this plugin carry source: "YouTube" in the frontmatter. When a note with the same name already exists:

  • If it has that marker, it is overwritten (so re-fetching a video updates the note).
  • Otherwise it is treated as handwritten, and the new transcript is saved as <name>-<timestamp>.md instead. Your own notes are never overwritten.

Limitations

  • The video must have a caption track. Videos without captions cannot be processed.
  • YouTube applies rate limiting. Fetching several videos in quick succession may fail temporarily — wait a minute and retry.
  • This plugin depends on YouTube's current InnerTube client validation. If YouTube changes it, the plugin may need an update.
  • Captions are fetched over the network from YouTube; nothing is sent anywhere else.

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.