Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Youtnote

khaldevmediakhaldevmedia2k downloads

Take timestamped Markdown notes across multiple embedded YouTube videos, all inside a single note.

Add to Obsidian
Youtnote screenshot
Youtnote screenshot
Youtnote screenshot
Youtnote screenshot
Youtnote screenshot
Youtnote screenshot
Youtnote screenshot
  • Overview
  • Scorecard
  • Updates15

Youtnote Logo

Youtnote


AI, Obsidian, and YouTube

Take timestamped Markdown notes with live preview editing across multiple embedded YouTube videos, all inside a single Obsidian note. Download video transcripts and use AI to generate timestamped notes. Then, if you want, export everything back to clean Markdown. Youtnote keeps the video player and your research notes in lockstep so you never lose the context of what you were watching. Works on desktop and mobile.

Screenshots

Add videos by URL and add timestamped notes to them.

Add videos and notes


Resizable panes, sortable videos list, and more..

UI overview


Fetch transcript and generate notes by AI.

UI overview

Known issue: Error 153 on iOS and iPadOS

[!IMPORTANT] Error 153 on iOS and iPadOS

The Youtnote plugin has a known issue on iOS and iPadOS that causes the YouTube player to fail to load and display Error 153.

Please don't open a GitHub issue for this.

The issue is not a bug in the plugin's code. The root cause is missing or invalid HTTP Referer headers in the YouTube API request that the plugin sends, due to a long-standing bug in WKWebView (the web renderer used by the Obsidian app on iOS and iPadOS).

Other plugins that do not have this issue on iOS and iPadOS most likely rely on Obsidian's embedding workaround, which does not provide access via the YouTube API to video controls (play, pause, seek) or the current playback time, features Youtnote requires.

Read more

For more details on this issue, please read here.

Features

  • Multi-video timeline: Track any number of YouTube videos inside the same file, reorder them with drag & drop, and jump between them instantly.
  • Timestamped note cards: Click any note to seek the YouTube iframe to that second (with optional autoplay) or edit timestamps inline with validation.
  • Native Obsidian Live Preview editor: The note editor embeds Obsidian's own CM6 Live Preview, so hotkeys, themes, and plugins work exactly as you expect.
  • Sticky player on phones: Keep the video visible while scrolling through long note stacks thanks to the "pin on phone" option.
  • Duplicate timestamp merging: Clean up messy sessions by merging duplicate timestamps into a single consolidated note.
  • One-click exports: Export the active video or every video in the file to Markdown, optionally opening the generated file automatically.
  • Metadata fetch: Paste any YouTube URL (Standard, Live, Shorts).
  • Note stats: Optional per-video word & character counts.
  • General notes: Add one timestamp-less note per video for summaries, overviews, or context that doesn't belong to a specific moment. General notes sit at the top of the note list and are visually distinct.
  • Search notes: Filter notes for the active video by text content or timestamp. The search bar lives in the notes pane header and clears automatically when switching videos or adding new notes.
  • URI scheme: Let external tools (scripts, browser bookmarks, automation) add videos and notes to youtnotes in your vault via obsidian://youtnote URIs. Disabled by default. See the URI Scheme Guide.
  • Video transcripts: Fetch a video's YouTube captions into the youtnote (pick the caption track when several exist), browse them alongside the player, click a timestamp to seek, copy captions, edit caption text, and create notes directly from any caption. Each caption is stored on a plain, greppable line containing an HTML-comment timestamp and duration marker (<!-- t=M:SS.mmm d=N -->) followed by the caption text.
  • AI-generated notes: Optionally generate timestamped notes from a video's transcript using OpenAI, Anthropic, Google (Gemini), or a custom OpenAI-compatible endpoint. Configured API keys are stored in Obsidian Keychain (SecretStorage), not plugin data so they won't sync with your vault for security.

Installation

  1. Community Plugins (recommended once published)
    • In Obsidian, go to Settings → Community Plugins → Browse → search for "Youtnote" → Install → Enable.
    • Or from the Obsidian community plugin platform.
  2. BRAT (to test pre-releases from the develop branch)
    • Install the BRAT plugin.
    • Add this repo URL to BRAT and pull the build you want to test.
  3. Manual install (also helpfull to test pre-releases from the develop branch without using BRAT)
    • Download the release from the GitHub Releases page.
    • Copy main.js, manifest.json, and styles.css for the Assets lsit into your vault's .obsidian/plugins/youtnote/ folder.
    • Reload Obsidian (Ctrl/Cmd + R) and enable the plugin.

