IRIS-Transcript

by Othman Ben Brahim
5
4
3
2
1
New Plugin

Description

Transcrit une vidéo YouTube, la structure en mindmap (compatible Markmap) et en produit un résumé, dans une note Markdown. - This plugin has not been manually reviewed by Obsidian staff.

Reviews

No reviews yet.

Stats

stars
downloads
0
forks
0
days
NaN
days
NaN
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
0
commits

Latest Version

Invalid date

Changelog

README file from

Github

IRIS-Transcript

Plugin Obsidian qui transforme une URL YouTube en note Markdown : transcription → mindmap → résumé.

  • Transcription via les sous-titres YouTube (gratuit, sans clé API).
  • Mindmap interactive intégrée (zoom, déplacement, nœuds repliables), rendue par le plugin lui-même — aucun plugin tiers requis.
  • Résumé optionnel via un LLM (Fantasy Cloud).
  • Métadonnées en frontmatter, indexables par Dataview.

É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).

Résumé et mindmap par LLM (recommandé, fonctionne avec des API gratuites)

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é.

Notes techniques importantes

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() :

  1. YouTube — récupération des sous-titres de la vidéo demandée (via youtube-transcript-plus). Indispensable au fonctionnement.
  2. Endpoint LLM compatible OpenAI (Fantasy Cloud ou autre) — uniquement si tu as configuré une clé, pour générer le résumé et la mindmap structurée.

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.

Installation (manuelle, en attendant le marketplace)

  1. Copier manifest.json, main.js et styles.css dans <vault>/.obsidian/plugins/iris-transcript/.
  2. Dans Obsidian : Paramètres → Plugins tiers → Recharger les plugins, puis activer IRIS-Transcript.
  3. La mindmap s'affiche automatiquement dans la note, en mode lecture comme en live preview (le plugin rend lui-même les blocs ```iris-mindmap).

Utilisation

  1. Ctrl/Cmd + PIRIS : Transcrire une vidéo YouTube.
  2. Coller l'URL, valider (Entrée ou le bouton).
  3. La note est créée dans le dossier de sortie et ouverte automatiquement.

Paramètres (Paramètres → IRIS-Transcript)

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

Développement

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.

Crédits

Ce plugin embarque des bibliothèques tierces, sous licence MIT (sauf mention) :

Licence

MIT.