Aperçu
Le dépôt de documentation utilise plusieurs systèmes d’automatisation pour maintenir le contenu à jour, valider la qualité et simplifier les processus :
- GitHub Actions - workflows CI/CD pour le test, la validation et les mises à jour automatisées
- n8n Workflows - plateforme d’automatisation externe pour l’obtention de données et les mises à jour du contenu
- Scripts - Outils en ligne de commande pour la génération de contenu, la récupération de données et la maintenance
- Hooks de pré-validation - Validation locale pour s’assurer du respect du guide de style
Intentional Duplication: Both GitHub Actions and n8n workflows exist for the same functionality (Ghost blog, Forum, YouTube data). This is intentional to provide flexibility for future maintainers. Use whichever platform you prefer based on your needs.
Workflows GitHub Actions
Les workflows GitHub Actions sont situés dans .github/workflows/ et s’exécutent automatiquement lors des poussées, des demandes de tirage ou à des intervalles planifiés.
Flux de travail actifs
Vérification des liens brisés
Fichier : .github/workflows/broken-links.yml
Objectif : Vérifie que tous les liens du document sont fonctionnels
Déclencheurs :
- Les demandes d’extraits vers
main branche
Ce qu’il fait :
- Installe l’interface CLI Mintlify
- Exécute
mintlify broken-links pour vérifier tous les liens
- Sortie d’alerte des publications dans le résumé du workflow (actuellement non bloquante)
Exécution manuelle : Non disponible (seulement PR)
Secrets requis : Aucun
Politique : ⚠️ Conseil uniquement pendant que le nettoyage des liens hérités est en cours (continue-on-error: true)
CI des documents - Suite de qualité du contenu
Fichier : .github/workflows/test-suite.yml
**Objectif :**Exécute les vérifications de qualité du contenu bloquant le PR principal
Déclenche :
- Push vers
main
- Demandes de tirage vers
mainoudocs-v2
Ce qu’il fait (PRs) :
- Calcule les fichiers modifiés par rapport à la branche de base de la PR
- Exécute les vérifications bloquantes portant sur les fichiers modifiés :
- Guide de style
- Validation MDX
- Orthographe
- Qualité
- Liens/importations
- Application des documents de script sur les scripts modifiés
- Audit strict des liens V2 sur les pages de documentation modifiées
- Exécution des tests navigateur pour couvrir les routes/exécutions
- Écrit les résultats dans le résumé de l’étape GitHub
**Sortie :**Tableau récapitulatif du workflow (aucun commentaire de PR provenant de ce workflow)
Exception : Pour les PR d’intégration docs-v2 -> main, les échecs statiques des fichiers modifiés sont traités comme des avertissements ; les échecs du navigateur bloquent toujours.
Génération du SDK
Fichier : .github/workflows/sdk_generation.yaml
Objectif : Génère automatiquement des SDK à partir de spécifications OpenAPI à l’aide de Speakeasy
Déclencheurs :
- Tous les jours à minuit UTC (planifié)
- Envoi manuel depuis l’interface GitHub Actions
Ce qu’il fait :
- Utilise l’action de génération du SDK Speakeasy
- Génère des SDK pour toutes les API configurées
- Crée des pull requests avec le code généré
Exécution manuelle :
- Allez dans Actions → Génération du SDK
- Cliquez sur “Exécuter le workflow”
- Optionnellement définir
force: true pour régénérer même si aucune modification
Secrets requis :
SPEAKEASY_API_KEY - Clé API Speakeasy pour la génération du SDK
Docs CI - V2 Browser Sweep
Fichier : .github/workflows/test-v2-pages.yml
Objectif : Teste toutes les pages de documentation v2 pour les erreurs de console et les problèmes d’affichage
Déclencheurs :
- Push vers
main
- Pull requests vers
main ou docs-v2
Ce qu’il fait :
- Démarre le serveur de développement Mintlify
- Exécute les tests Puppeteer sur toutes les pages
- Publie les résultats en commentaires de PR
- Télécharge le rapport détaillé des tests en tant qu’artefact
**Exécution manuelle :**S’exécute automatiquement lors d’un push/PR
**Secrets requis :**Aucun
Sortie :
- Commentaires de PR avec les résultats des tests
- Artifact :
v2-page-test-report.json
Mise à jour Livepeer Version de la release
Fichier : .github/workflows/update-livepeer-release.yml
Objectif : Met à jour automatiquement la dernière version de la release Livepeer dans le fichier globaux
Déclencheurs :
- Toutes les 30 minutes (planifié)
- Envoi manuel depuis l’interface GitHub Actions
Ce qu’il fait :
- Récupère la dernière version depuis
livepeer/go-livepeer le dépôt GitHub
- Compare avec la version actuelle dans
snippets/automations/globals/globals.mdx
- Met à jour le fichier si une nouvelle version est disponible
- Valide et pousse les modifications
Exécution manuelle :
- Allez dans Actions → Mettre à jour Livepeer Version de la release
- Cliquez sur “Exécuter le workflow”
Secrets requis : Aucun (utilise GITHUB_TOKEN)
Fichier de sortie : snippets/automations/globals/globals.mdx
Intake de problème Discord (Phase 1)
Fichier : .github/workflows/discord-issue-intake.yml
**Objectif :**Crée des problèmes GitHub à partir des charges utiles d’intake Discord livrées via repository_dispatch
Déclencheurs :
repository_dispatch avec type discord-issue-intake
Ce qu’il fait :
- Valide le schéma de charge utile de diffusion et les champs requis pour le modèle
docs_page_issue
- Rejette le contenu uniquement avec des espaces réservés ou sensible à la sécurité
- Impose l’idempotence en utilisant
correlation_id marqueur dans le corps de l’incident
- Crée un incident avec des titres alignés sur le modèle et des étiquettes de base
- Mappe les étiquettes dynamiques (
area:*, classification:*, priority:*, kind:*) à issue-auto-label.yml
Remarques du mainteneur (schéma + compatibilité) :
- Prise en charge de
schema_version 1.0.0 et 1.1.0
1.1.0 ajoute les fields.classification requis pour docs_page_issue
1.0.0les charges utiles restent valides pour la compatibilité vers l’arrière et provoqueront des problèmes sans une Classificationsection (l’indexeur les affichera comme non classifiées jusqu’à ce qu’elles soient triées)
- Si vous modifiez les noms de champs ou les titres de section dans les formulaires de problème, mettez à jour les deux :
.github/workflows/discord-issue-intake.yml(validation des charges utiles + en-têtes de corps générés)
.github/workflows/issue-auto-label.yml(analyse des sections / correspondance des étiquettes)
- Gardez les en-têtes du corps des problèmes exacts (par exemple
### Classification, ### Priority) car l’analyse automatique des étiquettes est basée sur les titres
Comment déployer en toute sécurité des modifications futures du schéma :
- Ajouter un support pour la nouvelle version du schéma dans
.github/workflows/discord-issue-intake.yml
- Conserver la version précédente du schéma acceptée jusqu’à ce que tous les expéditeurs de diffusion soient mis à niveau
- Mettre à jour
snippets/automations/scripts/n8n/Discord-Issue-Intake.json pour émettre la nouvelle version et les champs
- Vérifier qu’une diffusion de test crée les en-têtes et étiquettes attendus
Secrets requis :
- Aucun (utilise le jeton d’appelant repository-dispatch et GitHub Actions
GITHUB_TOKEN)
Fichiers associés :
snippets/automations/scripts/n8n/Discord-Issue-Intake.json
snippets/assets/scripts/n8n/README-discord-issue-intake-workflow.md
.github/workflows/issue-auto-label.yml
Étiquette automatique
Fichier : .github/workflows/issue-auto-label.yml
Objectif : Analyse les corps des formulaires de problème et applique/retire les étiquettes gérées pour le tri des documents.
Familles d’étiquettes gérées :
area:*
classification:* (gravité/impact)
priority:* (planification du mainteneur)
kind:* (sous-type de page de documentation)
scope:*
Remarques du mainteneur (important) :
- L’analyse est basée sur les titres markdown exacts dans le corps des problèmes (par exemple
### Area, ### Classification, ### Priority)
- Si un titre est renommé dans un modèle de problème, mettez à jour
getSection(...) l’utilisation et les listes de sections obligatoires dans ce workflow
- La compatibilité avec les problèmes anciens est intentionnelle :
Classification n’est traité comme obligatoire que lorsqu’un corps de problème contient déjà une### Classification section
- Cela empêche les anciens problèmes d’être automatiquement étiquetés
status: needs-infolors des modifications de ré-triage
- Le workflow ignore l’index de niveau supérieur des documents v2 en vérifiant le marqueur caché :
<!-- docs-v2-issue-indexer -->
- Ne supprimez ou ne renommez pas ce marqueur sans mettre à jour à la fois ce workflow et le workflow de l’indexeur
Liste de vérification de validation manuelle après les modifications :
- Ouvrez un problème de test à partir de chaque modèle affecté (ou modifiez le corps d’un problème de test existant)
- Confirmer
classification:* et priority:* étiquettes sont toutes appliquées
- Changer la classification dans le corps du problème et confirmer que l’ancienne
classification:* étiquette est supprimée
- Confirmer que l’incident docs-v2 n’est pas automatiquement étiqueté avec
status: needs-triage
Indexeur de problèmes de Docs v2
Fichier : .github/workflows/docs-v2-issue-indexer.yml
Objectif : Maintient un seul problème GitHub de niveau supérieur en cours d’indexationdocs-v2 problèmes (ouverts + récemment fermés).
Déclencheurs :
issuesévénements : ouvrir/modifier/étiqueter/détacher/reouvrir/fermer
- planifié toutes les 6 heures
- envoi manuel
Ce qu’il fait :
- Trouve l’incident indexé par le marqueur caché dans le corps de l’incident (
<!-- docs-v2-issue-indexer -->)
- Crée l’incident d’index s’il n’existe pas
- Interroge tous les
docs-v2 incidents ouverts et récemment fermésdocs-v2 incidents (fenêtre par défaut de 30 jours)
- Génère des comptes résumés + des tableaux de décomposition + des tableaux d’incidents
- Met à jour le même corps d’incident en place uniquement si le contenu a changé
Remarques du mainteneur (opération sécurisée) :
- Le marqueur caché est la source de vérité pour localiser le problème d’index. Gardez-le stable sauf si vous mettez à jour les deux :
.github/workflows/docs-v2-issue-indexer.yml
.github/workflows/issue-auto-label.yml
- La fenêtre récemment fermée est contrôlée par
RECENTLY_CLOSED_DAYS dans le script de workflow
- Le workflow exclut intentionnellement le problème d’index lui-même des comptages/tableaux, même s’il a le
docs-v2 étiquette
- Le workflow ignore les boucles de déclenchement auto en sortant prématurément si le corps de l’incident déclencheur contient déjà le marqueur d’index
- Si le corps de l’incident généré semble obsolète, utilisezActions → Docs v2 Issue Indexer → Exécuter le workflow
Dépannage opérationnel :
- Problèmes d’index en double :
- Assurez-vous qu’un seul incident contient le marqueur
<!-- docs-v2-issue-indexer -->
- Supprimez le marqueur des doublons, puis exécutez le workflow manuellement
- Étiquettes manquantes dans les analyses :
- Vérifiez
.github/workflows/issue-auto-label.yml les préfixes gérés et l’analyse des étiquettes
- Vérifiez que les titres du corps du problème correspondent toujours aux attentes du parseur
- Problèmes ouverts non classés inattendus :
- Ce sont généralement des problèmes hérités (pré-classification) ou des problèmes créés à partir d’un schéma d’entrée Discord plus ancien
1.0.0
Flux de récupération des données (GitHub Actions & n8n disponibles)
L’implémentation GitHub Actions utilise des workflows dédiés, divisés par source de données (update-forum-data.yml, update-ghost-blog-data.yml, et update-youtube-data.yml). Les versions n8n de ces flux sont également maintenues pour les équipes qui préfèrent l’orchestration d’automatisation externe.
Mettre à jour les données du forum
Fichier : .github/workflows/update-forum-data.yml
Statut : ⚠️ Alternative à n8n - Voir la note dans le fichier de workflow
**Objectif :**Récupère les derniers sujets de forum du forum Livepeer
Déclencheurs :
- Tous les jours à minuit UTC (planifié)
- Envoi manuel
Ce qu’il fait :
- Exécute
.github/scripts/fetch-forum-data.js
- Mises à jour
snippets/automations/forum/forumData.jsx
- Validation et envoi si des modifications sont détectées
Secrets requis :
DOCS_V2 - Jeton GitHub pour l’accès au dépôt de documentation
GHOST_CONTENT_API_KEY - Clé d’API de contenu Ghost utilisée par .github/scripts/fetch-ghost-blog-data.js
Remarque : Les actions GitHub et les workflows n8n sont disponibles pour cette fonctionnalité. Utilisez celle que vous préférez.
Mettre à jour les données du blog Ghost
Fichier : .github/workflows/update-ghost-blog-data.yml
Statut : ⚠️ Alternative à n8n - Voir la note dans le fichier de workflow
**Objectif :**Récupère les derniers articles de blog depuis Ghost CMS
Déclencheurs :
- Tous les jours à minuit UTC (planifié)
- Affectation manuelle
Ce que cela fait :
- Exécute
.github/scripts/fetch-ghost-blog-data.js
- Met à jour
snippets/automations/blog/ghostBlogData.jsx
- Valide et pousse si des modifications sont détectées
Secrets requis :
DOCS_V2 - Jeton GitHub pour l’accès au dépôt de documentation
Remarque : Les workflows GitHub Actions et n8n sont disponibles pour cette fonctionnalité. Utilisez celui que vous préférez.
Mettre à jour les données YouTube
Fichier : .github/workflows/update-youtube-data.yml
Statut : ⚠️ Alternative à n8n - Voir la note dans le fichier de workflow
**Objectif :**Récupère les dernières vidéos YouTube du canal Livepeer
Déclencheurs :
- Hebdomadaire le dimanche à minuit UTC (planifié)
- Envoi manuel
Ce qu’il fait :
- Exécute
.github/scripts/fetch-youtube-data.js
- Filtre les Shorts (≤60 secondes)
- Met à jour
snippets/automations/youtube/youtubeData.jsx
- Valide et pousse si des modifications sont détectées
Secrets requis :
YOUTUBE_API_KEY - Clé de l’API YouTube Data v3
Remarque : Les workflows GitHub Actions et n8n sont disponibles pour cette fonctionnalité. Utilisez celui que vous préférez.
Flux d’automatisation n8n
Les workflows n8n sont des fichiers JSON situés danssnippets/automations/scripts/n8n/. Ces workflows s’exécutent sur une instance externe n8n et peuvent être importés/configurés là-bas.
Most n8n workflows are currently inactive ("active": false). Only active workflows are documented below. See audit report for full status.
Workflows n8n actifs
Événements Luma vers Mintlify
Fichier : snippets/automations/scripts/n8n/Luma-To-Mintlify.json
Statut : ✅ Actif
**Objectif :**Récupère les événements du calendrier Luma et met à jour la documentation
**Calendrier :**Hebdomadaire
Ce qu’il fait :
- Récupère les données iCal de l’API Luma
- Analyse les événements (à venir et passés)
- Génère un fichier de données JSX
- Valide sur GitHub sur
docs-v2 branche
Sortie : snippets/automations/luma/lumaEventsData.jsx
Comment l’utiliser :
- Importer le fichier JSON dans une instance n8n
- Configurer les identifiants GitHub
- Définir l’ID du calendrier Luma
- Activer le workflow
Identifiants requis :
- Jeton d’API GitHub avec accès en écriture
- ID du calendrier Luma :
cal-X93qV3PuUH0wq0f
Pipeline du projet de démonstration
Fichier : snippets/automations/scripts/n8n/Showcase_To_Mintlify_Pipeline.json
Statut : ✅ Actif
Objectif : Gère les soumissions, les approbations et les mises à jour des projets de démonstration
Déclencheur : Déclencheur Google Sheets (polling toutes les heures)
Ce qu’il fait :
- Surveille les feuilles Google pour les nouvelles soumissions de projets
- Valide les données de la soumission
- Envoie des notifications Discord pour l’approbation
- Télécharge les fichiers multimédias depuis Google Drive
- Met à jour
snippets/automations/showcase/showcaseData.jsxlorsqu’apprové
- Envoie des notifications aux soumissionnaires
Sortie : snippets/automations/showcase/showcaseData.jsx
Comment l’utiliser :
- Importer le fichier JSON dans une instance n8n
- Configurer les identifiants Google Sheets, Discord et GitHub
- Configurez un formulaire Google pour les soumissions
- Activer le workflow
Identifiants requis :
- OAuth2 de Google Sheets
- API du bot Discord
- Jeton d’API GitHub
- OAuth2 de Google Drive
Dépendances :
- Formulaire Google pour les soumissions de projet
- Feuille Google pour le suivi des soumissions
- Serveur Discord pour le workflow d’approbation
Prise en charge des problèmes Discord (Phase 1)
Fichier : snippets/automations/scripts/n8n/Discord-Issue-Intake.json
Statut : ✅ Prêt à importer (par défaut désactivé)
Objectif : Gère l’entrée des commandes slash de Discord (/docs-issue) et transmet les charges utiles normalisées des problèmes à GitHub Actions.
Déclencheur : webhook d’interactions Discord (POST)
Ce que cela fait :
- Vérifie les signatures des requêtes Discord
- Applique la liste autorisée des canaux et les limites de fréquence par utilisateur
- Collecte les champs longs via une fenêtre contextuelle
- Affiche un aperçu avec des étiquettes déduites + boutons Confirmer/Annuler
- Envoie
repository_dispatch à GitHub (discord-issue-intake)
- Interroge la création de l’issue et envoie un message de suivi avec l’URL de l’issue
Manuel d’exécution :
snippets/assets/scripts/n8n/README-discord-issue-intake-workflow.md
Variables d’environnement requises :
DISCORD_PUBLIC_KEY
ALLOWED_CHANNEL_IDS
GITHUB_DISPATCH_TOKEN
GITHUB_OWNER
GITHUB_REPO
GITHUB_DISPATCH_EVENT_TYPE
SECURITY_REPORT_URL
RATE_LIMIT_WINDOW_SEC
RATE_LIMIT_MAX
DISCORD_ISSUE_SCHEMA_VERSION
GITHUB_POLL_ATTEMPTS
GITHUB_POLL_DELAY_MS
Flux de travail n8n supplémentaires (Alternative à GitHub Actions)
Les flux de travail n8n suivants fournissent des implémentations alternatives à GitHub Actions. Les deux sont maintenus pour la flexibilité :
- Ghost-to-Mintlify.json - Récupère les articles de blog Ghost (alternative à
update-ghost-blog-data.yml)
- Forum-To-Mintlify-Latest-Topics.json - Récupère les sujets du forum (alternative à
update-forum-data.yml)
- YouTube-To-Mintlify.json - Récupère les vidéos YouTube (alternative à
update-youtube-data.yml)
- Discord_Announce_to_Mintlify.json - Récupère les annonces Discord (n8n uniquement - pas d’équivalent GitHub Action)
- Discord-Issue-Intake.json - Relais d’entrée de problème Discord (associé à)
.github/workflows/discord-issue-intake.yml)
Repository Configuration: Some n8n workflows may be configured to write to DeveloperAlly/livepeer-automations instead of livepeer/docs. Before activating, verify the GitHub node is configured to write to the correct repository (livepeer/docs) and branch (docs-v2).
Flux de travail utiles
Convertisseur MP4 en GIF
Fichier : snippets/automations/scripts/n8n/mp4-to-gif.json
Objectif : Convertit les vidéos MP4 au format GIF via un webhook
**Déclencheur :**Webhook (requête POST)
Ce qu’il fait :
- Accepte une URL vidéo ou un chemin local
- Télécharge la vidéo (si une URL est fournie)
- Convertit en GIF à l’aide de FFmpeg
- Renvoie le fichier GIF ou le chemin du fichier
Comment utiliser :
- Importer le fichier JSON dans une instance n8n
- Configurer l’URL du webhook
- Envoyer une requête POST avec l’URL de la vidéo ou le chemin local
- Receiver GIF en réponse
Paramètres :
video_url (facultatif) - URL du fichier vidéo
local_path (facultatif) - Chemin d’accès au fichier local
fps (par défaut : 10) - Images par seconde
width (par défaut : 480) - Largeur de sortie
start_time (par défaut : “0”) - Heure de départ dans la vidéo
duration (facultatif) - Durée à convertir
optimize (par défaut : true) - Utiliser l’optimisation de palette
output_path (facultatif) - Chemin du fichier de sortie
Scripts
Les scripts sont organisés en plusieurs répertoires en fonction de leur objectif. Tous les scripts utilisent la détection de la racine du dépôt basée sur git avec un retour àpaths.config.json.
Scripts de génération de contenu
Générer les métadonnées SEO
Fichier : tools/scripts/snippets/generate-seo.js
Objectif : Génère et met à jour automatiquement les métadonnées SEO pour les pages de documentation MDX
Utilisation :
# Dry run (preview changes)
node tools/scripts/snippets/generate-seo.js --dry-run
# Process all files
node tools/scripts/snippets/generate-seo.js
# Process single file
node tools/scripts/snippets/generate-seo.js --file=v2/home/mission-control.mdx
Ce que cela fait :
- Analyse tous les fichiers MDX dans
v2/pages/
- Génère
keywords à partir du chemin du fichier, du titre et de la description
- Ajoute
og:image en utilisant des images de prévisualisation sociales spécifiques au domaine ou par défaut
- Préserve les métadonnées SEO existantes (ne remplace pas si elles sont déjà présentes)
Sortie : Mettre à jour le frontmatter dans les fichiers MDX
Quand exécuter :
- Après la création de nouvelles pages de documentation
- Lors de la mise à jour des titres ou des descriptions de page
- Avant le déploiement pour améliorer le SEO
Générer la documentation de l’API
Fichier : tools/scripts/snippets/generate-api-docs.sh
Objectif : Génère la documentation Mintlify de l’API à partir d’un fichier de spécification OpenAPI
Utilisation :
./tools/scripts/snippets/generate-api-docs.sh <openapi-spec> <output-dir> <api-name> [github-repo-url]
Exemple :
./tools/scripts/snippets/generate-api-docs.sh \
ai/worker/api/openapi.yaml \
v2/pages/04_gateways/api-reference/AI-API \
"AI API" \
"https://github.com/livepeer/ai-worker"
Ce qu’il fait :
- Lit un spécimen OpenAPI (YAML ou JSON)
- Crée unepage de destination avec des CardGroups liés à chaque point de terminaison (regroupés par balises)
- Créepages MDX individuelles pour chaque point de terminaison avec
openapi: METHOD /path frontmatter
- Génère un fragment de navigation docs.json prêt à copier-coller
Structure de sortie :
output-dir/
├── ai-api.mdx # Landing page with Base URLs + CardGroups
├── text-to-image.mdx # openapi: post /text-to-image
├── image-to-image.mdx # openapi: post /image-to-image
└── ...
Après l’exécution : Copiez le fragment JSON généré dans votre docs.json navigation.
Mettre à jour la bibliothèque de composants
Fichier : tools/scripts/snippets/update-component-library.sh
Objectif : Génère automatiquement la page d’index de la bibliothèque de composants à partir de la structure actuellesnippets/components/ du dossier
Utilisation :
./tools/scripts/snippets/update-component-library.sh
Ce qu’il fait :
- Analyse
snippets/components/ structure de répertoire
- Génère un
<Tree> composant avec tous les dossiers et fichiers
- Met à jour
snippets/snippetsWiki/componentLibrary/index.mdx
Sortie : Met à jour la section générée automatiquement danssnippets/snippetsWiki/componentLibrary/index.mdx entre les AUTO-GENERATED commentaires.
Quand exécuter :
- Après l’ajout de nouveaux composants à
snippets/components/
- Après la réorganisation de la structure du dossier des composants
- Après le renommage ou la suppression des fichiers de composant
Scripts de récupération des données
Récupérer les spécifications OpenAPI
Fichier : tools/scripts/snippets/fetch-openapi-specs.sh
**Objectif :**Récupère les fichiers de spécifications OpenAPI du dépôt livepeer/ai-runner
Utilisation :
./tools/scripts/snippets/fetch-openapi-specs.sh
Ce qu’il fait :
- Télécharge les spécifications OpenAPI depuis des dépôts externes
- Enregistre dans
ai/worker/api/
Télécharge dansai/worker/api/:
openapi.yaml - Spécification de l’API AI Runner
gateway.openapi.yaml - Spécification de l’API AI Gateway
Récupérer la documentation externe
Fichier : tools/scripts/snippets/fetch-external-docs.sh
**Objectif :**Récupère les fichiers de documentation externe depuis d’autres dépôts Livepeer et les nettoie pour les rendre compatibles avec MDX
Utilisation :
./tools/scripts/snippets/fetch-external-docs.sh
Ce qu’il fait :
- Télécharge la documentation depuis des dépôts externes
- Nettoie le contenu pour la compatibilité MDX
- Sauvegarde dans
snippets/external/
Télécharge danssnippets/external/:
wiki-readme.mdx - livepeer/wiki README
awesome-livepeer-readme.mdx - livepeer/awesome-livepeer README
whitepaper.mdx - Livepeer Whitepaper
gwid-readme.mdx - videoDAC/livepeer-gateway README
box-additional-config.mdx - configuration de la boîte go-livepeer
La nettoyage inclut :
- Échapper les accolades pour MDX
- Supprimer les commentaires HTML
- Convertir les balises HTML en équivalents Markdown
Récupérer les échanges LPT
Fichier : tools/scripts/snippets/fetch-lpt-exchanges.sh
**Objectif :**Récupère les listes d’échanges LPT de l’API CoinGecko et met à jour la page des échanges
Utilisation :
./tools/scripts/snippets/fetch-lpt-exchanges.sh
Ce qu’il fait :
- Récupère des données en temps réel de l’API CoinGecko pour le jeton Livepeer
- Génère un tableau stylisé des échanges CEX avec le volume et les scores de confiance
- Ajoute les informations DEX et les adresses de contrat
- Mises à jour
v2/pages/06_delegators/token-resources/lpt-exchanges.mdx
Quand exécuter :
- Périodiquement pour mettre à jour les listes d’échanges
- Avant les grandes releases pour s’assurer que les données sont à jour
Scripts de test
Script de balayage du navigateur V2 (test:v2-pages)
Fichier : tools/scripts/test-v2-pages.js
**Objectif :**Teste toutes les pages v2 pour les erreurs de console et les problèmes d’affichage
Utilisation :
cd tools && npm run test:v2-pages
# or
node tools/scripts/test-v2-pages.js
Ce que cela fait :
- Extrait toutes les pages v2 de
docs.json
- Démarre le serveur de développement Mintlify (si ce n’est pas déjà en cours)
- Teste chaque page avec Puppeteer
- Signale les erreurs de la console, les erreurs de page et les échecs de requête
- Génère un rapport JSON détaillé
Prérequis :
npx mintlify devdoit être en cours d’exécution (ou définir la variable d’environnement)MINT_BASE_URL)
- Puppeteer installé (
npm install)
Sortie :
- Sortie de la console avec le statut pass/échec
v2-page-test-report.json - Résultats détaillés des tests
Variables d’environnement :
MINT_BASE_URL - URL de base pour le serveur de développement Mintlify (par défaut : http://localhost:3000)
Scripts GitHub (utilisés par les workflows)
Ces scripts sont utilisés par les workflows GitHub et ne devraient généralement pas être exécutés manuellement :
.github/scripts/fetch-forum-data.js - Récupère les données du forum (utilisé par update-forum-data.yml)
.github/scripts/fetch-ghost-blog-data.js - Récupère les données du blog Ghost (utilisé par update-ghost-blog-data.yml)
.github/scripts/fetch-youtube-data.js - Récupère les données de YouTube (utilisé par update-youtube-data.yml)
Hooks de pré-validation
Les hooks de pré-validation s’exécutent automatiquement lorsque vous essayez de valider du code. Ils assurent le respect du guide de style et valident la qualité du code.
Installation
OBLIGATOIRE : Vous devez installer les hooks avant de faire tout commit :
Ou manuellement :
cp .githooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Ce qui est vérifié
Le hook pré-validation vérifie :
- ❌ Utilisation de ThemeData - Blocs dépréciés
ThemeData imports from themeStyles.jsx
- ❌ Couleurs codées en dur - Avertit sur les couleurs hexadécimales qui devraient utiliser les propriétés CSS personnalisées
- ⚠️ Imports relatifs - Avertit sur les chemins relatifs (il faut utiliser des chemins absolus à partir de la racine)
- ⚠️ @mintlify/components imports - Avertit sur les imports inutiles (les composants sont globaux)
- ⚠️ imports de hooks React - Avertit sur les importations React inutiles (les hooks sont globaux)
Scripts de vérification
Le hook s’exécute également.githooks/verify.sh qui vérifie :
- ✅ Syntaxe MDX - Valide le frontmatter et la structure MDX basique
- ✅ Syntaxe JSON - Valide que les fichiers JSON sont parseables
- ✅ Syntaxe des scripts shell - Valide les scripts shell avec
bash -n
- ✅ la syntaxe JavaScript - Valide les fichiers JS avec
node --check
- ✅ Mintlify config - Valide
docs.json/mint.json syntaxe
- ✅ ** Chemins d’importation** - Assure que les imports de morceaux utilisent des chemins absolus
- ✅ Validation du navigateur - Teste les fichiers MDX dans un navigateur sans interface graphique (si “
npx mintlify dev est en cours d’exécution)
Ce qui se passe en cas de violation
Si vous essayez de valider du code qui viole le guide de style :
- Le commit est bloqué
- Vous recevez un message d’erreur détaillé listant toutes les violations
- Vous devez corriger les violations avant de valider à nouveau
Validation du navigateur
Les hooks incluent une validation du navigateur sans tête qui teste si les fichiers MDX s’affichent réellement dans le navigateur. Cela détecte :
- Erreurs de runtime dans les composants
- Imports ratés
- Erreurs de console
- Échecs de rendu
**Remarque :**La validation du navigateur nécessite npx mintlify dev pour être exécuté. Si ce n’est pas le cas, le contrôle est ignoré (ne bloque pas le commit).
Bypass des hooks (non recommandé)
⚠️ AVERTISSEMENT : Ne bypassez les hooks que si vous avez une raison légitime et que vous comprenez les conséquences.
Pour des éditions intentionnelles.allowlist par un humain, utilisez :
git commit -m "Update .allowlist" --trailer "allowlist-edit=true"
Cela maintient toutes les autres vérifications pré-validation activées.
Pour les suppressions de fichiers intentionnelles par un humain, utilisez :
git commit -m "Remove obsolete files" --trailer "allow-deletions=true"
Cela maintient également toutes les autres vérifications pré-validation activées.
# Bypass pre-commit hook
git commit --no-verify -m "message"
Pourquoi cela est déconseillé :
- Violent la conformité au guide de style
- Peut introduire des erreurs qui cassent la construction
- Rendre la revue de code plus difficile
- Peut causer des problèmes pour d’autres développeurs
Pour plus de détails sur les hooks, voir le Documentation des Git Hooks.
Exécution des automatisations
Exécution manuelle
GitHub Actions
- Aller àActionsonglet dans le dépôt GitHub
- Sélectionner le workflow que vous souhaitez exécuter
- Cliquez sur **“Exécuter le workflow”**bouton
- Sélectionnez la branche et tous les paramètres requis
- Cliquez sur “Exécuter le workflow” pour commencer
Scripts
La plupart des scripts peuvent être exécutés directement à partir de la ligne de commande :
# From repository root
node tools/scripts/snippets/generate-seo.js
./tools/scripts/snippets/fetch-lpt-exchanges.sh
npm run test:v2-pages
Workflows n8n
- Importer un fichier JSON dans une instance n8n
- Configurer les identifiants et les paramètres
- Activer le workflow
- Surveiller les exécutions dans le tableau de bord n8n
Exécution planifiée
- GitHub Actions - Utiliser
schedule déclencheur avec la syntaxe cron
- Workflows n8n - Utiliser le nœud déclencheur de planification avec un intervalle ou un cron
Surveillance
- GitHub Actions - Vérifier l’onglet Actions pour les exécutions de workflow et les journaux
- n8n - Vérifiez le tableau de bord n8n pour l’historique d’exécution
- Scripts - Vérifiez la sortie du terminal et les fichiers générés
Dépannage
GitHub Actions ne s’exécute pas
**Problème :**Le workflow ne se déclenche pas lors d’un push/PR
Solutions :
- Vérifiez la syntaxe du fichier de workflow (le YAML doit être valide)
- Vérifiez que les conditions de déclenchement correspondent à votre branche/événement
- Consultez l’onglet Actions pour les messages d’erreur
- Assurez-vous que le fichier de workflow est dans
.github/workflows/ répertoire
Scripts échouant
Problème : Erreurs de script ou non-production de sortie attendue
Solutions :
- Vérifiez que le script a les permissions d’exécution :
chmod +x script.sh
- Vérifier que la version de Node.js correspond aux exigences du script
- Vérifier les dépendances manquantes :
npm install
- Examiner la documentation du script pour les prérequis
- Exécuter avec un mode détaillé si disponible
Le hook de pré-validation ne s’exécute pas
**Problème :**Le hook ne s’exécute pas lors de la validation
Solutions :
- Vérifier que le hook est installé :
ls -la .git/hooks/pre-commit
- Vérifier que le hook est exécutable :
chmod +x .git/hooks/pre-commit
- Réinstaller :
./.githooks/install.sh
- Vérifier la présence de
.git/hooks/pre-commit le fichier existe
Problèmes de workflow n8n
**Problème :**Le workflow échoue ou ne met pas à jour les fichiers
Solutions :
- Vérifiez que le workflow est actif dans le tableau de bord n8n
- Vérifier que les identifiants sont configurés correctement
- Vérifier les journaux d’exécution dans n8n
- Vérifier que le jeton GitHub a des autorisations d’écriture
- Vérifier que le nom de la branche correspond à la configuration du workflow
Secrets/Clés manquants
**Problème :**Le workflow échoue avec des erreurs d’authentification
Solutions :
- Accédez au dépôtParamètres → Secrets et variables → Actions
- Ajoutez les secrets requis (par exemple,
YOUTUBE_API_KEY, SPEAKEASY_API_KEY)
- Vérifier que les noms des secrets correspondent exactement au fichier de workflow
- Pour n8n, configurer les identifiants dans le tableau de bord n8n
Bonnes pratiques
Quand utiliser quoi
GitHub Actions - Utiliser pour :
- ✅ Récupération de données simple (appels d’API, mises à jour de fichiers)
- ✅ Opérations natives du dépôt (validations, PRs, vérifications)
- ✅ Workflows CI/CD (tests, validation)
- ✅ Tâches planifiées qui n’ont besoin que d’un accès GitHub
- ✅ Lorsque vous voulez tout dans le dépôt
n8n - Utiliser pour :
- ✅ Workflows multi-étapes complexes
- ✅ Intégrations de services externes (Discord, Google Sheets, Google Forms)
- ✅ Workflows d’approbation avec notifications
- ✅ Workflows nécessitant une interaction utilisateur
- ✅ Lorsque vous avez besoin d’une gestion visuelle du workflow
Scripts - Utilisé pour :
- ✅ Tâches ponctuelles et génération de contenu
- ✅ Développement et tests locaux
- ✅ Mises à jour manuelles des données
Hooks de pré-validation - Utiliser pour :
- ✅ Enforcer la qualité du code et la conformité au guide de style
- ✅ Détecter les erreurs avant le commit
Maintenir les automatisations à jour
- Examiner les rapports d’audit - Vérifiez
docs/PLAN/reports/ pour le statut d’automatisation
- Testez avant de déployer - Exécutez des scripts localement avant de valider
- Surveillez les exécutions de workflow - Vérifiez régulièrement les tableaux de bord GitHub Actions et n8n
- Mettre à jour la documentation - Gardez ce guide à jour lorsque les automatisations changent
Considérations sur la sécurité
- Ne jamais valider des secrets - Utilisez GitHub Secrets ou les identifiants de n8n
- Examiner les validations automatiques - Faites attention aux scripts qui valident automatiquement
- Limitez les autorisations des jetons - Utilisez un accès à faible privilège pour les jetons API
- Effectuez des audits régulièrement - Revoyez périodiquement l’accès et les autorisations d’automatisation
Documentation associée
Obtenir de l’aide
Si vous rencontrez des problèmes avec les automatisations :
- Consultez ce guide pour les étapes de dépannage
- Examinez le rapport d’audit pour les problèmes connus
- Consultez la documentation du workflow/script
- Examinez les journaux d’exécution (GitHub Actions ou n8n)
- Demandez dans le dépôt ou les canaux de la communauté