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.
日本語の概要は準備中です。原文の説明を表示しています。
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.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Process mode (default): Crawl an online course page, extract the lecture schedule with all materials (slides PDFs, YouTube videos, readings), then process each lecture into a detailed vault-formatted note with embedded slide images and synthesized transcripts. Creates a Course index note linking everything together.
Refine mode: Re-read existing course lecture notes and improve them — deepen equation explanations, add missing analogies, fix structure, strengthen cross-references. Triggered when user says "refine", "improve", "fix", or references existing course notes rather than a URL.
This is an orchestrator — it coordinates downloading, extraction, and synthesis across multiple lectures, producing a complete course knowledge package in the vault. </Purpose>
<Use_When>
<Do_Not_Use_When>
Parse the course URL from $ARGUMENTS. If no URL, ask the user.
Fetch the course page and extract structured lecture data:
WebFetch(
url="COURSE_URL",
prompt="Extract the complete course structure as JSON. For each lecture/session, include:
- number (int)
- title (string)
- date (string, if available)
- slides_url (string or null — look for PDF links to slides/lecture notes)
- video_url (string or null — look for YouTube links)
- readings (array of {title, url} — papers, blog posts, textbook chapters)
- description (string or null — any summary text)
Also extract:
- course_title (string)
- course_code (string or null)
- instructors (array of strings)
- course_url (string — the page URL)
- course_notes_url (string or null — if there's a single PDF of all course notes)
Return ONLY valid JSON, no markdown fencing."
)
Parse the JSON response. If the page has relative URLs for slides/videos, resolve them against the course URL's base.
Handle edge cases:
../docs/lecture_01.pdf): resolve to absolute URLsGenerate a short, memorable course hashtag from the course code or title. This tag will be used consistently across ALL notes for this course.
Rules for the tag:
#mit-diffusion, #cs231n-vision, #stanford-rl, #fast-ai-dlinstitution-topic or code-topic — lowercase, hyphensAlso derive a COURSE_SLUG for asset folder naming (same as tag without #).
Example: assets folder assets/mit-diffusion/, tag #mit-diffusion.
Present the extracted lecture list to the user in a clear table:
Found N lectures for "Course Title":
Course tag: #6s184
Assets folder: assets/6s184/
| # | Title | Slides | Video | Readings |
|---|-------|--------|-------|----------|
| 1 | Topic | PDF | YT | 2 papers |
| 2 | Topic | PDF | — | 1 paper |
...
Which lectures should I process? (default: all)
Options: "all", "1-3", "1,3,5", or specific numbers
If $ARGUMENTS includes a range (e.g., "1-3"), skip confirmation and use that range.
Not all sources are equal. A 50-minute video transcript where the instructor explains intuition, tells stories, and works through examples is 10x richer than a terse slide deck with equations and bullet points. The skill must be smart about which sources to use:
Priority order (use the best available, not just one):
Key rule: When a YouTube video exists, ALWAYS extract its transcript even if slides are also available. The transcript is the primary content source; slides are supplementary visual aids.
For each lecture in scope, spawn a parallel subagent. Each subagent does:
SKILL_DIR="${CLAUDE_SKILL_DIR}"
COURSE_SLUG="mit-diffusion" # derived from course tag
LECTURE_NUM="01"
SLIDES_DIR="temp/course-slides-${COURSE_SLUG}"
mkdir -p "$SLIDES_DIR"
# Download PDF
curl -sL "SLIDES_PDF_URL" -o "$SLIDES_DIR/lecture-${LECTURE_NUM}.pdf"
# Convert PDF pages to images
uv run "$SKILL_DIR/scripts/extract_pdf_slides.py" \
"$SLIDES_DIR/lecture-${LECTURE_NUM}.pdf" \
--output-dir "$SLIDES_DIR/lecture-${LECTURE_NUM}-frames" \
--prefix "${COURSE_SLUG}-L${LECTURE_NUM}"
The script outputs images and a manifest JSON. Copy selected frames to a
course-specific subfolder in assets/:
ASSETS_DIR="assets/${COURSE_SLUG}"
mkdir -p "$ASSETS_DIR"
cp "$SLIDES_DIR/lecture-${LECTURE_NUM}-frames"/*.png "$ASSETS_DIR/"
All slides for this course live in assets/6s184/, keeping them organized
and easy to find. The embed syntax still works: ![[6s184-L01-03.png]]
(Obsidian resolves short names across subfolders).
Reuse the youtube skill's fetch script:
YT_SKILL_DIR="${CLAUDE_PLUGIN_ROOT}/skills/youtube"
YT_OUTPUT="temp/course-yt-${COURSE_SLUG}-L${LECTURE_NUM}.json"
uv run "$YT_SKILL_DIR/scripts/fetch_youtube.py" "VIDEO_URL" --lang en > "$YT_OUTPUT"
Read the JSON output. If transcript fails, proceed with slides only.
If course notes PDF exists: Read the relevant section from the course notes PDF. This is often richer than individual slide PDFs — it's written prose with explanations, not just bullet points. Pass this to the noter agent as primary text content alongside any transcript.
If no video transcript and no course notes: Read the slide PDF directly via the Read tool. This is the weakest source — the noter agent must reconstruct meaning from terse bullets and equations. Flag this in the agent prompt so it knows to add more explanatory context.
Read the agent definition:
Read("${CLAUDE_SKILL_DIR}/agents/course-noter.md")
Launch the course-noter agent:
Agent(
subagent_type="general-purpose",
model="sonnet",
run_in_background=true,
prompt="You are Course Noter. Follow these instructions exactly:
[INSERT FULL CONTENT OF agents/course-noter.md HERE]
COURSE CONTEXT:
- Course: [course_title]
- Lecture [number] of [total]: [lecture_title]
- Date: [date]
- Instructors: [instructors]
- Other lectures in this course: [list of other lecture titles for cross-referencing]
SOURCE LINKS (include these in the note's Source Materials section):
- Video: [YouTube URL or null]
- Slides PDF: [PDF URL or null]
- Course page: [course URL]
CONTENT QUALITY TIER: [one of: transcript+slides, transcript-only, notes+slides, slides-only]
(If slides-only: you're working from terse bullet points and equations.
Work harder to explain WHY each concept matters, add intuitive analogies,
and fill in the reasoning the instructor would have spoken aloud.)
SLIDE FRAMES (for ![[embedding]]):
[frame manifest — filename, page number, brief description of each slide]
EXISTING VAULT NOTES ON RELATED TOPICS:
[search results from vault]
TRANSCRIPT (if available — this is your PRIMARY content source):
[full transcript text]
COURSE NOTES TEXT (if available — richer than slides alone):
[relevant section from course notes PDF]
PDF TEXT CONTENT (fallback when no transcript or course notes):
[extracted PDF text]
READINGS LISTED:
[titles and URLs of any readings for this lecture]
Produce the note body following the Output Format. Do NOT include frontmatter."
)
For each processed lecture, create a note file:
---
id: YYYYMMDDHHMMSS
type: lecture
processing_status: inbox
link: "COURSE_URL"
created_date: YYYY-MM-DD
updated_date: YYYY-MM-DD
---
[AGENT OUTPUT — starts with # title]
Naming convention: (Lecture) Short Tag - L01 Topic Title.md
Example: (Lecture) MIT Diffusion - L01 Flow and Diffusion Models.md
The short tag in the filename matches the course tag (capitalized for readability).
Place in notes/ml/ for ML/AI courses, notes/ + appropriate subfolder for others.
---
id: YYYYMMDDHHMMSS
type: course
processing_status: inbox
link: "COURSE_URL"
created_date: YYYY-MM-DD
updated_date: YYYY-MM-DD
---
# (Course) Course Title
- **🏷️Tags** : #course #mit-diffusion #diffusion #flow-matching #MM-YYYY
## Overview
- **Institution**: MIT / Stanford / etc.
- **Instructors**: Names
- **Lectures processed**: N of M
- **Course tag**: `#mit-diffusion` — use this to find all notes from this course
## Lectures
- [[(Lecture) MIT Diffusion - L01 Flow and Diffusion Models]] — one-line summary
- [[(Lecture) MIT Diffusion - L02 Flow Matching]] — one-line summary
- ...
## Course Materials
- [Course page](URL)
- [Course notes PDF](URL) (if available)
## Key Concepts Across Lectures
- [[(Term) Concept]] — appears in L01, L03, L05
- [[(Term) Another Concept]] — introduced in L02, applied in L04
## Related links
- [[(Type) Related Vault Note]] — connection
Show:
<Tool_Usage>
<Escalation_And_Stop_Conditions>
<Refine_Mode>
If $ARGUMENTS contains NO URL and instead references existing notes ("refine", "improve", "fix", mentions a course name or lecture number, or complains about note quality), enter refine mode instead of process mode.
Search the vault for the course index note and all lecture notes:
Glob(pattern="notes/**/*Course*KEYWORD*.md")
Glob(pattern="notes/**/*Lecture*KEYWORD*.md")
If ambiguous, ask the user which course.
For each lecture in scope:
Present a brief diagnosis to the user: "Here's what I'd fix in each note..." Get confirmation before proceeding.
Spawn one subagent per lecture note. Each subagent:
The agent prompt should include:
Show the user what changed in each note — section-level summary, not diffs. Suggest running /process on individual notes for deeper engagement.
</Refine_Mode>
$ARGUMENTS
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
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.
日本語の概要は準備中です。原文の説明を表示しています。
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.
日本語の概要は準備中です。原文の説明を表示しています。
Initialize an Obsidian vault with the agent-ready Zettelkasten system — creates directory structure, templates, CLAUDE.md, MCP config, and hooks
日本語の概要は準備中です。原文の説明を表示しています。
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.
日本語の概要は準備中です。原文の説明を表示しています。
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".
日本語の概要は準備中です。原文の説明を表示しています。
CORE learning workflow — use this whenever the user has a source note open (paper, post, book, lecture, course, clipping) and wants to extract knowledge, understand what they just read, or build it into their vault. Triggers on "process this note", "process this paper", "extract concepts", "what can I learn from this", "atomize this", "add this to my vault", "what's important here", or when the user shares a note and asks for help understanding it. Do NOT wait for an explicit /process command — if the user is engaging with a source note and wants to go deeper, this skill applies.
日本語の概要は準備中です。原文の説明を表示しています。