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.
- Extraire le matériel source :
python .obsidian/skills/youtube-transcript/scripts/extract_transcript.py "<url>" --output-dir "YouTube video" --deadline 300
-
Lire la note générée et son sous-titre SRT. Créez un plan JSON avec
article_outlineetframes.article_outlinecontient 3 à 8 chapitres dérivés de la transcription ; chaque élément asection_id,title,start,end,core_claimsetlearning_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 asection_id,timestamp,purposeetrequired. Utilisez le mêmesection_idpour 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. -
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
-
Confirmer que le résultat des images a
status: ok, au moins une capture d'écran, et un cheminmanifestréel. Le script écrit automatiquementframe_manifestdans 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. -
Renommer et réécrire la note générée sur place conformément à references/note-contract.md. Sous
## 详细内容总结, utilisez chaquearticle_outline.titlecomme 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. -
Valider :
python .obsidian/skills/youtube-transcript/scripts/validate_note.py "<finished-note.md>"
- 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 YAMLurlcorrespond 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_manifestn'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 unframe_manifestvalide écrit parextract_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.