Usage

  1. Create a Youtnote file via the ribbon icon or the New youtnote command. A file with youtnote: true frontmatter opens in the custom view.
  2. Add videos with the YouTube URL field. Duplicates are prevented automatically.
  3. Select a video to load it into the embedded iframe. Switching videos keeps the same player instance for smooth transitions.
  4. Add notes using the + (or keyboard shortcut): Youtnote auto-grabs the current playback time.
  5. Edit in Live Preview by double-clicking a note. Use the configured newline shortcut (Enter or Shift+Enter) to save.
  6. Jump around by clicking any timestamp: the player seeks (and optionally autoplays) to that moment.
  7. Add a general note using the note icon in the notes header, perfect for video summaries or context without a timestamp. One per video.
  8. Search notes using the search bar in the notes header to filter by text or timestamp (e.g. 1:23). Only filters the active video's notes.
  9. Fetch the transcript with the captions icon in the notes header. In the transcript view, click a timestamp to seek, hover a caption to copy it, edit its text, or turn it into a note. Use the search bar to filter captions and the re-fetch icon to reload them from YouTube. The caption at the current playback position is highlighted, and optional auto-scroll keeps it centered as the video plays — if you scroll away manually, use the sync button to jump back to the current caption.
  10. Generate notes with AI using the bot button in the notes or transcript header (requires AI to be enabled in settings). All dialog fields are optional: add custom instructions, limit the maximum number of notes, and choose whether to add to or replace existing notes. While generating, a status row with a Cancel button lets you abort the request.
  11. Export single-video or full-note markdown via the header buttons.

Storage format

Youtnote stores videos, notes, and transcripts in plain Markdown files using versioned HTML-comment markers (current format: v2). See the storage format reference for the complete layout, examples, and compatibility/conversion details.

Settings Overview

All options live under Settings → Youtnote; the autoplay toggles below sit in the Behavior section:

  • Pin video on phone: Keep the iframe sticky while scrolling on mobile.
  • Autoplay on note select: Choose whether seeking to a note timestamp should immediately play.
  • Autoplay on caption select: Choose whether clicking a transcript caption timestamp should immediately play. This is independent of the note setting; both are off by default on new installs, and an existing saved note autoplay preference is used to initialize the caption toggle once.
  • Single expand mode: Only one note stays expanded at a time.
  • Persist expanded state: Remember which notes were expanded when coming back to the video.
  • New line trigger: Decide whether Enter or Shift+Enter inserts a newline vs. saves.
  • Open exported file: Automatically open the generated Markdown file in a new tab.
  • Show note statistics: Display total word/character counts in the note list header.
  • Auto-scroll transcript during playback: Keep the active caption centered as playback advances; the sync button remains available when disabled.
  • Switch to notes after creating a note from transcript: Return to the note list and select the newly created note.
  • Enable AI-generated notes: Turn on AI features and pick a provider (OpenAI, Anthropic, Google Gemini, or a custom OpenAI-compatible endpoint), then choose its Keychain secret, model, and request timeout. Disabled by default.
  • Enable uri scheme: Let external tools add videos and notes via obsidian://youtnote URIs. Disabled by default. See the URI Scheme Guide.

