DSH Plugins Marketplace

DSH Plugins

Plugins

/

Tools & Capabilities

/

dsh-youtube-study-notes

d

dsh-youtube-study-notes

Identified

Turns a YouTube link into study notes: pulls the captions the video already publishes, optionally reads on-screen content with a vision model, then asks for your own notes and merges everything into o

dsh-youtube-study-notes

A DeepSeek Harness (dsh) plugin that turns a YouTube link into study notes — and then gets your notes involved.

Give it a link. It pulls the video's own captions, samples the frames so it can read what was on screen, stops and asks what you took from it, and merges all three into one document.

The middle step is the point. Every other video-to-notes tool produces the same summary for everyone. This one writes the notes you'd have written, if you'd been taking notes.

What it does

StepWhat happens
1Captions — yt-dlp fetches the caption track YouTube already publishes. Human-written preferred, auto-generated as fallback. No ASR, no third-party transcript sites.
2Outline — the timestamped transcript is read in full and outlined by chapter.
3Visual pass (optional) — ffmpeg scene-change detection samples one frame per shot; a vision model reads the on-screen text. Catches slides, code, formulas and diagrams the narration never says out loud.
4Ask — the agent stops and asks what you noticed, in your words. Type it or dictate it.
5Merge — transcript + on-screen evidence + your observations, into one markdown file.
6Save — notes.md, written beside the transcript so the evidence stays with it.
7Clean up — the frame stills and any video file are removed; the transcript stays.

What it leaves on disk

The video is never kept: step 3 downloads it into a temporary directory that is deleted when the script exits (--keep-video is the only way it survives). The frame JPEGs are removed by step 7 once notes.md exists — they are derived from someone else's video and are typically tens of megabytes, against a few kilobytes of transcript.

Kept, because it is the evidence behind every spoken claim and costs almost nothing:

transcript.md  transcript.txt  meta.json  notes.md

cleanup.py refuses to act on a directory that does not carry one of those markers, so it cannot be pointed at an unrelated folder. Pass --keep-frames to review the stills yourself.

Install

dsh plugin --profile <your-profile> add dsh-youtube-study-notes

Restart the profile afterwards — bundle changes apply at boot.

Then trigger it either way:

/youtube-study-notes https://youtu.be/VIDEO_ID

or just ask in plain language ("get me notes from this video: …"). A link plus a request for notes, a summary, or study material is enough.

Desktop clients: the desktop app manages its own profile. Use its Plugins → Add plugin flow rather than the CLI, and enable the bundle when the install finishes.

Requirements

The plugin ships no runtime code — its substance is the Skill, which drives local tools. dsh does not install these for you:

ToolRoleInstall
python3runs the bundled scripts (standard library only)brew install python3
ffmpeg / ffprobeaudio/video probing, scene detection, frame extractionbrew install ffmpeg
yt-dlpcaption listing and downloadbrew install yt-dlp

The Skill detects missing tools, names them, and waits for your confirmation before installing anything.

Enabling the visual pass

Step 3 needs a model that accepts images, and many model entries do not — even ones whose name says "vision". A model is only offered images if its configuration declares input: [text, image]; entries otherwise default to ["text"], and the harness refuses the image before attaching it with:

model "<provider>/<model>" does not declare image input

The Skill handles this: it tries read_image on a single frame first. If the session model can see images, it reads the frames directly. If not, it delegates through the workflow tool's per-agent provider / model override, and asks you once which image-capable model to use.

To make a model explicitly image-capable, declare it in your profile's cordis.patch.yml (the file your profile tells you to edit — not cordis.yml):

- id: llm-pi-ai
  name: "@deepseek-ai/dsh-llm-pi-ai"
  config:
    providers:
      your-provider:
        # ...existing provider config...
        models:
          - id: "your-vision-model"
            name: "Your Vision Model"
            contextWindow: 200000
            input:
              - text
              - image

A profile with live reload picks this up without a restart.

Only declare this if the endpoint actually serves images. Over-claiming admits an image the provider then rejects mid-turn, after the message is already durable. The declaration is not verified for you.

If you skip all of this, the plugin still works — it just produces transcript-only notes, and says so rather than pretending it saw the screen.

Limitations

  • Caption-less videos stop the run. If a video publishes no caption track at all (not even auto-generated), step 1 reports which video failed and stops. Nothing is invented to fill the gap. Pair this with a local speech-to-text plugin if you need those covered.
  • Auto-generated captions are rough — no punctuation, misheard proper nouns. The skill always reports which kind it got.
  • Vision reads can be wrong at the character level. A period can read as a hyphen, 1 as l. Fine for prose, worth double-checking in code and formulas. The skill is instructed to flag anything load-bearing that looks ambiguous.
  • Frame sampling sees shots, not motion. A diagram built up over one continuous shot yields a single frame.
  • Personal study use. Captions, frames and notes are derived from someone else's work. Don't republish them.

How it's built

package.json          declares dsh.bundle → cordis.patch.yml
cordis.patch.yml      inserts one @deepseek-ai/dsh-skill-filesystem row
lib/index.js          resolveSkillRoot() — resolves skills/ from the profile's own module identity
skills/youtube-study-notes/
  SKILL.md            the workflow
  scripts/            yt_transcript.py, video_frames.py, cleanup.py
  references/         notes template and merge rules

The bundle mounts its skills/ directory as an isolated provider (includeDefaultRoots: false), so installing it contributes exactly one skill and cannot shadow or reorder the ones you already have.

License

MIT — see LICENSE.

Comments

Loading…

Similar plugins

dsh-video-to-notes

by YLL-KB

Opt-in DeepSeek Harness skill bundle that turns course, lecture, tutorial, documentary, meeting, and talk videos into structured study notes.

Tools & CapabilitiesManifest valid

★ 0

MIT

Python

Sep 21, 2026

dsh plugin --profile web add dsh-video-to-notes

by wyzh0117

Sidebar notebook with titled notes and inline images (videos rejected); click a title to copy its body to the clipboard, reference a note in the composer with @, and optionally open the notebook for e

UI & ExperienceDevelopment & InfrastructureManifest valid

★ 0

MIT

TypeScript

Sep 16, 2026

dsh plugin --profile web add dsh-notebook

DSH 插件:发 B 站(或任意 yt-dlp 支持的站点)视频链接时自动准备可总结素材(转写 + 关键帧接触印相纸),并按方法论产出总结

Tools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

dsh plugin --profile web add dsh-bilibili-video-summary

by kdcadmin

Douyin assistant plugin: picks a daily round of videos, reads comments, writes a dated report, can like and comment with an @ mention (both off by default), and publishes clips rendered by your own Co

Tools & CapabilitiesManifest valid

★ 11

MIT

JavaScript

Oct 29, 2026

dsh plugin --profile web add dsh-douyin-life

by 7gzgn

Take a local video all the way to a Douyin creator post: open the upload page, trigger the picker, hand the file over with verification, fill the title, set visibility - then stop before publishing un

Tools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

Oct 18, 2026

dsh plugin --profile web add dsh-douyin-publish

by lemonhall

DSH 右侧栏媒体台:抖音/YouTube 链接进来,本机 yt-dlp 下载 + ffmpeg 转码 + 官方 speechToText(SenseVoice)本地转写,字幕进面板,一键让 Agent 总结。

Development & InfrastructureManifest valid

★ 1

JavaScript

Oct 8, 2026

dsh plugin --profile web add dsh-media-dock