Othman Ben Brahim14 downloadsTranscrit une vidéo YouTube, la structure en mindmap (compatible Markmap) et en produit un résumé, dans une note Markdown.
Plugin Obsidian qui transforme une URL YouTube en note Markdown : transcription → mindmap → résumé.
État du projet — Sprint 1, Jours 1 à 4 terminés, plus la mindmap interactive intégrée (rendue par le plugin, sans plugin tiers). Reste le Jour 5 (finitions, README/GIF, jeu de tests sur 20 vidéos).
Sans LLM, le plugin reste utile : la transcription est recomposée en paragraphes lisibles (réglable dans les paramètres : paragraphes / aucun / par ligne), et la mindmap est découpée par pauses. Mais une mindmap réellement structurée par thèmes — et la distinction « qui dit quoi » — nécessite une étape LLM : les sous-titres YouTube ne contiennent ni structure ni locuteur.
Le champ « URL API Fantasy Cloud » accepte n'importe quel endpoint compatible OpenAI (/chat/completions). On peut donc brancher un fournisseur gratuit au lieu de Fantasy Cloud :
| Fournisseur | URL de base à mettre dans les paramètres | Exemple de modèle |
|---|---|---|
| Groq | https://api.groq.com/openai/v1 |
llama-3.3-70b-versatile |
| Google AI Studio | https://generativelanguage.googleapis.com/v1beta/openai |
gemini-2.5-flash |
| OpenRouter | https://openrouter.ai/api/v1 |
un modèle suffixé :free |
Crée une clé gratuite chez l'un d'eux (sans carte bancaire pour Groq / Google AI Studio / OpenRouter), colle-la dans « Clé API Fantasy Cloud », mets l'URL de base et le modèle correspondants. Les quotas gratuits suffisent largement pour transcrire des vidéos à l'unité.
CORS. Les appels réseau passent par requestUrl() de l'API Obsidian, pas par fetch(). Dans le renderer Electron d'Obsidian (origine app://obsidian.md), un fetch() direct vers YouTube est bloqué par CORS. requestUrl() contourne cette restriction. Le shim correspondant est dans src/http.ts et s'injecte dans youtube-transcript-plus via ses hooks videoFetch / playerFetch / transcriptFetch.
Fantasy Cloud. Base URL réelle : https://fantasyai.cloud/api/v1, endpoint /chat/completions (format OpenAI, header Authorization: Bearer). Si aucun modèle n'est précisé dans les paramètres, gpt-4o est utilisé par défaut (l'API OpenAI exige un champ model).
Mindmap interactive. La mindmap est intégrée directement : markmap-lib + markmap-view sont bundlés, et un processeur de bloc de code rend les blocs ```iris-mindmap en SVG interactif (src/markmap.ts). Aucune dépendance à un plugin tiers. La langue de bloc dédiée (iris-mindmap) évite tout conflit si le plugin communautaire Markmap est aussi installé. Hauteur réglable dans les paramètres.
Utilisation du réseau (transparence). Le plugin n'effectue que deux types de requêtes réseau, toutes via requestUrl() :
youtube-transcript-plus). Indispensable au fonctionnement.Aucune télémétrie, aucun autre serveur contacté. Les bibliothèques tierces bundlées (d3, markmap) contiennent des appels atob/btoa (encodage base64 pour la gestion d'assets de rendu) et des helpers de transpilation (__awaiter, issus de youtube-transcript-plus) : ils ne servent ni à dissimuler du code ni à masquer des clés.
manifest.json, main.js et styles.css dans
<vault>/.obsidian/plugins/iris-transcript/.```iris-mindmap).Ctrl/Cmd + P → IRIS : Transcrire une vidéo YouTube.Entrée ou le bouton).| Paramètre | Défaut | Rôle |
|---|---|---|
| Langues de transcription | fr, en |
Ordre de priorité des sous-titres |
| Dossier de sortie | IRIS-Transcript |
Emplacement des notes |
| Clé / URL / Modèle Fantasy Cloud | vide / https://fantasyai.cloud/api/v1 |
Résumé + mindmap LLM (accepte tout endpoint compatible OpenAI) |
| Seuil pause chapitre / section | 10 / 5 (s) |
Mindmap en mode dégradé (sans LLM) |
| Horodatage de la transcription | paragraphes |
Mise en forme du texte transcrit |
| Hauteur de la mindmap | 400 px |
Taille du panneau interactif |
npm install # installe les dépendances
npm run dev # build en watch (recompile à chaque modif)
npm run build # type-check + build de production
npm run typecheck # vérification de types seule
Le bundle main.js est généré par esbuild à partir de src/main.ts.
Ce plugin embarque des bibliothèques tierces, sous licence MIT (sauf mention) :
youtube-transcript-plus — récupération des sous-titres YouTube.markmap-lib et markmap-view — transformation et rendu de la mindmap.d3 (ISC) — moteur de visualisation utilisé par Markmap.MIT.