# Skill pour agents : porter une publication vers Postext

> Installez le skill postext-port dans Claude Code, Codex ou tout autre agent, et laissez-le transformer une source PDF, Word, PowerPoint, EPUB, InDesign ou HTML en un projet Postext qui suit la mise en page de l’original

- Version HTML: https://postext.dev/fr/docs/skill
- Dernière mise à jour: 2026-10-09
- Temps de lecture: 8 min
- Autres langues: [en](https://postext.dev/en/docs/skill.md), [es](https://postext.dev/es/docs/skill.md), [ca](https://postext.dev/ca/docs/skill.md), [pt](https://postext.dev/pt/docs/skill.md), [zh](https://postext.dev/zh/docs/skill.md), [ja](https://postext.dev/ja/docs/skill.md), [ar](https://postext.dev/ar/docs/skill.md)

## En bref

Cette page s’adresse aux personnes qui ont déjà un livre ou un document dans un autre format, comme PDF, Word ou InDesign, et qui veulent le passer dans Postext. Un assistant d’intelligence artificielle, appelé agent, peut faire l’essentiel du travail si vous lui donnez un petit module appelé skill. Le skill apprend à l’agent à reprendre le texte et à reconstruire la maquette de l’original. La page explique comment l’installer, quoi demander et comment vérifier le résultat. Une vidéo d’environ cinq minutes, en anglais, montre chaque étape.

**Transformer une publication existante en projet Postext avec un agent de programmation.**

Beaucoup de gens arrivent à Postext avec un livre qui existe déjà : un manuel
en PDF d’impression, un rapport sous Word, un cours sous PowerPoint, un
catalogue sous InDesign, un EPUB. Le porter suppose deux tâches :

- **Le contenu** : le Markdown enrichi de chaque chapitre, avec ses directives et
  ses microformats.
- **La maquette** : un manifeste de configuration qui reproduit les règles de
  mise en page de l’original (géométrie de la page, grille de ligne de base,
  caractères, ouvertures, titres courants, encadrés, flottants, tableaux,
  parties).

Un LLM peut faire une bonne partie de ce travail, mais seulement s’il sait comment
fonctionne Postext. Le Markdown de Postext n’est pas du CommonMark, et la
configuration a des pièges qui n’apparaissent que lorsqu’une page sort mal.
Le skill **`postext-port`** réunit ce savoir et les outils avec lesquels nous
avons construit chaque préréglage du Sandbox, pour que votre agent fasse le
portage correctement.

Il suit le format ouvert [Agent Skills](https://agentskills.io) et fonctionne
donc avec Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode et
[beaucoup d’autres agents](https://skills.sh).

## Regarder le tutoriel

Cinq minutes, sans code : préparer le dossier, apporter les originaux
vectoriels, ajouter un PDF de référence, faire la demande à l’agent et vérifier
le résultat dans le Sandbox. La vidéo est en anglais.

> *Convertir votre publication en Postext avec un agent IA* · Regarder le tutoriel · 5:12

**Transcription.** Tout ce que dit le narrateur, avec une description de ce qui apparaît à l’écran.

- 0:00 · *À l’écran:* Carte de titre : le logo de Postext, le surtitre « Tutorial · 5 steps » (« Tutoriel en 5 étapes ») et le titre « Turn your publication into Postext with an AI agent. No code. » (« Convertissez votre publication en Postext avec un agent d’IA. Sans code. »)
- 0:03 · *À l’écran:* « Your publication already exists. » (« Votre publication existe déjà. ») Trois pages composées par Postext, un livre, un manuel et un magazine, arrivent l’une après l’autre, étiquetées InDesign (IDML), Word (DOCX) et PDF. Elles se rassemblent à gauche, une flèche dorée en pointillés traverse un badge « AI agent » (agent d’IA) et une icône de fichier nommée my-book.postext apparaît, sous « An agent turns it into Postext. Five steps. A few well-written requests. » (« Un agent la convertit en Postext. Cinq étapes. Quelques demandes bien écrites. ») · *Narration:* Vous avez déjà une publication : un livre, un manuel, un magazine. Elle vit dans InDesign, dans Word ou dans un PDF. Dans ce tutoriel, un agent d’IA va la convertir en Postext pour vous. Sans code : juste cinq étapes et quelques demandes bien écrites.
- 0:23 · *À l’écran:* « The plan » (« Le plan ») : cinq cartes numérotées apparaissent à mesure que chaque étape est nommée : 01 Prepare the folder, 02 Bring the vector originals, 03 Add a reference, 04 Ask the agent, 05 Check in the sandbox (préparer le dossier, apporter les originaux vectoriels, ajouter une référence, demander à l’agent, vérifier dans le Sandbox). · *Narration:* Voici le plan : préparer le dossier, apporter les illustrations originales, ajouter une référence, demander à l’agent et vérifier le résultat.
- 0:33 · *À l’écran:* Étape 01, le dossier : « One project, one folder. » (« Un projet, un dossier. ») Un grand dossier, my-book/, flotte parmi dix fichiers épars comme MinionPro-Regular.otf, cover.jpg, fig-2-1.ai, chapter-01.docx, map.svg, book.idml et chart.pdf. Une fenêtre s’ouvre sur l’arborescence du dossier et chaque fichier s’envole vers son sous-dossier à mesure qu’il est nommé : reference.pdf (l’apparence à obtenir, étape 03), fonts/ (Minion Pro, Myriad…, .otf .ttf .woff2), images/ (photos, .jpg .png), artwork/ (originaux vectoriels, .ai .svg .pdf) et text/ (Word, InDesign IDML…). · *Narration:* Première étape : mettez tout dans un seul dossier sur votre ordinateur. Un projet, un dossier. À l’intérieur, donnez à chaque type de matériel son propre sous-dossier : les polices, les images, les illustrations et les fichiers de texte.
- 0:50 · *À l’écran:* La ligne fonts/ est mise en évidence et une carte intitulée « Fonts » (« Polices ») montre un grand « Aa », les styles Regular, Italic et Bold, les formats OTF, TTF et WOFF2, et la note « Only the fonts you include can be used. » (« Seules les polices que vous fournissez peuvent être utilisées. ») Puis « The tidier the folder, the less it guesses. » (« Plus le dossier est rangé, moins il devine. »), tandis que chaque sous-dossier de l’arborescence reçoit une coche. · *Narration:* N’oubliez pas les polices. Elles donnent sa voix à la maquette, et l’agent ne peut utiliser que celles que vous fournissez. Plus le dossier est rangé, moins l’agent a à deviner.
- 1:03 · *À l’écran:* Étape 02, les originaux vectoriels : « Bring the originals. » (« Apportez les originaux. ») Un schéma, un graphique et une carte sont tracés au trait, leurs points d’ancrage visibles, et trois icônes de fichier apparaissent : .ai Illustrator, .svg SVG et .pdf PDF. · *Narration:* Deuxième étape : si vos illustrations sont des graphiques vectoriels, comme des schémas, des graphiques ou des cartes, retrouvez les fichiers originaux : Illustrator, SVG ou PDF.
- 1:14 · *À l’écran:* Deux panneaux montrent la même figure, un schéma où Manuscript et Template pointent tous deux vers Pages, avec la légende « Fig. 2.1 Content and design meet. » (« Le contenu et la maquette se rejoignent. ») À gauche, « Cut from the PDF: a photo of the drawing » (« Découpée dans le PDF : une photo du dessin ») devient floue et pixelisée à mesure que la vue zoome ; à droite, « The original: the drawing itself » (« L’original : le dessin lui-même ») reste net. Le panneau de gauche s’efface, les étiquettes de l’original sont retapées en espagnol (Manuscrito, Plantilla, Páginas), des traits de coupe l’encadrent et trois coches indiquent « Sharp at any size » (net à toute taille), « Labels are live text » (les étiquettes sont du vrai texte) et « Print master → press » (l’original d’impression part sous presse). · *Narration:* Une figure découpée dans le PDF final n’est guère plus qu’une photo du dessin. L’original, c’est le dessin lui-même. Avec lui, l’agent reconstruit chaque figure : nette à toute taille, avec ses étiquettes toujours en texte réel, prêtes à être traduites. Et pour l’impression, l’original part sous presse intact.
- 1:37 · *À l’écran:* Étape 03, la référence : « Show how it should look. » (« Montrez à quoi cela doit ressembler. ») Dans l’arborescence, reference.pdf est mis en évidence et étiqueté « In the root » (« À la racine ») ; une page s’en échappe et devient une grande page de livre sur deux colonnes marquée reference.pdf. · *Narration:* La troisième étape est essentielle : à la racine du dossier, placez un fichier qui montre clairement à quoi doit ressembler le produit fini. Un PDF est idéal.
- 1:47 · *À l’écran:* Des mesures apparaissent sur la page : les contours des colonnes, une gouttière de 9 mm, une marge de 20 mm, des étiquettes pour le titre (Fraunces 28 pt), le texte courant (Lora 9,4/13,6 pt) et un encadré (teinté, 1 filet), et des lignes de base avec un interlignage de 13,6 pt. Un fichier, spec-sheet.md, se remplit : page de 210 × 280 mm ; marges de 24 · 20 · 22 · 20 mm, en miroir ; 2 colonnes, gouttière de 9 mm ; grille de ligne de base de 13,6 pt ; texte courant en Lora 9,4/13,6 pt, justifié ; titres en Fraunces 28 pt · Geist ; ouvertures avec un bandeau de couleur de 101 mm ; encadrés avec une teinte et un filet à gauche. Puis le mot « Guess » (« Deviner ») est barré et « Measure. » (« Mesurer. ») s’allume en doré. · *Narration:* L’agent lit la maquette dans ces pages. Il mesure les marges, les colonnes, les polices et les espacements, et les note sous forme de règles de mise en page. Sans référence, il devrait deviner. Avec une référence, il mesure.
- 2:03 · *À l’écran:* Étape 04, l’agent : « Ask for it in plain words. » (« Demandez-le avec des mots simples. ») Une fenêtre intitulée « Agent · ~/my-book » s’ouvre à côté des badges Claude Code, Codex et « or any other agent » (« ou tout autre agent »). Un message de YOU (vous) s’écrit : « Install the Postext skill: `npx skills add drnachio/postext --skill postext-port` » (« Installez le skill Postext »), et l’agent répond « ✓ Skill installed: postext-port » (skill installé). Une carte du skill postext-port énumère « A proven workflow » (une méthode éprouvée), « Everything about Postext » (tout sur Postext) et « Tools to check its own work » (des outils pour vérifier son propre travail). · *Narration:* Quatrième étape : ouvrez votre agent, Claude Code, Codex ou celui que vous utilisez, dans ce dossier, et demandez-lui d’installer le skill Postext. Un skill est un paquet de savoir-faire expert. Celui-ci apprend à l’agent à faire entrer une publication dans Postext, et lui donne les outils pour vérifier son propre travail.
- 2:24 · *À l’écran:* La demande suivante s’écrit : « Use the postext-port skill to convert this book to Postext. The design is in reference.pdf, the fonts are in fonts/ and the original illustrations are in artwork/: use them instead of cutting figures out of the PDF. Start with chapter 1 only, and show me the spec sheet before you build it. » (« Utilisez le skill postext-port pour convertir ce livre en Postext. La maquette est dans reference.pdf, les polices dans fonts/ et les illustrations originales dans artwork/ : servez-vous-en au lieu de découper les figures dans le PDF. Commencez par le chapitre 1 seulement, et montrez-moi la fiche technique avant de le construire. ») À côté, reference.pdf, fonts/ et artwork/ s’allument dans l’arborescence à mesure que la demande les nomme, et une carte « Ch. 1 » surgit. · *Narration:* Puis demandez ce que vous voulez, avec des mots simples. Dites-lui où se trouvent la référence, les polices et les originaux, et demandez-lui de commencer par un seul chapitre.
- 2:37 · *À l’écran:* Une grille de douze pages de livre estompées ; la première est cernée d’or. Une flèche circulaire y compte les tours de finition jusqu’à l’apparition d’une coche, puis les onze autres s’allument. En dessous : Sample chapter → Polish → Extend (chapitre d’essai, finition, extension). · *Narration:* Si le contenu est long, commencez par un chapitre d’essai. Peaufinez-le jusqu’à ce qu’il soit parfait, et seulement ensuite étendez-le au reste.
- 2:46 · *À l’écran:* L’agent demande « Faithful copy or redesign? » (« Copie fidèle ou nouvelle maquette ? »), « Which languages? » (« Quelles langues ? ») et « Print, screen, or both? » (« Impression, écran ou les deux ? »). Une liste de contrôle déroule Take inventory, Measure the design, Extract the text, Fonts and images, Compare page by page et Pack the file (faire l’inventaire, mesurer la maquette, extraire le texte, polices et images, comparer page par page, empaqueter le fichier), et le fichier my-book.postext apparaît. Une troisième demande s’écrit : « Chapter 1 is approved. Convert the remaining chapters with the same design, compare each one with reference.pdf, and pack everything into a single .postext file. » (« Le chapitre 1 est validé. Convertissez les chapitres restants avec la même maquette, comparez chacun avec reference.pdf et réunissez le tout dans un seul fichier .postext. ») L’agent répond « ✓ 12 chapters · 0 warnings · my-book.postext » (12 chapitres, aucun avertissement). · *Narration:* L’agent vous posera quelques questions : copie fidèle ou nouvelle maquette, quelles langues, impression ou écran. Puis il mesure, extrait, assemble et vérifie. Et il vous remet un fichier Postext. Une fois l’échantillon au point, il suffit d’une demande de plus pour l’étendre à tout le livre.
- 3:14 · *À l’écran:* Étape 05, le Sandbox : « Check it, page by page. » (« Vérifiez-le, page par page. ») Une fenêtre de navigateur tape l’adresse postext.dev/sandbox. Le pointeur clique sur Books (Livres) dans la barre latérale, puis sur New (Nouveau), puis sur « Open a .postext file… » (« Ouvrir un fichier .postext… ») ; le fichier arrive en volant, « My book, 12 chapters · 184 pages » apparaît en haut de la liste et ses premières pages s’ouvrent dans la vue Canvas ; les onglets de vue indiquent Canvas, HTML, PDF, Folio et EPUB 3. · *Narration:* Cinquième étape : ouvrez le Sandbox de Postext sur postext.dev. Dans Livres, choisissez Nouveau, puis ouvrez votre fichier.
- 3:24 · *À l’écran:* La page de référence et la page Postext se tiennent côte à côte, étiquetées Reference et Postext, et une ligne dorée les parcourt de haut en bas. Le panneau Checks (Vérifications) s’ouvre avec un badge à 3 et liste Widow (p. 4), Loose line (p. 7) et Figure does not fit (p. 9), soit une veuve, une ligne lâche et une figure qui ne tient pas ; des cadres rouges marquent chaque problème sur la page Postext. · *Narration:* Parcourez-le page par page, à côté de votre référence. Le panneau Vérifications vous signale les problèmes : veuves, lignes lâches, figures qui ne tiennent pas.
- 3:35 · *À l’écran:* Deux rangées de maquettes filaires de pages, « Reference · PDF » et « Postext · reflowed » (recomposé). Dans la rangée recomposée, une figure passe de la première page au haut de la deuxième, et une ligne pointillée relie ses deux positions. Texte : « Same rules, not the same pages. The content flows: a figure or a page break may land elsewhere. » (« Mêmes règles, pas les mêmes pages. Le contenu s’écoule : une figure ou un saut de page peut tomber ailleurs. ») Puis un signe égal relie chaque paire de pages sous « What must match » (« Ce qui doit correspondre ») : Margins and baseline grid, Typography, Figure and box styles, Clean pages: no widows, even columns (marges et grille de ligne de base, typographie, styles des figures et des encadrés, pages propres : pas de veuves, des colonnes égales). Un panneau rouge marqué ≠ indique « Hand-made craft decisions: not rules, so they can’t set changing content » (« Des décisions d’artisan prises à la main : ce ne sont pas des règles, elles ne peuvent donc pas composer un contenu qui change »). · *Narration:* Une chose à garder en tête : les pages n’ont pas besoin d’être identiques à votre PDF. Postext a appris les règles de mise en page, et votre contenu s’écoule désormais, si bien qu’une figure ou un saut de page peut tomber ailleurs. Ce qui doit correspondre, c’est la qualité : le même niveau de finition. Quand on met en page à la main, on prend de petites décisions d’artisan qui ne sont pas des règles. Et seules des règles peuvent composer un contenu qui ne cesse de changer.
- 4:03 · *À l’écran:* La fenêtre de l’agent revient avec une quatrième demande : « In the sandbox, chapter 2, page 7: the “Remember” box is split across two columns, and the running head is missing. Checks shows 3 loose lines. Fix it and pack the file again. » (« Dans le Sandbox, chapitre 2, page 7 : l’encadré “Remember” est coupé sur deux colonnes, et le titre courant manque. Vérifications indique 3 lignes lâches. Corrigez-le et réempaquetez le fichier. ») Une capture d’écran est jointe, screenshot-ch2-p7.png. Puis une boucle entre Sandbox (check, vérifier) et Agent (fix, corriger) parcourt les tours 1 à 3 tandis que le nombre d’avertissements tombe de 3 à 0, et se termine par une coche et « Exactly right. » (« Exactement comme il faut. ») · *Narration:* Puis dites à l’agent ce que vous voyez, aussi précisément que possible : le chapitre, la page et ce qui ne va pas. Une capture d’écran aide. Ouvrez la nouvelle version, vérifiez de nouveau, et recommencez. Chaque tour se rapproche du but, jusqu’à ce que ce soit exactement comme il faut.
- 4:23 · *À l’écran:* « Not just a Postext version. » (« Pas seulement une version Postext. ») Le fichier my-book.postext se scinde en deux le long d’une ligne dorée. À gauche, « Content (what it says) », le contenu : chapters/en/02-the-cell.md, avec le titre « The cell », une phrase qui renvoie à la figure fig-cell et un encadré « remember ». À droite, « Form (how it looks) », la forme : un modèle déduit de votre original, avec une page de 210 × 280 mm en miroir, 2 colonnes avec une gouttière de 9 mm, un texte courant en Lora 9,4/13,6 justifié, des titres en Fraunces numérotés, des encadrés « remember » avec teinte et filet, et des figures flottées en haut de colonne. · *Narration:* Et voici le meilleur : vous n’avez pas seulement fait une version Postext de votre contenu. Vous avez séparé le fond de la forme. Le texte vit dans des chapitres propres. La maquette vit dans un modèle, avec des règles de mise en page déduites de votre original.
- 4:39 · *À l’écran:* Des pastilles s’allument pour Correct, Extend et Translate (corriger, étendre, traduire) au-dessus d’une rangée de pages de livre : une ligne est surlignée et un reflet traverse les pages, deux pages de plus arrivent en glissant, et les pages se retournent sur l’édition espagnole. Une demande s’écrit : « Add a Spanish edition: translate the chapters, captions and diagram labels, and keep the same design. » (« Ajoutez une édition espagnole : traduisez les chapitres, les légendes et les étiquettes des schémas, et gardez la même maquette. ») Légende : « Same rules. New content. Pages set themselves. » (« Mêmes règles. Nouveau contenu. Les pages se composent toutes seules. ») Puis « One file, the whole book. » (« Un fichier, tout le livre. ») : une icône .postext se ramifie vers une page avec des traits de coupe (Print-ready PDF, un PDF prêt pour l’impression), une liseuse dont le texte se recompose à la taille de son écran (EPUB e-book, un livre numérique EPUB), une fenêtre de navigateur (Web reader, un lecteur web) et une paire de pages (Every page, set : chaque page, composée). · *Narration:* Alors, quand votre contenu change, quand vous le corrigez, l’étendez ou le traduisez, vous n’avez pas à penser à la mise en page. Postext le recompose en suivant les mêmes règles. Un seul fichier pour tout le livre : un PDF prêt pour l’impression, un livre numérique EPUB, un lecteur pour le web et des pages qui se composent toutes seules.
- 5:03 · *À l’écran:* Carte de fin : le logo de Postext, le slogan « The programmable typesetter for the web » (« Le compositeur programmable pour le web »), postext.dev, une pastille indiquant « The prompts from this video are in the description ↓ » (« Les demandes de cette vidéo sont dans la description ») et le pied « Open source · MIT · github.com/drnachio/postext ». · *Narration:* Postext. Open source, sur postext.dev. Vous trouverez les exemples de demandes dans la description.

Aussi sur YouTube (en anglais) : [la regarder là-bas](https://www.youtube.com/watch?v=Hh-mWtZGWHw&list=PLXV_YSL9ROv0) ou dans la
[playlist Postext](https://www.youtube.com/playlist?list=PLXV_YSL9ROv0).

## Ce que contient le skill

- **Une méthode de travail** :
  1. s’accorder sur le cahier des charges ;
  2. faire l’inventaire de la source ;
  3. mesurer la maquette et la consigner dans une fiche technique ;
  4. créer la structure du projet ;
  5. extraire le contenu ;
  6. le mettre au propre en Markdown Postext ;
  7. préparer les polices et les images ;
  8. vérifier page par page ;
  9. empaqueter le tout.
- **Des références** :
  - le format du document et le manifeste de configuration, tous deux vérifiés
    sur le moteur ;
  - le format du projet (paquet) ;
  - un guide pratique par format de source ;
  - une méthode d’analyse de la maquette ;
  - un catalogue de cas de mise en page résolus : parties avec leurs propres couleurs,
    ouvertures de chapitre, vers, gloses marginales, notes de bas de page, index, encadrés flottants, coupés ou
    imbriqués, masters vectoriels pour l’impression, figures en texte réel, images dans
    des cellules de tableau, tableaux à l’italienne, éditions bilingues, et d’autres encore ;
  - les livres chinois, composés horizontalement ou verticalement et reliés à droite :
    quoi demander dans le cahier des charges (écriture, région, sens, reliure), comment
    mesurer une grille de caractères, comment lire des PDF verticaux, le ruby
    et le warichu d’InDesign, la mise en page est-asiatique de Word et les EPUB de droite à
    gauche, et comment réduire les polices CJK aux caractères du livre (voir [Mise en page chinoise](https://postext.dev/fr/docs/chinese-layout.md)) ;
  - les livres japonais, romans bunko et tankōbon verticaux reliés à droite ou
    livres techniques horizontaux : la langue qui active les règles japonaises
    (`ja`, jamais une balise chinoise), quoi demander (sens, grille,
    furigana, notes, orthographe de l’édition), comment mesurer le bloc de
    texte en caractères et en lignes, le balisage des furigana et des bōten, les textes
    d’Aozora Bunko convertis avec `aozora.py`, les numérisations d’éditions du domaine public de
    la Bibliothèque nationale de la Diète, et des polices japonaises réduites avec leurs kana et leurs
    formes verticales (voir [Mise en page japonaise](https://postext.dev/fr/docs/japanese-layout.md)) ;
  - les livres arabes, modernes ou classiques et vocalisés, composés de droite à gauche et
    reliés à droite : la langue qui retourne le livre, quoi demander (région
    et chiffres, vocalisation, vers, table des matières à la fin), comment mesurer une
    page en miroir, comment lire l’arabe depuis des PDF, Word et Wikisource, les poèmes
    en `:::verse`, les notes « (١) » par page, et des polices arabes réduites avec leurs
    tables de liaison (voir [Mise en page arabe](https://postext.dev/fr/docs/arabic-layout.md)) ;
  - la bande dessinée, les mangas et les strips de presse : la division qui découpe une page en
    cases, les images des cases avec leurs points d’ancrage de locuteurs et leurs zones de sécurité, un
    script par langue que le moteur lettre (bulles, récitatifs, onomatopées),
    les mangas et les éditions arabes de droite à gauche, et comment porter à partir d’images sans
    texte accompagnées de traductions, de numérisations déjà lettrées ou d’un script
    avec des images générées (voir [Bande dessinée](https://postext.dev/fr/docs/comics.md)) ;
  - l’objet imprimé : comment lire le papier, la reliure, les couvertures et le dos de
    la source et les traduire en réglages `folio` qu’affiche la [visionneuse Folio](https://postext.dev/fr/docs/sandbox.md#onglet-folio),
    vérifiés par le linter.
- **Des scripts** (Python et Node), décrits dans la section suivante.

## Scripts

| Script | Ce qu’il fait |
| --- | --- |
| `inventory.py` | Premier examen de n’importe quelle source : géométrie, polices, styles utilisés, médias, pages qui demandent une OCR ; pour un PDF imprimé en PDF/X, sa condition de sortie et son fond perdu, avec les réglages `print` qui les reproduisent. |
| `measure_layout.py` | Marges, colonnes, gouttière et interlignage (la grille de ligne de base) d’un PDF |
| `pdf_extract.py` | PDF → brouillons de chapitres par *rôle typographique* (police/taille/couleur) : ordre de lecture, paragraphes, suppression des césures, gras/italique, exposants et indices, listes, légendes |
| `pdf_figures.py` | Découpe les figures d’un PDF : photos en résolution native, aperçus SVG, masters PDF vectoriels pour l’impression |
| `extract_tables.py` | Tableaux PDF → `TableModel` Postext |
| `pandoc_to_postext.py` | DOCX, PPTX, ODT, EPUB, HTML, LaTeX, Markdown, JATS, DocBook → brouillons de chapitres, avec les styles Word associés à des encadrés et à des styles de paragraphe |
| `idml_extract.py` | IDML d’InDesign → brouillons de chapitres par style de paragraphe, tableaux et images ancrées ; le ruby, le tate-chu-yoko, les signes d’emphase et le warichu deviennent `:ruby`, `:tcy`, `:dots` et `:warichu`, et les blocs de texte verticaux et une reliure de droite à gauche sont signalés |
| `aozora.py` | Texte d’Aozora Bunko (un zip CP932 ou un `.txt`) → Markdown Postext : furigana, bōten et traits latéraux, titres avec leurs retraits, blocs 字下げ et 地付き en styles de paragraphe, sauts de page, 外字 résolus via JIS X 0213, signes de kanbun ; il renvoie le bloc de crédits et un rapport de ce qu’il n’a pas pu exprimer |
| `index_marks.py` | Reconstruit un index imprimé sous forme de marques `:index` : lit les pages d’index du PDF, retrouve chaque terme sur sa page et marque les mêmes mots dans les chapitres |
| `comic_panels.py` | Mesure les pages de bande dessinée : trouve les cases grâce au papier qui les sépare, écrit l’expression `split` (de gauche à droite ou de droite à gauche, gouttières obliques comprises), les gouttières et le cadre, découpe une image par case et imprime les squelettes `:::page` ; pose une grille sur les images pour relever les points d’ancrage des locuteurs et les zones de sécurité, et les redessine pour les vérifier |
| `fonts.py`, `images.py`, `convert_assets.py` | Instancier, réduire, mettre à l’échelle et scinder des polices (une fonte chinoise ou japonaise réduite aux caractères du livre garde ses formes et ses métriques verticales, une fonte arabe ses formes liées et le tatweel) ; convertir les images en sRGB, les rogner et les assembler ; transformer des illustrations `.ai`/`.pdf` en SVG |
| `preset_kit.py` | Crée la structure du projet et son script générateur, construit `preset.json`, empaquette le fichier `.postext` |
| `lint_project.py` | Détecte tout ce que l’analyseur et le chargeur interprètent mal sans rien dire et, pour le texte chinois, japonais et coréen, les caractères que les polices fournies ne savent pas composer ; pour le texte japonais, les kana sous une langue chinoise, les fontes ou réglages chinois, la notation Aozora restée dans les chapitres et les entrées d’index en kanji sans lecture ; pour le texte arabe, une langue arabe manquante, des fontes uniquement latines ou sans liaisons, l’interlettrage, la césure forcée et l’emphase en italique ; en bande dessinée, les expressions de division qui ne s’analysent pas, les cases qui ne correspondent pas aux cellules, les images et les styles de bulle ou de case inconnus, les points d’ancrage de locuteurs mal formés, les fontes de lettrage que le projet ne fournit pas, et les éditions dont les pages diffèrent |
| `render.mjs` | Met le projet (un dossier ou un fichier `.postext`) en page sans interface avec le vrai moteur, en lisant sa configuration comme le fait le Sandbox, et imprime les avertissements. Avec `--jpeg`, il peint les pages demandées (`--pages 12-15`) en fichiers JPEG avec le propre moteur de rendu canvas du moteur, en une seconde ou deux, si bien que l’agent regarde ses pages sans construire de PDF ; `--out` écrit le PDF. Un livre préparé pour l’impression reçoit des lignes PREFLIGHT (images en basse résolution, filets fins, petit texte en plusieurs encres, encrage au-delà de la limite, texte proche du massicotage), et son PDF est séparé via le profil de sortie ICC. |
| `compare_pages.py` | Place côte à côte les pages de la source et celles de Postext, à partir du PDF du rendu ou de son dossier de JPEG |

## L’installer

### N’importe quel agent (skills.sh)

La CLI [`skills`](https://skills.sh) détecte vos agents et installe le
skill pour eux :

```bash
npx skills add drnachio/postext --skill postext-port
```

Choisissez les agents explicitement avec `-a`, et installez globalement (pour tous les projets) avec
`-g` :

```bash
npx skills add drnachio/postext --skill postext-port -a codex -a claude-code -g
```

Le site publie le même skill, donc ceci fonctionne aussi :

```bash
npx skills add https://postext.dev
```

### Plugin Claude Code

Le dépôt Postext est aussi une marketplace de plugins Claude Code. Dans Claude
Code :

```text
/plugin marketplace add drnachio/postext
/plugin install postext@postext
```

Ou depuis un shell :

```bash
claude plugin marketplace add drnachio/postext
```

```bash
claude plugin install postext@postext
```

### Laisser l’agent l’installer

Vous pouvez demander à votre agent de le faire, par exemple : *« Installez le skill
de portage Postext (`npx skills add drnachio/postext --skill postext-port`) et utilisez-le pour
porter ce PDF. »* Les agents qui lisent `https://postext.dev/llms.txt` y trouvent cette
page et la commande d’installation.

### Outils utilisés par les scripts

```bash
python3 -m pip install pymupdf pillow fonttools brotli
```

```bash
brew install pandoc poppler
```

```bash
mkdir -p ~/.cache/postext-tools && cd ~/.cache/postext-tools && npm init -y && npm i postext postext-pdf postext-citeproc react @pdf-lib/fontkit @napi-rs/canvas
```

Pandoc est nécessaire pour les sources Word, PowerPoint, EPUB et HTML, et poppler pour
les images des pages de la source. Les packages Node font tourner le moteur de rendu sans interface (Node 22.15 ou
plus récent) ; `@napi-rs/canvas` est un canvas précompilé qui lui permet de peindre les
pages du livre directement en JPEG. Outils facultatifs : `ocrmypdf` pour les numérisations, ImageMagick, et veraPDF pour
les vérifications PDF/UA.

La boucle de travail s’exécute en [ligne de commande](https://postext.dev/fr/docs/command-line.md), avec un seul exécutable autonome, sans rien à installer : l’agent garde le projet décompressé et laisse `postext build --watch` tourner sur les pages sur lesquelles il travaille, si bien que chaque modification apparaît en JPEG environ une seconde plus tard, même dans un long livre. Les packages Node sont facultatifs : ils font tourner `render.mjs`, qui ajoute les vérifications supplémentaires du Sandbox. Les deux mettent le livre en page avec `bodyText.shapingLanguage: 'host'`, quoi que dise sa configuration, si bien qu’une ligne peut se couper à un autre mot que dans le Sandbox (voir [Différences avec le Sandbox](https://postext.dev/fr/docs/command-line.md#différences-avec-le-sandbox)).

## L’utiliser

Placez les fichiers source dans votre dossier de travail et demandez le portage. Par exemple :

- *« Portez les chapitres 1 à 3 de `manual.pdf` vers Postext, en reproduisant sa mise en page
  sur deux colonnes, ses ouvertures de chapitre et ses encadrés. »*
- *« Convertissez `course.docx` en livre Postext. Les styles “Nota” et “Actividad”
  sont des encadrés. »*
- *« Transformez `deck.pptx` en support de cours Postext : les diapositives deviennent des sections, les notes
  de l’orateur deviennent le texte. »*
- *« Nous avons le dossier InDesign (IDML + PDF d’impression) de ce manuel. Construisez le
  préréglage Postext du chapitre 1 en espagnol et en anglais. »*

L’agent suit la méthode de travail :

1. **Cahier des charges.** Il demande ce qu’il ne peut pas déduire : une reproduction fidèle ou une
   nouvelle maquette, un chapitre d’essai ou tout le livre, les langues, l’impression ou l’écran,
   et les droits sur le texte, les images et les polices.
2. **Inventaire et mesure.** Il lit la source et rédige une fiche technique
   de faits mesurés : format, marges, colonnes, interlignage, rôles typographiques, palette,
   ouvertures, titres courants, familles d’encadrés et habitudes de placement.
3. **Projet.** Il crée la structure de `my-book/` avec un générateur `build_preset.py`
   qui garde la fiche technique sous forme de constantes et produit `preset.json`.
4. **Contenu.** Il extrait des brouillons de chapitres avec l’extracteur adapté, puis
   les met au propre en Markdown Postext : encadrés, styles de paragraphe, parties,
   attributs de titre pour les ouvertures, citations `:ref`, ressources de tableau et
   de figure.
5. **Vérification.** Il passe le projet au linter et laisse `postext build --watch`
   tourner sur le projet décompressé : il modifie un chapitre ou un réglage, regarde
   le JPEG de la page, repeint environ une seconde plus tard, et recommence
   jusqu’à ce que les sauts de page, les figures et les encadrés correspondent à la source page par page. À
   chaque étape importante, il lance toutes les vérifications (`postext check` et le linter).
   Le PDF est construit pour les vérifications d’impression, pas à chaque coup d’œil.
6. **Livraison.** Il définit le papier, la reliure et les couvertures du livre pour la visionneuse
   Folio et empaquette `my-book.postext`.

Ouvrez le résultat dans le [Sandbox](https://postext.dev/fr/sandbox.md) : **Livres → Nouveau → Ouvrir un fichier .postext…**.
L’import prend les chapitres et la formulation dans la langue du Sandbox. Pour travailler
sur un dossier de projets dans une copie locale de Postext, définissez
`POSTEXT_PRIVATE_PRESETS_DIR` (voir [Sandbox](https://postext.dev/fr/docs/sandbox.md)).

### Charger le résultat depuis du code

Le fichier livré n’est pas lié au Sandbox. Le package `postext` l’ouvre avec `openBundle`, met le livre en page avec `buildBundle` et le rend en canvas, en HTML ou en PDF (voir [Paquets](https://postext.dev/fr/docs/configuration-programmatic-usage.md#paquets-fichiers-postext)). Un portage peut donc alimenter directement un programme. Quand la sortie de ce programme demande des retouches, exportez-la de nouveau en fichier `.postext` avec `createBundle`, affinez-la dans le Sandbox et rechargez le fichier corrigé. Le `render.mjs` sans interface du skill accepte lui aussi un fichier `.postext` empaqueté en plus d’un dossier de projet.

## À quoi s’attendre

- **Les extracteurs produisent des brouillons ; l’agent les met au propre.** Comptez une passe
  de relecture par chapitre, comparée aux pages de l’original. C’est de cette relecture
  que vient la qualité.
- **Configuration et Markdown uniquement.** Le skill ne modifie jamais le moteur pour l’adapter à un
  livre. Quand Postext ne sait pas exprimer quelque chose, l’agent choisit l’expression la plus proche
  et la signale comme une lacune connue.
- **Les droits relèvent de votre décision.** L’agent demande avant de reproduire des images ou des polices
  dont les licences ne sont pas claires. Les polices sous licence sont marquées
  `redistributable: false`, si bien que les projets exportés les laissent de côté.
- **La fidélité là où elle compte.** L’objectif est d’obtenir la même grille, les mêmes caractères, les mêmes ouvertures,
  les mêmes encadrés, le même placement des figures et les mêmes sauts de page sur la plupart des pages (à une page près par
  chapitre), pas des coupures de lignes identiques.

## Où il se trouve

Le skill se trouve dans le dépôt, à l’emplacement
[`plugins/postext/skills/postext-port`](https://github.com/drnachio/postext/tree/main/plugins/postext/skills/postext-port).
Il couvre tous les cas rencontrés en construisant les préréglages du Sandbox, publics et
privés. Quand un portage tombe sur un cas qu’il ne couvre pas encore, ouvrez une issue
ou une pull request qui améliore le skill, pour que le portage suivant en profite gratuitement.
