Skip to main content

presentation-docs

Transforme une source (note Obsidian, texte/Markdown brut, ou fichier de présentation PPTX/PDF/DOCX/ODT/ODP) en un fichier Markdown propre respectant la convention "mode présentation" de Docs (La Suite) — une diapo par diviseur `

Datos de origen

Repositorio
etalab-ia/skills
Última actividad en el origen
10 de septiembre de 2026 a las 09:18
Idioma detectado de SKILL.md
francés
Estrellas
23
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
6 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
presentation-docs
description
Transforme une source (note Obsidian, texte/Markdown brut, ou fichier de présentation PPTX/PDF/DOCX/ODT/ODP) en un fichier Markdown propre respectant la convention "mode présentation" de Docs (La Suite) — une diapo par diviseur `---`. Produit uniquement le fichier .md (et ses assets) prêt à coller/importer dans Docs ; ne publie rien. Utiliser quand l'utilisateur dit "/presentation-docs", "transforme cette note en présentation Docs", "convertis X en présentation Docs", "mets ce PPTX/PDF/DOCX/ODT en diapos Docs", "formate ce texte en présentation Docs".
# Skill : Présentation Docs Transforme une source en un **fichier Markdown propre**, formaté selon la convention du **mode présentation de Docs (La Suite)**. La sortie est un `.md` prêt à coller ou importer dans Docs. **La skill ne publie rien** : aucun appel réseau, aucune publication — elle produit le fichier et ses assets, point. Le mode présentation de Docs ([doc officielle](https://docs.numerique.gouv.fr/docs/f7ca1950-5e0f-48bb-993a-54584e8c060d/)) repose sur une règle unique : **chaque diviseur `---` crée une nouvelle diapo**. C'est un mode lecture. Il supporte alignement, couleurs, types de blocs, colonnes et médias (images/vidéos lisibles en présentant). ## Entrées possibles 1. **Note Obsidian** du vault → lecture directe (`Read`). 2. **Texte / Markdown brut** (collé par l'utilisateur ou pointé par un chemin) → utilisé tel quel comme matière première. 3. **Fichier de présentation externe** (PPTX / PDF / DOCX) → conversion en markdown (cf. § Récupérer texte et médias). ## Sortie Un seul livrable : un fichier `.md` dans le vault, respectant la convention diapos ci-dessous, avec ses médias dans un dossier d'assets à côté. À la fin, montrer le résultat et rappeler le nombre de diapos (= nombre de `---` + 1). L'utilisateur l'utilise ensuite dans Docs (copier-coller le contenu, ou importer le `.md`) — ce n'est pas du ressort de la skill. ## La convention diapos (à respecter absolument) - **Séparateur de diapo = `---`** seul sur sa ligne, **avec une ligne vide avant et après**. Sans ces lignes vides, `---` collé à une ligne de texte au-dessus est interprété comme un soulignement de titre (setext H2), pas comme un diviseur — la diapo ne se crée pas. - **Titres : `#` pour la diapo d'accroche, `##` pour les diapos suivantes** — les modèles officiels de l'équipe Docs utilisent un `# Titre` (souvent avec emoji) comme 1re diapo. Donc `#` = diapo de titre/accroche, `##` = titres des diapos de contenu, `###` = sous-titres. (Seul cas où éviter le `# H1` : quand un titre est déjà poussé séparément par une API de création de document, pour ne pas doublonner.) - **1 diapo = 1 idée** : titre court (`##`) + contenu concis (puces, lignes courtes). Éviter les pavés : un contenu plus haut que l'écran reste accessible au scroll mais nuit à la lisibilité en présentation. - **Médias** : `![texte](chemin-ou-url)` → bloc image/vidéo. Liens, **gras**, *italique*, listes, citations `>`, tableaux et blocs de code sont conservés. - **Ce que le markdown NE transporte PAS** : l'alignement (centrage), les couleurs et les colonnes sont des fonctions de l'éditeur Docs sans équivalent markdown. Le `.md` livre la **structure** (titres, texte, listes, diapos, images, liens) ; le **fignolage visuel se fait à la main dans Docs** après import. Le dire à l'utilisateur, ne pas le simuler. ## Pré-requis - Aucun pour une note Obsidian ou un texte/Markdown brut. - Pour un **fichier externe**, selon le format : - **PDF** → `poppler` (`pdftotext`, `pdfimages`, `pdftoppm`, `pdfinfo` — `brew install poppler`). - **PPTX** → `python-pptx` (`pip install python-pptx`), ou LiteParse. - **DOCX / ODT / ODP** → LiteParse (`npm i -g @llamaindex/liteparse`, plus LibreOffice pour les formats Office : `brew install --cask libreoffice` sur macOS, `apt-get install libreoffice` sur Ubuntu/Debian), utilisable directement en `lit parse` ou via la skill `rag-parse` si elle est installée. - **Recadrage d'images** (tous formats, optionnel) → `magick`/`convert` (ImageMagick). - Une présentation disponible uniquement en ligne (pas en fichier local) doit d'abord être exportée en **PPTX ou PDF**. ## Workflow ### Étape 1 — Identifier la source - **Note Obsidian** (chemin `.md`) → `Read`. - **Texte / Markdown brut** → prendre le contenu fourni tel quel. - **Fichier PPTX / PDF / DOCX / ODP** → en extraire texte et médias (étape 2). Pour un PDF, `pdftotext`/`pdfimages`/`pdftoppm` ; pour un PPTX, parsing `python-pptx` ; pour un DOCX/ODT/ODP, `lit parse {fichier}` (LiteParse ; sortie texte par défaut, `--format json` pour la structure) — les médias sont récupérés à part, depuis l'archive du document (`word/media/` pour un DOCX, qui est un zip). ### Étape 2 — Restructurer en diapos **Distinction de fidélité selon la source :** - **Source PDF / PPTX / présentation existante** → **respecter à l'identique la mise en forme et le découpage de la source**. Une diapo source = une diapo Docs, dans le même ordre, mêmes titres/puces/médias. Ne pas synthétiser, reformuler, fusionner ni réordonner : on translittère le deck en convention Docs (un `---` entre chaque diapo), transformation **syntaxique** seulement. - **Source note / texte / Markdown brut** → construire un deck en découpant aux frontières logiques, **1 idée par diapo** : 1. **Diapo de titre** (avant le 1er `---`) : titre (`#` recommandé, à la manière des modèles Docs), sous-titre, date. Garder court. 2. `---` 3. **Diapos de contenu** : chacune = `## Titre court` + 2 à 5 puces concises, ou une citation `>`, ou un média, ou un tableau. 4. **Diapo de clôture** éventuelle (synthèse, contacts). Si la source est déjà du Markdown, **réutiliser sa structure** (titres existants → titres de diapo) plutôt que de tout réécrire ; n'ajouter que les `---` et les ajustements de convention. Veiller pour chaque `---` à la **ligne vide avant et après**. #### Texte ET images, pas que des images Objectif : un deck **texte éditable + images**, jamais un empilement de pages aplaties en images. Le texte d'une diapo (titres, puces, libellés) reste du **texte markdown** — éditable, cherchable, accessible. On n'embarque en image que ce que le markdown ne peut pas reproduire (photos, captures, schémas). **1. Récupérer le texte de chaque diapo.** - PDF → `pdftotext -layout -f {page} -l {page} {fichier.pdf} -` (la couche texte d'un export de slides est en général propre, emojis compris). - PPTX → parser les zones de texte par diapo (`python-pptx` : pour chaque `shape` de `slide.shapes`, vérifier `shape.has_text_frame` avant de lire `shape.text_frame` — toutes les formes n'en ont pas, sinon `AttributeError` ; ou dézipper le `.pptx` et lire `ppt/slides/slideN.xml`). Avantage du PPTX : texte et images sont des éléments **distincts** par diapo. **2. Récupérer les médias de contenu.** - Bitmaps embarqués (photos, captures, illustrations) → `pdfimages -all -p {fichier.pdf} {prefixe}` (PDF, `pdfimages -list` pour l'inventaire) ou `ppt/media/` du PPTX. Écarter le **bruit de gabarit** (fonds, logos répétés, emojis décoratifs). **3. Schémas vectoriels non reproductibles** (diagrammes, pyramides, infographies, flux) → ni texte ni bitmap extractible, et le markdown ne sait pas les recréer. Pour **ceux-là seulement**, rendre la page concernée en image et l'embarquer **en plus** du texte : `pdftoppm -jpeg -r 130 -f {page} -l {page} {fichier.pdf} {prefixe}`. Résultat par diapo : `## titre` + texte markdown + image du schéma. Décision par diapo : titres/puces/colonnes de texte → **tout en markdown** (pas d'image) ; photo/capture/schéma → **texte markdown + l'image**. Conserver les **liens** en texte (`[libellé](url)`). Récupérer les URL écrites en clair depuis le texte extrait (`pdftotext {fichier.pdf} - | grep -oE 'https?://[^ )<>"]+' | sort -u`) ; pour un lien dont le libellé diffère de la cible (annotation hypertexte), lire les annotations avec un parser PDF — ex. `pypdf` : pour chaque page, `page.annotations` → `/A` → `/URI` (ne pas compter sur `strings`, les flux PDF étant souvent compressés). Enregistrer les médias dans un **dossier d'assets à côté du `.md`** (ex : `assets/{nom-deck}/slide-04.jpg`) et les référencer en markdown relatif : `![description](assets/{nom-deck}/slide-04.jpg)`. **Builds d'animation PowerPoint** : un même slide exporté en plusieurs pages quasi identiques produit des doublons. Replier chaque série sur son **état final** et le **signaler** à l'utilisateur (ne pas supprimer silencieusement). ### Étape 3 — Écrire le fichier .md Proposer un emplacement cohérent dans le vault : - Note source → à côté, suffixe ` - présentation.md` (ex : `ALLiaNCE/Strat 2026.md` → `ALLiaNCE/Strat 2026 - présentation.md`). - Fichier externe ou texte brut → dossier thématique pertinent ; demander si ambigu. Écrire avec `Write`, puis **montrer le résultat** (nombre de diapos) et indiquer où il se trouve. Si des médias locaux sont référencés, signaler qu'à l'import dans Docs ils peuvent devoir être réinsérés à la main (un import markdown ne transporte pas les binaires). ## Contraintes - **Sortie = le fichier `.md` et son dossier d'assets** — et rien d'autre : la skill ne publie pas et ne touche à aucun service Docs. Les médias extraits (étape 2) sont écrits à côté du `.md` et référencés en chemins relatifs ; ne jamais produire un lien vers un fichier qui n'a pas été écrit. - **Fidélité au deck source** — pour un PDF/PPTX, reproduire à l'identique contenu, découpage et ordre (1 diapo source = 1 diapo). Pas de synthèse ni reformulation. La restructuration éditoriale est réservée aux sources texte/Markdown. - **Médias récupérés, pas perdus** — extraire et réembarquer schémas/photos/captures. Ne jamais remplacer un média par une description textuelle. - **Diviseur entouré de lignes vides** — sinon la diapo ne se crée pas (interprété comme titre setext). - **Titres** — `#` pour la diapo d'accroche (comme les modèles officiels de l'équipe Docs), `##` pour les titres des diapos suivantes, `###` pour les sous-titres. - **Honnêteté visuelle** — le markdown porte la structure et les coupures de diapo, pas l'alignement/couleurs/colonnes (réglages manuels dans Docs). ## Exemple (avant / après) Source (texte/Markdown brut) : ``` ## Bilan T1 - 3 serveurs MCP en prod - 12 administrations accompagnées ## Cap T2 - Cartographie des données mobilisables - Guide MCP pour les administrations ``` Sortie `.md` (`---` = nouvelle diapo, lignes vides autour, `#` pour la diapo d'accroche) : ``` # Socle IA interministériel Point d'étape · juin 2026 --- ## Bilan T1 - 3 serveurs MCP en production - 12 administrations accompagnées --- ## Cap T2 - Cartographie des données mobilisables pour l'IA - Guide MCP à destination des administrations ``` → 3 diapos (titre + bilan + cap).
Ver en GitHub