跳到正文
cccskills
免费在 GitHub 公开

youtube

Analyze a YouTube video and create a vault note from its transcript. Use this skill whenever a YouTube URL is pasted — even with casual commentary like "check this out" or "interesting talk." Also triggers on "youtube", "take notes from this video", "summarize this video", or any YouTube link (youtube.com, youtu.be) regardless of surrounding context.

中文简介正在准备中。当前显示原文说明。

集成工具YouTube
查看安装方法

包含的文件(3)

  • SKILL.md6.2 KB
  • agents/video-noter.md5.5 KB
  • scripts/fetch_youtube.py8.0 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

<Purpose> Extract transcript and metadata from a YouTube video, then synthesize it into a vault-formatted post note. Uses youtube-transcript-api for transcript and yt-dlp for rich metadata (with oEmbed fallback). </Purpose>

<Use_When>

  • User shares a YouTube URL and wants notes taken
  • User says "take notes from this video"
  • User pastes a YouTube link with /youtube
  • User wants to add a video's insights to the vault </Use_When>

<Do_Not_Use_When>

  • User wants to watch or download the video itself
  • User has a local video file (not YouTube)
  • Video has no transcript/captions at all
  • User wants to process an existing vault note (use /process) </Do_Not_Use_When>

<Execution_Policy>

  • Extract first, synthesize second, integrate third
  • Always check vault for existing notes on the same video before creating
  • Create note as type: post with processing_status: inbox
  • The note is a starting point — user can /process it later for deeper engagement </Execution_Policy>
<Steps>

Stage 1: EXTRACT

Parse the YouTube URL/ID from $ARGUMENTS. If no URL provided, ask the user.

Run the extraction script. Redirect stdout to a temp file (stderr has progress messages that break piping):

SKILL_DIR="${CLAUDE_SKILL_DIR}"
YT_OUTPUT="$SKILL_DIR/_output.json"
uv run "$SKILL_DIR/scripts/fetch_youtube.py" "VIDEO_URL" --lang en > "$YT_OUTPUT"

Then read $YT_OUTPUT with the Read tool to get the JSON. Clean up the file after use.

The JSON contains:

  • title, channel, duration, upload_date, description, chapters
  • transcript.full_text, transcript.segments, transcript.language
  • transcript.error (null if success)

If transcript.error is not null: inform the user and stop. No note without content.

If transcript is very long (>50,000 chars): warn the user this is a long video. Chunk the transcript for the agent if needed — send first 40,000 chars with a note about total length. For very long videos (>2hrs), consider suggesting the user watch key sections instead.

Stage 2: SYNTHESIZE

Read the agent definition:

Read("${CLAUDE_SKILL_DIR}/agents/video-noter.md")

Search the vault for existing notes related to the video's topics using the MCP tool:

search_notes(query="KEYWORD", limit=20)

Or fall back to Grep if MCP is unavailable:

Grep(pattern="KEYWORD", path="notes/", glob="*.md", head_limit=20)

Launch the video-noter agent:

Agent(
  subagent_type="general-purpose",
  model="sonnet",
  run_in_background=false,
  prompt="You are Video Noter. Follow these instructions exactly:

  [INSERT FULL CONTENT OF agents/video-noter.md HERE]

  VIDEO METADATA:
  - Title: [title]
  - Channel: [channel]
  - Duration: [duration]
  - Upload date: [upload_date]
  - Chapters: [chapters if any]
  - Description: [first 500 chars of description]

  EXISTING VAULT NOTES ON RELATED TOPICS:
  [List any matching notes found in grep]

  TRANSCRIPT:
  [full_text or chunked text]

  Produce the note body following the Output Format. Do NOT include frontmatter —
  only the body starting from the # title line."
)

Stage 3: INTEGRATE

  1. Generate timestamp ID:
date +%Y%m%d%H%M%S
  1. Format the upload_date for frontmatter (YYYYMMDD → YYYY-MM-DD)

  2. Check for duplicate notes:

grep -rl "VIDEO_TITLE" notes/ --include="*.md" | head -5
  1. Create the note file with frontmatter + agent output:
---
id: YYYYMMDDHHMMSS
type: post
processing_status: inbox
author: Channel Name
link: "https://www.youtube.com/watch?v=VIDEO_ID"
created_date: YYYY-MM-DD
updated_date: YYYY-MM-DD
---