Exporting Notes

  • Single video export: each video gets its own Markdown file (with timestamps preserved) using the Export button beside the note counter.
  • Full file export: consolidates every video + note into one Markdown file using the header action or view action.
  • General notes are exported with a **General note:** heading, placed at the top of their video's section.
  • Exported Markdown uses real, clickable YouTube timestamp links such as [1:23](https://youtu.be/VIDEO_ID?t=83) — the structural comment markers above only exist inside youtnote files.

AI-generated notes

Youtnote can generate timestamped notes from a video's transcript with an AI provider. Enable it under Settings → Plugin Options → Youtnote → AI:

  • Provider: OpenAI, Anthropic, Google (Gemini), or Custom for any OpenAI-compatible endpoint (for example a local server such as Ollama or LM Studio).
  • API key secret: Configured keys are stored in Obsidian Keychain via SecretStorage, not in data.json. Required for hosted providers; optional for Custom, where local servers often need no key.
  • Base URL (Custom only): the OpenAI-compatible /v1 base URL, e.g. http://localhost:11434/v1. Self-signed TLS certificates are not supported. Plain http:// connections are unencrypted and may not work on iOS — a warning is shown in settings.
  • Model: choose a text-generation model supported by the selected provider, or type a chat model ID directly for Custom. Refresh models / Test connection loads the model list without replacing an existing selection; a warning appears if the selected model is absent from the refreshed list.
  • Request timeout: seconds before a request times out; the custom timeout defaults higher because local models can be slower.

Youtnote checks that a provider, model, and required API key are configured before starting generation or asking to fetch a missing transcript. Custom providers also require a valid base URL, but their API key remains optional.

Generation uses the selected video's transcript text and waits for a complete, non-streamed response. Youtnote requests structured JSON and validates timestamps, note bodies, maximum note counts, and any requested general note before saving. Invalid output gets one correction request; if it still fails validation, Youtnote attempts Markdown compatibility mode. If the provider explicitly rejects structured output, Youtnote goes directly to compatibility mode. A notice identifies compatibility-mode results so you can review their formatting.

Incomplete, refused, or blocked responses are not saved or automatically retried. If generation reaches an output limit, try a smaller Maximum notes value or ask for shorter notes through Custom instructions. Authentication, billing, rate-limit, and endpoint errors are reported rather than treated as formatting failures.

Successful results follow your chosen append/replace options for timestamped notes and the general note. While generation is in progress, a Cancel button lets you discard the result even if the response arrives later. Failed or cancelled generation does not replace existing notes.

AI Agent Skill

Youtnote ships with a ready-to-use agent skill that lets an AI coding assistant (Claude Code, Cursor, OpenCode, Codex, Devin, Copilot, etc.) convert a timestamped YouTube transcript into a valid Youtnote file for you. Hand the agent a fetched transcript and the video URL, and it writes a .youtnote.md file with correct frontmatter, timestamped notes, and an optional general-note summary, ready to open in Obsidian.

The skill does not fetch transcripts itself; pair it with any transcript-fetching tool or skill you already use.

Install: copy the entire create-youtnote folder (the one containing SKILL.md) into your agent's skills directory, e.g. .claude/skills/, .cursor/skills/, .opencode/skills/, .devin/skills/, or .agents/skills/. The result should look like <skills-dir>/create-youtnote/SKILL.md.

Support My Work

Youtnote is a passion project maintained in spare hours. If it helps your research or learning workflow, consider sponsoring future development:

  • ❤️ Ko-fi
  • 💼 GitHub Sponsors

Every donation goes toward maintenance time, new features, and better documentation. Thank you!


Happy annotating! Open an issue or start a discussion if you have feature requests, questions, or feedback.

HealthExcellent
ReviewPassed
About
Take timestamped Markdown notes with live preview editing across multiple embedded YouTube videos, all inside a single Obsidian note. Then, if you want, export everything back to clean Markdown. Youtnote keeps the video player and your research notes in lockstep so you never lose the context of what you were watching. Works on desktop and mobile.
VideoAIAnnotation
Details
Current version
2.0.0
Last updated
3 weeks ago
Created
8 months ago
Updates
15 releases
Downloads
2k
Compatible with
Obsidian 1.11.4+
Platforms
Desktop, Mobile
License
GPL-3.0
Report bugRequest featureReport plugin
Sponsor
Ko-fi
GitHub Sponsors
Author
khaldevmediakhaldevmedia
khaldevmedia.com
GitHubkhaldevmedia
  1. Community
  2. Plugins
  3. Video
  4. Youtnote

Related plugins

HiNote

Add comments to highlighted notes, use AI for thinking, and flashcards for memory.

Admonition

Admonition block-styled content.

Claudian

Embeds Claude Code/Codex and other local Agents as AI collaborators in your vault.

Smart Connections

Find related notes and excerpts while writing. Your AI link building copilot displays relevant content in graph + list view. A local embedding model powers semantic search. Zero setup. No API key.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.

ChatGPT MD

A seamless integration of ChatGPT, OpenRouter.ai and local LLMs via Ollama into your notes.

Copilot

Run AI agents such as Claude Code, Codex, and OpenCode inside your vault. Turn your second brain into a smart assistant that gets knowledge work done.

Karpathy LLM Wiki

Karpathy's LLM Wiki implementation plugin for Obsidian - turns notes and PDFs into a linked, LLM-powered knowledge base with entity pages, concept pages, graph-powered Q&A, and local-first privacy.

Agent Client

Chat with Claude Code, Codex, Gemini CLI, and more via the Agent Client Protocol — right from your vault.

YTranscript

Easily fetch transcription for any YouTube video.