Communitygithub.com

Youtube-note-forge

Compétence d'agent qui transforme les vidéos YouTube et Bilibili en fiches d'apprentissage prêtes pour Obsidian.

Qu'est-ce que Youtube-note-forge ?

Cette compétence d'agent transforme automatiquement les vidéos YouTube et Bilibili en fiches d'apprentissage structurées dans Obsidian. Elle extrait les transcriptions via des scripts PowerShell, génère un plan d'article détaillé basé sur la transcription (titres de chapitres, plages temporelles, affirmations principales, objectifs d'apprentissage), capture des captures d'écran clés aux moments pertinents pour servir de preuves visuelles, puis rédige la note finale en chinois avec des intégrations wiki Obsidian. L'agent suit une machine d'état stricte : extraction → planification → capture → validation. Il ne tolère ni improvisation ni échec de validation. Les captures d'écran sont obligatoires ; en cas d'absence ou de moins de 70 % du plan couvert, l'agent s'arrête immédiatement. Cette compétence est destinée aux utilisateurs d'Obsidian disposant du plugin `youtube-note-reader` et d'une extension Chrome; l'entrée via OpenCode est facultative.

Compatible avec~Claude Code✓Codex CLI~Cursor✓OpenCode
npx skills add yinbaozong/Youtube-note-forge

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Transcription YouTube v4.0.0

L'exécution complète du produit est assurée par le plugin Obsidian de bureau youtube-note-reader. Il gère la machine d'état déterministe, appelle le modèle compatible OpenAI configuré, exécute ces scripts, persiste l'état de la tâche et écrit la note terminée dans le Vault actif. L'extension Chrome fournit uniquement l'URL vidéo actuelle et le Cookie du navigateur. OpenCode reste une entrée optionnelle réservée à la compétence et n'est pas requise par l'installation complète (navigateur + Obsidian).

Utilisez cette compétence comme une machine d'état stricte. N'improvisez pas de chemins d'extraction alternatifs.

Version

Lorsque l'utilisateur demande la version actuelle, exécutez :

python .obsidian/skills/youtube-transcript/scripts/video_note.py --version

Retournez la sortie de la commande. Ne répondez jamais de mémoire. Elle rapporte la version installée, le chemin source et les valeurs SHA-256 des fichiers de base.

Workflow fixe

Pour chaque URL, effectuez les étapes suivantes avant de passer à l'URL suivante. Arrêtez tout le lot dès le premier résultat non nul du script.

  1. Extraire le matériel source :
python .obsidian/skills/youtube-transcript/scripts/extract_transcript.py "<url>" --output-dir "YouTube video" --deadline 300
  1. Lire la note générée et son sous-titre SRT. Créez un plan JSON avec article_outline et frames. article_outline contient 3 à 8 chapitres dérivés de la transcription ; chaque élément a section_id, title, start, end, core_claims et learning_goal. Choisissez les images clés en fonction de leur valeur d'apprentissage, généralement une image obligatoire pour chaque chapitre visuellement significatif, plus des preuves facultatives pour des étapes ou résultats distincts. La plupart des vidéos nécessitent 6 à 14 images ; 24 est la limite de sécurité absolue, jamais un objectif. Ne créez pas plusieurs points temporels quasi identiques simplement pour augmenter le nombre. Chaque image a section_id, timestamp, purpose et required. Utilisez le même section_id pour lier chaque capture d'écran à son chapitre de résumé détaillé. Ne renommez ni ne réécrivez la note pour l'instant. N'écrivez pas de scripts de sondage et n'inspectez pas manuellement les formats vidéo.

  2. Extraire les images planifiées exactement une fois. Après un résultat matériel réussi, la seule commande exécutable suivante autorisée est :

python .obsidian/skills/youtube-transcript/scripts/extract_frames.py "<url>" --plan "<plan.json>" --note "<generated-note.md>" --output-dir "YouTube video" --deadline 120
  1. Confirmer que le résultat des images a status: ok, au moins une capture d'écran, et un chemin manifest réel. Le script écrit automatiquement frame_manifest dans le YAML de la note. Si l'un de ces éléments manque, arrêtez-vous ; n'écrivez pas la note finale et ne remplacez pas la couverture.

  2. Renommer et réécrire la note générée sur place conformément à references/note-contract.md. Sous ## 详细内容总结, utilisez chaque article_outline.title comme un en-tête exact ###, expliquez ses affirmations principales, et insérez chaque image obligatoire réussie dans son chapitre correspondant avec une explication en chinois. Pour les captures d'écran locales au vault, utilisez toujours les intégrations wiki Obsidian comme ![[YouTube video/assets/VIDEO_ID/frame.jpg]] ; n'utilisez jamais de cible Markdown non échappée contenant des espaces. Seules les images listées dans le manifest comptent comme captures d'écran.

  3. Valider :

