Synthèse automatique
Ajoute une ressource (URL, livre, podcast, vidéo, dépôt GitHub, fil Reddit) à un coffre « Second Brain » en générant le frontmatter, les tags, le résumé et les wiki-liens adaptés au type de contenu détecté.
Points forts
- Table de routage par type de contenu (article, livre, podcast, talk, manga, newsletter, cours, quote, evergreen, map…) avec un fichier de référence dédié à chaque type
- Collecte de métadonnées en parallèle via des scripts spécialisés : transcripts YouTube et podcast, threads Reddit, Goodreads, GitHub
- Création de fiches auteur, découverte de liens wiki pertinents et suggestion de placement dans les MOC (maps of content)
- Validation qualité finale avec des validateurs parallèles puis pnpm lint:fix et pnpm typecheck
Limites
- Suppose que le dépôt fournisse déjà les fichiers references/content-types/, les scripts et la chaîne pnpm ; sans eux le workflow ne fonctionne pas
- Repose sur une arborescence fixe de type content/{slug}.md et sur des conventions de frontmatter propres au vault
- Le pipeline en huit phases avec agents parallèles est disproportionné pour capturer une note libre très simple
À utiliser lorsque vous voulez enregistrer une nouvelle ressource dans votre Second Brain avec un frontmatter, des tags et des liens cohérents avec le reste du vault.
À éviter si le vault, les scripts et les fichiers de référence ne sont pas présents, ou si vous voulez juste rédiger une note rapide sans métadonnées ni wiki-liens.
Analyse de sécurité
PrudenceThe skill orchestrates legitimate note-taking tasks: fetching metadata/transcripts from URLs, generating notes, and writing files. It uses powerful tools (Bash, WebFetch/WebSearch, Task) but for benign purposes and with no destructive commands, obfuscation, or secret exfiltration. The main residual risk is running local helper scripts and ingesting untrusted external content, which warrants caution rather than a clean safe rating.
- •Invokes local scripts via Bash (get-youtube-transcript.py, get-reddit-thread.py, etc.) that fetch external content and write files into the repo
- •Uses WebFetch/WebSearch and spawns Task agents to collect external metadata
- •Writes author profiles and notes directly to content/ with no confirmation gate, though AskUserQuestion is used for author-match disambiguation
- •No confirmation step or content sanitization before ingesting externally-fetched/untrusted text into the knowledge base
Exemples
Add a note for this video: https://www.youtube.com/watch?v=dQw4w9WgXcQ — pull the transcript and tag it properly.Save this book to my notes: https://www.goodreads.com/book/show/12345.some-bookCapture this repo in my Second Brain: https://github.com/anthropics/claude-codename: adding-notes description: Add new notes to the Second Brain knowledge base. Use when the user provides a resource (URL, book, podcast, article, GitHub repo, Reddit thread) and asks to "add a note", "create a note", "save this", "add to my notes", "take notes on", or "capture this". allowed-tools: Read, Write, Bash, WebFetch, Glob, Grep, Task, TaskOutput, WebSearch, AskUserQuestion
Adding Notes to Second Brain
Add content to the knowledge base with proper frontmatter, tags, summaries, and wiki-links.
Content Type Routing
Detect type from URL, then load the appropriate reference file.
| URL Pattern | Type | Reference |
|-------------|------|-----------|
| youtube.com | See YouTube Classification | references/content-types/youtube.md or talk.md or podcast.md |
| reddit.com | reddit | references/content-types/reddit.md |
| github.com | github | references/content-types/github.md |
| goodreads.com/series/ | manga | references/content-types/manga.md |
| goodreads.com, amazon.com (books) | book | references/content-types/book.md |
| spotify.com/episode, podcasts.apple.com | podcast | references/content-types/podcast.md |
| udemy.com, coursera.org, skillshare.com | course | references/content-types/course.md |
| .substack.com/p/, .beehiiv.com/p/, buttondown.email/* | newsletter | references/content-types/newsletter.md |
| Other URLs | article | references/content-types/article.md |
| No URL | note | references/content-types/note.md |
| Manual: quote | quote | references/content-types/quote.md |
| Manual: evergreen | evergreen | references/content-types/evergreen.md |
| Manual: map | map | references/content-types/map.md |
YouTube Classification
YouTube URLs require sub-classification before processing:
- Known podcast channel? →
references/content-types/podcast.md - Known talk channel OR conference title? →
references/content-types/talk.md - Tutorial signals? →
references/content-types/youtube.mdwithisTechnical: true - Default →
references/content-types/youtube.md
See references/content-types/youtube.md for full classification logic and channel lists.
Scripts Reference
Only use scripts that fetch external data or perform complex processing:
| Script | Purpose |
|--------|---------|
| get-youtube-metadata.sh URL | Fetch video title, channel |
| get-youtube-transcript.py URL | Fetch video transcript |
| get-podcast-transcript.py [opts] | Multi-source podcast transcript |
| get-reddit-thread.py URL --comments N | Fetch thread and top comments |
| get-goodreads-metadata.sh URL | Fetch book title, author, cover |
| get-manga-metadata.sh URL | Fetch series metadata |
| get-github-metadata.sh URL | Fetch repo name, stars, language |
| find-related-notes.py FILE --limit N | Find semantically related notes |
Do NOT use scripts for these trivial operations — do them inline:
- Slug generation:
"My Title Here"→my-title-here(lowercase, spaces to hyphens) - Author check: Use
Globtool withcontent/authors/*{lastname}*.md - Frontmatter templates: Write YAML directly
- Tag lookup: Use
Greptool or rely on knowledge from prior notes
Workflow Phases
Phase 1: Type Detection → Route to content-type file
Phase 2: Parallel Metadata Collection → Per-type agents
Phase 3: Author Creation → See references/author-creation.md
Phase 4: Content Generation → Apply writing-style, generate body
Phase 4.5: Connection Discovery → Find genuine wiki-link candidates (if any exist)
Phase 5: Quality Validation → Parallel validators
Phase 6: Save Note → Write to content/{slug}.md with link density report
Phase 7: MOC Placement → Suggest placements + check MOC threshold
Phase 8: Quality Check → Run pnpm lint:fix && pnpm typecheck
Phase 1: Type Detection & Dispatch
- Detect type from URL using the Content Type Routing table above (no script needed)
- Load the content-type reference file for detailed handling
- Detect
isTechnicalflag (see content-type file for criteria)
Phase 2: Metadata Collection
Spawn parallel agents as specified in the content-type file. Each file lists:
- Required scripts to run
- Agent configuration
- Special handling notes
If isTechnical: true: Also spawn code extraction agent (see references/code-extraction.md).
Phase 3: Author Creation
For external content types, authors are required. Check existence with Glob (no script needed):
Glob: content/authors/*{lastname}*.md
Handle by result:
| Result | Action |
|--------|--------|
| Exact match found | Use the existing author's slug |
| Partial match | Read matched files, use AskUserQuestion to verify |
| No matches | Create new author (see below) |
For partial matches, use the AskUserQuestion tool:
question: "Is [Author Name] the same person as this existing author?"
header: "Author Match"
multiSelect: false
options:
- label: "Yes, use existing"
description: "Use the existing author profile"
- label: "No, create new"
description: "Create a new author profile"
Quick creation flow:
- WebSearch:
[Author Name] official site bio - Extract: bio, avatar, website, socials
- Write author file directly (no script):
---
name: "Author Name"
slug: "author-name"
bio: "1-2 sentence description"
avatar: ""
website: ""
socials:
twitter: ""
github: ""
linkedin: ""
youtube: ""
---
- Save to
content/authors/{slug}.md(slug = lowercase name, spaces to hyphens)
Tip: Add aliases field to authors who go by multiple names (e.g., "DHH" → aliases: ["David Heinemeier Hansson"]).
Phase 4: Content Generation
- Load writing-style skill (REQUIRED):
Read .claude/skills/writing-style/SKILL.md - Load linking philosophy (REQUIRED):
Read .claude/skills/adding-notes/references/linking-philosophy.md - If
isTechnical: collect code snippets from Phase 2 - Compile frontmatter using template from content-type file
- Generate body with wiki-links (see Phase 4.5 for connection discovery)
- Add diagrams if applicable (see
references/diagrams-guide.md)
Tags: 3-5 relevant tags. Use tags you've seen in prior notes or Grep for similar content to find existing tags.
Summary: Frame as a core argument, not a description. What claim does this content make?
Phase 4.5: Connection Discovery
Before finalizing content, search for genuinely related notes. Only add connections that organically make sense.
-
Same author check (highest priority): If author exists, find their other works:
Grep pattern: "authors:.*{author-slug}" glob: "content/*.md" -
Tag-based discovery: For each tag, find notes with that tag:
Grep pattern: "tags:.*{tag}" glob: "content/*.md" limit: 5 -
Evaluate candidates: For each potential connection, ask: "Would I naturally reference this when discussing the topic?" If the answer is no, don't force the link.
Connection quality over quantity:
- Add links only when the relationship is genuine and useful
- If no notes genuinely relate, save as an orphan—that's fine
- Forced connections create noise and reduce trust in the link graph
- A well-explained single link beats two tenuous ones
When adding links, explain the relationship:
[[note]] - Same author explores this from a different angle[[note]] - Provides the theoretical foundation for these ideas
Phase 5: Quality Validation
Spawn parallel validators:
| Validator | Checks |
|-----------|--------|
| Wiki-link exists | Each [[link]] exists in content/ (excluding Readwise) |
| Link context | Each link has adjacent explanation (not bare "See also") |
| Duplicate | Title/URL doesn't already exist |
| Tag | Tags match or similar to existing |
| Type-specific | E.g., podcast: profile exists, guest not in hosts |
Wiki-link note: Readwise highlights (content/readwise/) are excluded from Nuxt Content and won't resolve as valid wiki-links. Use plain text or italics for books/articles that only exist in Readwise.
IF issues found: Use the AskUserQuestion tool:
question: "Validation found issues. How should I proceed?"
header: "Validation"
multiSelect: false
options:
- label: "Fix issues"
description: "Let me fix the issues before saving"
- label: "Save anyway"
description: "Proceed despite validation warnings"
- label: "Cancel"
description: "Don't save the note"
IF no issues: Log "✓ Validation passed" and proceed.
Phase 6: Save Note
Generate slug inline: lowercase title, replace spaces with hyphens, remove special characters.
Example: "Superhuman Is Built for Speed" → superhuman-is-built-for-speed
Save to content/{slug}.md. Confirm with link density status:
✓ Note saved: content/{slug}.md
- Type: {type}
- Authors: {author-slugs}
- Tags: {tag-count} tags
- Wiki-links: {link-count} connections ({status})
- [[link-1]] (why: {context})
- [[link-2]] (why: {context})
Link density status:
{link-count} >= 3: "well-connected"{link-count} = 1-2: "connected"{link-count} = 0: "standalone" (fine when no genuine connections exist)
Phase 7: MOC Placement (Non-blocking)
7.1 Suggest Existing MOC Placement
python3 .claude/skills/moc-curator/scripts/cluster-notes.py --mode=for-note --note={slug}
If suggestions score >= 0.7, present to user. Apply selections to MOC's ## Suggested section.
7.2 Check MOC Creation Threshold
After saving, check if any of the note's tags exceed the threshold:
# For each tag on the new note, count notes with that tag
Grep pattern: "tags:.*{tag}" glob: "content/*.md" output_mode: "count"
IF tag count >= 15 AND no existing MOC for that tag:
question: "The tag '{tag}' now has {count} notes. Would you like to create a MOC?"
header: "MOC Opportunity"
multiSelect: false
options:
- label: "Create MOC"
description: "Generate a '{tag}' guide/roadmap to organize these notes"
- label: "Skip for now"
description: "Don't create a MOC yet"
If "Create MOC" selected: Invoke moc-curator skill with --mode=new-clusters --tag={tag}.
Phase 8: Quality Check
Run linter and type check to catch any issues:
pnpm lint:fix && pnpm typecheck
If errors are found, fix them before completing the task.
Error Handling
| Error | Recovery | |-------|----------| | Metadata agent fails | Prompt for manual entry or WebFetch fallback | | Transcript unavailable | Note "No transcript available" in body | | Author not found online | Create minimal profile (name only) | | Reddit 429 | Wait 60s and retry | | Semantic analysis timeout | Proceed without wiki-link suggestions | | Validation crash | Warn user, recommend manual check |
Reference Files
| File | Purpose |
|------|---------|
| references/author-creation.md | Author profile workflow |
| references/diagrams-guide.md | When/how to add mermaid diagrams |
| references/code-extraction.md | Technical content code snippets |
| references/podcast-profile-creation.md | Creating podcast show profiles |
| references/newsletter-profile-creation.md | Creating newsletter publication profiles |
| references/content-types/*.md | Type-specific templates and handling |
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/adding-notes-to-second-brain-mmbizk2e/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/adding-notes-to-second-brain-mmbizk2e' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/adding-notes-to-second-brain-mmbizk2e/download' --output '.skill-downloads/adding-notes-to-second-brain-mmbizk2e/SKILL.md.part' && mv '.skill-downloads/adding-notes-to-second-brain-mmbizk2e/SKILL.md.part' '.skill-downloads/adding-notes-to-second-brain-mmbizk2e/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Bash, WebFetch, Glob, Grep, Task, TaskOutput, WebSearch, AskUserQuestion
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/adding-notes-to-second-brain-mmbizk2e/SKILL.md' && test -s '.skill-downloads/adding-notes-to-second-brain-mmbizk2e/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/adding-notes' && cp -R '.skill-downloads/adding-notes-to-second-brain-mmbizk2e' '.claude/skills/adding-notes'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/adding-notes-to-second-brain-mmbizk2e'openskills read 'adding-notes-to-second-brain-mmbizk2e'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/adding-notes-to-second-brain-mmbizk2e/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Lecteur PDF
Productivite
Lit et extrait le texte de fichiers PDF (rapports, contrats, tableurs). Gère les fichiers locaux, les URL et les pièces jointes WhatsApp. Utilisez-le dès qu'un contenu PDF est nécessaire, même sans demande explicite.
Workflows de messagerie Discord
Productivite
Utilisez l'outil message pour envoyer, modifier et modérer des messages Discord avec des composants interactifs.
Aperçu interactif des verdicts
Productivite
Générer un aperçu HTML interactif des verdicts (garder/supprimer) pour la revue par le mainteneur, puis traiter le JSON de retour.