[AGENT OUTPUT HERE — starts with # title and 🏷️Tags line]

Place the note in notes/ under the most appropriate topic subfolder:

  • ML/AI content → notes/ml/
  • Startup/business → notes/startup/
  • Finance → notes/finance/
  • Design → notes/design/
  • Psychology → notes/psychology/
  • General/unclear → notes/
  1. Report to user:
    • Note path and title
    • Number of concepts suggested for extraction
    • Any related vault notes found
    • Remind: "Run /process on this note when you're ready to deepen it"
</Steps>

<Tool_Usage>

  • Bash: Run fetch_youtube.py script (via uv run), generate timestamps, search vault
  • Read: Read agent definition, read existing vault notes for context
  • Write: Create the post note in vault
  • Agent: Delegate synthesis to video-noter agent (sonnet)
  • Grep/Glob: Search vault for duplicates and related notes
  • TodoWrite: Track progress through stages </Tool_Usage>
<Examples> <Good> User: /youtube https://www.youtube.com/watch?v=abc123 1. Extract → transcript (12 min video, 3400 words) + metadata (title, channel, chapters) 2. Search vault → found 2 related notes on the topic 3. Agent synthesizes → 6 themed sections, 4 questions, 3 concept suggestions 4. Create note → notes/ml/(Post) Video Title.md 5. Report: "Created note with 6 sections. Found connections to [[Existing Note 1]] and [[Existing Note 2]]. 3 concepts could become Term notes. Run /process when ready." </Good> <Bad> User: /youtube https://www.youtube.com/watch?v=abc123 - Creates note that is just a chronological transcript summary - Misses connections to existing vault notes - Doesn't check for duplicates - Places note in wrong folder </Bad> </Examples>

<Escalation_And_Stop_Conditions>

  • No transcript available: Inform user, suggest manual notes while watching
  • Transcript in wrong language: Try other available languages, report what's available
  • yt-dlp fails for metadata: Fall back to oEmbed (basic title/channel only)
  • Video extremely long (>3hrs): Warn user, offer to process first N minutes only
  • Duplicate note exists: Show existing note, ask if user wants to update or create new </Escalation_And_Stop_Conditions>

$ARGUMENTS

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Analyze a book (EPUB/PDF) and generate detailed chapter-by-chapter notes with extracted key concepts. Use when given a book file path to process.

中文简介正在准备中。当前显示原文说明。

tuan3w/obsidian-vault-agent412026年3月30日 更新

course

免费

Process an online course into detailed vault notes — one per lecture, with slides and transcripts synthesized. Use this skill whenever the user shares a course URL, syllabus page, or lecture playlist and wants structured notes from it. Also triggers on "process this course", "take notes on these lectures", "course notes", any university course page, or when someone pastes a link to a course with multiple lectures/sessions. Even if the user just says "check out this course" or drops a .edu link with a schedule — use this skill.

中文简介正在准备中。当前显示原文说明。

tuan3w/obsidian-vault-agent412026年3月30日 更新

Deep, iterative, multi-source research that explores a topic from multiple perspectives, detects contradictions, and produces a comprehensive vault note with fact-level citations and a confidence map. Use this skill whenever the user says /deep-research, "deep research X", "research X thoroughly", "investigate X deeply", "I need to really understand X", or wants research that goes beyond a quick web search. Also use when the user wants to understand a complex, contested, or multi-faceted topic, compare competing approaches with evidence, or build a comprehensive mental model they can trust for decisions. This is heavier than /research — it searches web, academic papers, Reddit, and the vault, then loops through exploration and critique rounds until the evidence base is solid. When in doubt between /research and /deep-research, prefer this one if the topic is complex, contested, or the user wants depth over speed.

中文简介正在准备中。当前显示原文说明。

tuan3w/obsidian-vault-agent412026年3月30日 更新

init

免费

Initialize an Obsidian vault with the agent-ready Zettelkasten system — creates directory structure, templates, CLAUDE.md, MCP config, and hooks

中文简介正在准备中。当前显示原文说明。

tuan3w/obsidian-vault-agent412026年3月30日 更新

lecture

免费

Extract transcript and key slides from a local video file, then create a vault-formatted lecture note. Use this skill whenever a user provides a local video file (.mp4, .mov, .mkv, .avi, .webm) and wants notes from it. Triggers on "lecture", "take notes", "I have a recording of", "class video", "transcribe this presentation", "process this video for notes", or /lecture. Works with any language — auto-detects transcript language.

中文简介正在准备中。当前显示原文说明。

tuan3w/obsidian-vault-agent412026年3月30日 更新

Use when searching for academic papers related to a topic, finding papers similar to one already in the vault, or discovering research gaps. Triggers on "find papers", "related papers", "paper search", "literature", "what papers should I read about X".

中文简介正在准备中。当前显示原文说明。

tuan3w/obsidian-vault-agent412026年3月30日 更新

查看 tuan3w 的全部技能

报告此技能的问题