python .obsidian/skills/youtube-transcript/scripts/validate_note.py "<finished-note.md>"
  1. Si la validation échoue, modifiez cette note une seule fois et relancez le validateur une fois de plus. N'exécutez jamais d'extraction, n'écrivez pas de scripts temporaires, n'inspectez pas le code d'implémentation et ne diagnostiquez pas le comportement de la plateforme pendant cette réparation. Si elle échoue encore, arrêtez-vous et rapportez les erreurs renvoyées. Après une validation réussie, le validateur supprime uniquement les brouillons Markdown 待命名 - ... dans le même dossier dont le YAML url correspond exactement à la note finale ; les brouillons interrompus non correspondants restent disponibles pour une reprise.

Politique d'échec

PIPELINE_RESULT est la source de vérité. En cas de status: error, arrêtez-vous immédiatement et rapportez l'URL, l'étape, le code, le message, l'action, les URL terminées et les URL non démarrées.

Ne répondez jamais à un échec en exécutant un autre téléchargeur, un navigateur, Puppeteer, une extraction de cookie Chrome/Edge, une recherche web, un enregistrement audio ou une deuxième tentative. La seule tentative contrôlée est à l'intérieur des scripts : une vérification du dernier Cookie connu et un rafraîchissement de l'URL du flux vidéo lors de l'extraction ciblée des images.

La reconnaissance automatique de la parole (ASR) est désactivée par défaut. Utilisez --allow-asr uniquement si l'utilisateur accepte explicitement le téléchargement audio et un traitement plus lent.

Exigences visuelles

  • Les captures d'écran sont des preuves, pas de la décoration.
  • Utilisez des démonstrations, des interfaces, des diagrammes, des paramètres, des états de comparaison et des résultats.
  • Le script d'extraction des images utilise d'abord un flux distant 720p ou inférieur avec les en-têtes de demande yt-dlp. Si la recherche distante échoue, il peut télécharger uniquement un segment limité de 8 secondes autour de chaque point temporel planifié. Les segments temporaires sont supprimés immédiatement et une vidéo complète n'est jamais téléchargée pour les captures d'écran.
  • Un échec d'une image obligatoire ou une couverture inférieure à 70 % du plan d'images est un échec grave.
  • Une couverture, une miniature, une image copiée manuellement ou une intégration dupliquée ne compte jamais comme une image clé.
  • Conservez les images prévues même si leurs dispositions globales se ressemblent. Le texte de terminal, le code, les diapositives et les changements d'état de l'interface utilisateur sont utiles. Rejetez uniquement les images effectivement vides (noir/blanc) ; n'utilisez pas d'OCR, d'analyse d'image par IA ou de filtre de dédoublonnage perceptuel.
  • Ne revendiquez jamais la finition à moins que frame_manifest n'existe et que chaque image du manifest obligatoire n'apparaisse dans ## 详细内容总结.
  • Ne créez pas de fichiers Canvas.

Exigences de la note finale

  • Nom de fichier : Titre chinois - Titre anglais.
  • Le YAML contient skill_version: 4.0.0, quality_profile_version: 1, et un frame_manifest valide écrit par extract_frames.py.
  • Le corps commence par ## 一句话摘要 sans titre H1 dupliqué.
  • Supprimez du corps final le statut source, la description vidéo, les index de matériel visuel, les avertissements d'extraction, les instructions de tâche et les sections d'auto-vérification ; le YAML porte déjà les métadonnées source.
  • Utilisez le chinois en premier ; expliquez la terminologie anglaise nécessaire à sa première utilisation.
  • Laissez la transcription déterminer le plan de l'article et sa profondeur. Les images soutiennent l'explication ; ne raccourcissez et n'omettez jamais un contenu important simplement parce qu'une image correspondante n'est pas disponible.
  • Adaptez la profondeur de l'article à la durée de la vidéo. Chaque chapitre prévu nécessite une explication réelle, une preuve vidéo ou un exemple, et une implication d'apprentissage claire. Évitez les remplissages génériques et les paragraphes répétés.
  • Liez le SRT à la fin. Ne collez pas le texte brut de la transcription.
  • Supprimez la liste de contrôle d'auto-vérification avant la finalisation.

Skills associés