No description
Find a file
2026-07-05 18:34:51 +09:00
.github/workflows chore: v0.1.1 — inline node builtins (drop builtin-modules dep) + release artifact attestation 2026-06-05 12:13:38 +00:00
src chore: v0.2.2 — resolve all review warnings (activeDocument, assertion, loadData typing, control-char regex, unused catch var) + RELEASE_CHECKLIST 2026-07-05 18:34:51 +09:00
test feat: frame capture (v0.2.0) — user-driven capture modal + upload + vault embed 2026-07-04 10:57:24 +09:00
.editorconfig feat: StackTube Obsidian plugin v0.1.0 (Stage 1 MVP) 2026-06-03 12:11:49 +00:00
.gitignore feat: StackTube Obsidian plugin v0.1.0 (Stage 1 MVP) 2026-06-03 12:11:49 +00:00
DEPLOY_AND_TEST.md feat: v0.1.0 polish — startup sync, English-first UI, ribbon+status bar, progress count, initial sync range 2026-06-04 11:23:58 +00:00
esbuild.config.mjs chore: v0.1.1 — inline node builtins (drop builtin-modules dep) + release artifact attestation 2026-06-05 12:13:38 +00:00
LICENSE feat: StackTube Obsidian plugin v0.1.0 (Stage 1 MVP) 2026-06-03 12:11:49 +00:00
manifest.json chore: v0.2.2 — resolve all review warnings (activeDocument, assertion, loadData typing, control-char regex, unused catch var) + RELEASE_CHECKLIST 2026-07-05 18:34:51 +09:00
package-lock.json chore: v0.1.1 — inline node builtins (drop builtin-modules dep) + release artifact attestation 2026-06-05 12:13:38 +00:00
package.json chore: v0.2.2 — resolve all review warnings (activeDocument, assertion, loadData typing, control-char regex, unused catch var) + RELEASE_CHECKLIST 2026-07-05 18:34:51 +09:00
README.md docs: README 캡처 섹션 vault-only 정정 2026-07-05 14:09:18 +09:00
RELEASE_CHECKLIST.md chore: v0.2.2 — resolve all review warnings (activeDocument, assertion, loadData typing, control-char regex, unused catch var) + RELEASE_CHECKLIST 2026-07-05 18:34:51 +09:00
styles.css fix: v0.2.1 — move all static inline styles to styles.css (no-static-styles-assignment) 2026-07-05 18:10:53 +09:00
tsconfig.json feat: StackTube Obsidian plugin v0.1.0 (Stage 1 MVP) 2026-06-03 12:11:49 +00:00
version-bump.mjs feat: StackTube Obsidian plugin v0.1.0 (Stage 1 MVP) 2026-06-03 12:11:49 +00:00
versions.json chore: v0.2.2 — resolve all review warnings (activeDocument, assertion, loadData typing, control-char regex, unused catch var) + RELEASE_CHECKLIST 2026-07-05 18:34:51 +09:00

StackTube for Obsidian

Sync your YouTube knowledge notes straight into your Obsidian vault.

StackTube monitors the YouTube channels you care about, runs each new video through an AI pipeline (Gemini + Claude), and turns it into a structured, searchable note. This plugin pulls those finished notes into your vault as plain Markdown — no lockin, you own the files.

Videos stream by. Knowledge should stack up.


What it does

  • Pulls AIstructured notes from the StackTube API into your vault on a schedule (or on demand).
  • Writes clean Markdown with YAML frontmatter (video_id, channel, title, video_url, published_at, language, tags) so Dataview, graph view, and search just work.
  • No duplicates — each video is written once, identified by video_id.
  • Resumes where it left off after a restart.
  • Ribbon icon & status bar — oneclick sync, ataglance lastsync time and progress count.
  • Sync on startup (optional) and an initial sync range (all / last 90 / last 30 days) for the very first pull.
  • Your notes are ordinary .md files. Nothing is locked to this plugin.

This plugin is a thin client: all analysis happens on the StackTube server. The plugin only fetches and writes files.


Capture a frame (new in v0.2.0)

Notes with a 📷 "frame slot" (a deep-linked callout at a specific timestamp) get a Capture button in reading view. Clicking it opens a small player:

  1. Watch the moment — skip the ad, seek, or pause however you like.
  2. Press Capture this frame when the shot is right.
  3. Confirm the preview, then Save.

The image is saved to <folder>/attachments/<video_id>-<seconds>.jpg and embedded in the note right after the slot. Recapturing the same slot won't duplicate the embed.

Captured frames are saved to your vault only — never uploaded to our servers. Server sync of captured frames is planned for a later release (opt-in).

You can hide the Capture buttons from Settings → StackTube → Frame capture.


Requirements

  • A StackTube account with at least one monitored channel and some analyzed videos.
  • A StackTube API key (Settings → Obsidian → Create new key). The key is shown once — copy it somewhere safe.

Install

  1. Obsidian → Settings → Community plugins → Browse.
  2. Search “StackTube”, install, and enable.

Beta install via BRAT

  1. Install the BRAT community plugin.
  2. BRAT → Add beta pluginbije0327/obsidian-stacktube.
  3. Enable StackTube in Community plugins.

Manual install

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Copy them into <your vault>/.obsidian/plugins/stacktube/.
  3. Reload Obsidian and enable StackTube in Community plugins.

Setup

  1. Open Settings → StackTube.
  2. Paste your API key.
  3. (Optional) Adjust Server URL (default https://stacktube.io), Notes folder (default StackTube), and Sync interval (minutes; 0 = manual only).
  4. Click 연결 테스트 / Test connection — you should see a success notice with your plan.
  5. Run StackTube: Sync new notes from the command palette, or wait for the next automatic sync.

Notes land in <folder>/<channel>/<YYYY-MM-DD>-<title>.md.


Privacy & data ownership

The plugin talks only to the server URL you configure (StackTube by default), authenticated with your API key — to pull your analyzed notes. It writes plain Markdown files into your vault — readable, portable, and yours. Your API key is stored locally in the plugin's data.json and is never logged.

Captured frames are saved to your vault only — never uploaded to our servers.


Development

npm install
npm run dev      # watch build
npm run build    # type-check + production build → main.js
node --import tsx test/run.ts   # (or bundle test/run.ts) E2E against a mock server

See test/run.ts for the endtoend harness (pagination, dedup, watermark resume, frontmatter, filename safety).


License

MIT © unstackd