Communitygithub.com

exiao/skills

Créez des vidéos de démonstration de produits en automatisant les interactions navigateur et en capturant des images. Utilisez cette compétence lorsque l'utilisateur souhaite enregistrer une démo, une procédure pas à pas, une présentation produit ou une vidéo interactive d'une application web. Prend en charge le screencast Playwright CDP pour une capture de haute qualité et FFmpeg pour l'encodage vidéo.

Qu'est-ce que skills ?

Cette compétence permet de créer des vidéos de démonstration produits soignées en automatisant les interactions navigateur via Playwright. Elle planifie la séquence de la démo, capture des images JPEG via le screencast CDP, puis les encode en vidéo avec FFmpeg. Idéale pour des démos, procédures pas à pas, présentations produits ou vidéos interactives d'applications web, elle prend en charge les formats MP4, GIF et WebM. Attention toutefois à la consommation de contexte (200k tokens) : il est recommandé de capturer toutes les images d'abord, puis de les analyser séparément, et d'éviter les agents parallèles qui interféreraient avec l'état de navigation.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/exiao/skills/tree/HEAD/video/demo-video

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Créateur de Vidéos de Démonstration

Créez des vidéos de démonstration produits soignées en automatisant les interactions navigateur.

Aperçu

  1. Planifiez la séquence de la démo (pages, interactions, timing)
  2. Enregistrez les images via le screencast Playwright CDP
  3. Encodez en vidéo avec FFmpeg

Démarrage Rapide

Prérequis

  • Navigateur OpenClaw en cours d'exécution (browser action=start profile=clawd)
  • Application accessible via le navigateur (localhost ou à distance)
  • FFmpeg installé pour l'encodage

Workflow d'enregistrement

  1. Démarrez le navigateur OpenClaw s'il n'est pas en cours
  2. Naviguez vers l'application manuellement ou via browser action=open
  3. Personnalisez scripts/record-demo.js pour l'application cible
  4. Exécutez : node scripts/record-demo.js
  5. Encodez : bash scripts/frames-to-video.sh

Planification d'une Démo

Consultez references/demo-planning.md pour des conseils sur :

  • La structuration des séquences de démo
  • Le timing et le rythme
  • Les modèles d'interaction
  • Ce qui rend les démos convaincantes

Scripts

scripts/record-demo.js

Script Playwright modèle qui :

  • Se connecte au navigateur OpenClaw via CDP
  • Démarre la capture par screencast (images JPEG)
  • Exécute la séquence de démo (navigation, clics, survols, saisie)
  • Sauvegarde les images dans le répertoire de sortie

Personnalisez pour chaque démo :

  • Tableau DEMO_SEQUENCES - définissez les pages et interactions
  • OUTPUT_DIR - où sauvegarder les images
  • FRAME_SKIP - ignorer toutes les N images (plus bas = plus d'images)

scripts/frames-to-video.sh

Script d'encodage FFmpeg avec préréglages :

  • mp4 - H.264, bon équilibre qualité/taille (par défaut)
  • gif - GIF animé pour intégration
  • webm - VP9, fichiers plus petits

Utilisation : ./frames-to-video.sh [répertoire_entrée] [nom_sortie] [format]

Modèles d'Interaction

// Navigation
await page.goto('http://localhost/dashboard');
await page.waitForTimeout(2000);

// Cliquer sur un élément
await page.locator('button:has-text("Create")').click();
await page.waitForTimeout(500);

// Survol (afficher infobulles, états de survol)
await page.locator('.card').first().hover();
await page.waitForTimeout(1000);

// Saisir du texte
await page.locator('input[placeholder="Search"]').fill('query');
await page.waitForTimeout(500);

// Appuyer sur une touche
await page.keyboard.press('Enter');
await page.keyboard.press('Escape');

// Défiler
await page.evaluate(() => window.scrollBy(0, 300));

Conseils

  • Timing : 2s au chargement de la page, 0,5-1s entre les interactions, 1,5s pour afficher les résultats
  • Saut d'images : Utilisez 3-5 pour une vidéo fluide, 8-10 pour des fichiers plus petits
  • Qualité : 85-90 JPEG équilibre taille et clarté
  • Résolution : La taille de la fenêtre du navigateur détermine la résolution de sortie
  • Boucles : Les GIFs doivent boucler parfaitement - terminez là où vous avez commencé

Pièges

  • Captures d'écran vs vidéo : Si l'utilisateur a seulement besoin de voir une fonctionnalité, prenez des captures d'écran en ligne plutôt que d'enregistrer une vidéo complète. Vérifiez d'abord browser action=tabs profile=clawd — si l'onglet de l'application est déjà ouvert, prenez les captures d'écran directement sans sous-agent.
  • Limite de contexte : Les boucles d'enregistrement avec beaucoup de captures d'écran consomment rapidement le contexte (limite de 200k tokens). Gardez la portée étroite : enregistrez d'abord toutes les images, puis analysez — n'intercalez jamais la capture d'images avec l'analyse. Si le contexte est serré, écrivez les images sur disque et analysez dans un passage séparé.
  • Risque d'agents parallèles : Ne lancez pas plusieurs agents de démonstration simultanément sur le même onglet de navigateur — ils interféreraient avec l'état de navigation des uns et des autres.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills associés