Use iframe postMessage for YouTube timestamp capture and prepare 1.3.4 for Obsidian review. |
||
|---|---|---|
| .github/workflows | ||
| src | ||
| .gitignore | ||
| CHANGELOG.md | ||
| esbuild.config.js | ||
| LICENSE | ||
| main.js | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| RELEASE_COPY.md | ||
| styles.css | ||
| tsconfig.json | ||
| TUTORIAL.md | ||
Smart Media Notes
Smart Media Notes is an Obsidian plugin for serious video and audio note-taking.
It turns Obsidian into a media study workspace where you can:
- open video and audio beside your notes
- bind notes to a media source with
timestamp-url - insert clickable
timestampblocks while you study - import subtitles and jump by subtitle line
- manage saved media, subtitles, RSS feeds, and media folders in one library
- keep working on mobile instead of breaking your flow
This project builds on ObsidianTimestampNotes by @juliang22, then expands it into a full media-notes workflow for language learning, research, lectures, interviews, podcasts, and long-form video study.
Why This Beta Matters
This beta focuses on one big goal:
make video note-taking feel native inside Obsidian, including on mobile
The newest workflow highlights:
- Better support for
.m3u8/ HLS playback - Better support for Bilibili links
- Subtitle overlay plus subtitle browser
- Smart Media Library for saved media and subtitle management
- Mobile timestamp rail for quick timestamp jumping while the player is open
- Optional
yt-dlpdirect URL resolution for supported sites
That last point is especially important.
For some sites, especially YouTube and other page-based video sources, Smart Media Notes can use yt-dlp on desktop to resolve a direct playable stream URL, save that mapping into your vault, and let mobile Obsidian reuse it later.
That means your workflow can become:
- Resolve the direct URL once on desktop
- Sync the vault
- Open the same video note on mobile
- Watch inside Obsidian and keep taking notes without jumping out to another app
Core Workflow
1. Bind a note to a media source
Use a timestamp-url block:
```timestamp-url
Amy-Mashed potato and rice noodles | https://www.youtube.com/watch?v=example
```
This creates a reopenable media button in reading mode and gives Smart Media Notes a source to associate with timestamps and subtitles.
2. Watch and take notes
While the media is open, run:
Insert timestamp based on videos current play time
This inserts:
```timestamp
00:42
```
You can also add a subhead:
```timestamp
#Key idea
00:42
```
3. Import subtitles
Run:
Import subtitle file for current media
Then you can:
- show the current subtitle as an overlay
- browse all subtitle lines below the player
- click a subtitle line to jump playback
- insert the current subtitle into your note
4. Reopen later from the library
Open:
Open media library sidebar
The library keeps your saved media entries, timestamps, subtitles, RSS subscriptions, vault media folders, and desktop media folders together in one place.
What It Can Do
- Open media from web URLs, vault files, and desktop file paths
- Play many direct video and audio URLs inside Obsidian
- Play HLS streams from
.m3u8when the stream allows browser/WebView playback - Open Bilibili video links and try direct playback when available
- Resolve supported page links to direct streams with
yt-dlp - Sync resolved direct URL mappings through the vault
- Insert clickable
timestampandtimestamp-urlcode blocks - Convert selected time text into timestamp blocks
- Show subtitle overlay and subtitle browser
- Manage subtitles inside the Smart Media Library
- Record voice notes into the vault
- Browse podcast RSS feeds
- Browse vault media folders
- Browse local desktop media folders
- Use dictation mode for language learning
- Use mobile timestamp rail while the player is open
Install
Release Install
- Download
manifest.json,main.js, andstyles.cssfrom the latest release. - Create this folder in your vault if it does not exist:
.obsidian/plugins/smart-media-notes
- Copy the three files into that folder.
- Restart Obsidian or reload community plugins.
- Enable
Smart Media NotesinSettings -> Community plugins.
Manual Build
git clone https://github.com/NchuYJ/obsidian-smart-media-notes.git
cd obsidian-smart-media-notes
npm install
npm run build
Then copy:
main.jsmanifest.jsonstyles.css
into:
{your-vault}/.obsidian/plugins/smart-media-notes/
yt-dlp Direct Playback
yt-dlp is optional, but it unlocks one of the most useful beta workflows.
What it does
For supported HTTP video page links, Smart Media Notes can ask yt-dlp to resolve a direct playable URL and save it into the vault.
This helps when:
- the original link is a page URL, not a raw media URL
- mobile cannot use the normal embedded player
- you want the same note to work across desktop and mobile
What to do
- Install
yt-dlpon your desktop system. - In plugin settings, enable:
Use yt-dlp direct URL map - If needed, set:
yt-dlp executable path - Select a supported HTTP link in a note, then run:
Resolve direct URL with yt-dlp
You can also refresh direct URLs from the Smart Media Library.
How sync works
Resolved direct URLs are saved into:
Subtitles/smart-media-notes-direct-url-map.json
This file lives in your vault, so if your vault syncs across devices, the resolved mapping can sync too.
Important limitations
- Some sites return direct links that expire and need refresh
- Some sites require headers, cookies, or blocked cross-origin requests
- Some sites only expose streams that Obsidian cannot play directly
- YouTube direct playback is best-effort and depends on what
yt-dlpcan resolve into a browser-playable stream
If direct playback fails, you can switch a saved item back to Original mode in the Smart Media Library.
Mobile Workflow
This beta puts much more emphasis on mobile than older versions.
Mobile video notes
With a synced direct URL map, supported links can open in Obsidian's own player on mobile instead of always jumping to another app.
Mobile timestamp rail
When the player squeezes the note area, Smart Media Notes can replace that narrow note pane with a timestamp rail so you can:
- jump through timestamps quickly
- preview nearby note content
- optionally enter edit mode through a command
Why this matters
It makes mobile note review feel closer to desktop:
- player stays visible
- timestamps stay reachable
- notes stay connected to the media instead of being hidden behind app switches
Subtitles and Sync
Imported subtitle files are stored in your vault subtitle folder, Subtitles by default.
Smart Media Notes also writes a sync index:
Subtitles/smart-media-notes-subtitles.json
That lets other devices reconnect media links to subtitle files even when plugin data.json is not synced.
Useful maintenance commands:
Reconcile synced subtitle indexReconcile saved media collection
Use them after deleting or renaming:
- subtitle files
- media links
- video notes
- saved media entries
Main Features
Smart Media Player
- supports video and audio
- supports vault files and many direct media URLs
- supports page-link workflows through
yt-dlp - supports fallback behavior when embedding is blocked
Subtitle Tools
- import
.srtand.vtt - show current subtitle as overlay
- browse subtitle rows below the player
- click subtitle lines to jump
- insert subtitle text into notes
- manage subtitle mappings from the library
Smart Media Library
The library can manage:
- saved media entries
- timestamps linked to those entries
- subtitle mappings and unused subtitle files
- podcast RSS subscriptions
- vault media folders
- local desktop media folders
Voice Notes
You can record audio directly into your vault and insert an inline player:
```voice-bar
Attachments/voice-notes/voice-note-123456.webm
```
Dictation Mode
Dictation mode is useful for language learning:
- loop the current subtitle segment
- move to previous or next segment
- hide subtitle text while keeping timing anchors
- reveal and compare typed text against the original subtitle
Commands
Main commands include:
Open media player (copy url or path and use hotkey)Insert timestamp based on videos current play timeConvert selected time text to timestamp blockOpen media library sidebarImport subtitle file for current mediaInsert current subtitle with timestampResolve direct URL with yt-dlpReconcile saved media collectionReconcile synced subtitle indexToggle mobile timestamp railToggle mobile timestamp rail edit modeToggle dictation modeReveal dictation answer (compare with selected text)Start voice recordingStop voice recording and save note
Settings
Important settings:
Use yt-dlp direct URL mapyt-dlp executable pathSubtitle storage folderSubtitle overlaySubtitle browserSubtitle overlay font sizeMobile timestamp railMobile timestamp note previewTimestamp display formatAuto insert library noteInclude subtitle with timestampTimestamp + subtitle templateVideo formatsAudio formatsMedia folders
Best Use Cases
Smart Media Notes is especially good for:
- language learning from subtitled video
- lecture and course notes
- interview review
- documentary study
- podcast study notes
- research workflows that need timestamped evidence
Tutorial
For a guided walkthrough, see TUTORIAL.md.
Development
npm install
npm run dev
npm run build
Project structure:
src/
main.ts
settings.ts
utils.ts
media/
bilibiliResolver.ts
view/
VideoContainer.tsx
VideoView.tsx
Acknowledgments
Derived from ObsidianTimestampNotes by juliang22.
License
MIT