Communitygithub.com

geoqiao/short-video-skills

Publier des vidéos courtes sur Douyin, Video Account (WeChat) et Xiaohongshu (Bilibili : seulement le script). Lit les suggestions de recherche de Douyin, Xiaohongshu et Google, rédige le titre, la description, les hashtags, le texte de couverture et le commentaire épinglé, puis utilise playwright-cli pour remplir le formulaire de publication dans un Chrome déjà connecté, télécharge la vidéo et la couverture, et remplit la collection, la localisation, la déclaration IA, les tendances et les activités. Fonctionne quelle que soit la méthode de création de la vidéo. S'arrête par défaut avant le bouton de publication, et ne clique que lorsque l'utilisateur demande explicitement « publier ».

Qu'est-ce que short-video-skills ?

Ce skill pour agents IA, nommé `geoqiao/short-video-skills`, automatise la publication de vidéos courtes sur les plateformes chinoises Douyin, Video Account (WeChat) et Xiaohongshu (Bilibili uniquement pour le script). Il est conçu pour les développeurs et créateurs de contenu utilisant des assistants comme Claude Code ou Cursor. Le processus comporte deux étapes principales : d'abord, la rédaction du contenu (titre, description, hashtags, texte de couverture, commentaire épinglé) basée sur les suggestions de recherche en temps réel de Douyin, Xiaohongshu et Google (via `scripts/douyin-suggest.js`, `scripts/xhs-suggest.js` et `node scripts/google-suggest.mjs`). Ensuite, le remplissage automatisé du formulaire de publication via `playwright-cli` en se connectant à un navigateur Chrome déjà authentifié avec l'extension appropriée. Le skill ne publie jamais sans confirmation explicite de l'utilisateur : il remplit les champs (vidéo, couverture, collection, emplacement, déclaration IA) mais s'arrête avant le bouton « publier ». Après publication, il vérifie la cohérence des collections et enregistre l'heure. Il intègre des règles spécifiques à chaque plateforme (sélecteurs, pièges, options en anglais) et des bonnes pratiques comme éviter les erreurs de focus en ramenant l'onglet au premier plan, utiliser des scripts d'injection pour le téléchargement de fichiers (car `setInputFiles` n'est pas disponible en mode extension), et sélectionner les éléments de liste déroulante avec une correspondance exacte. Le skill génère un résumé du contenu publié (intention principale, mots-clés utilisés, champs remplis) pour faciliter le suivi et l'itération.

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

Demander à votre IA préférée

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

Documentation

Publier des vidéos courtes

Deux étapes : d'abord rédiger le contenu, puis remplir le formulaire. Le contenu est écrit dans le fichier post.md du répertoire de l'épisode (structure dans references/post-template.md), et le formulaire est rempli en suivant ce fichier. Les règles de la plateforme et les références se trouvent dans references/platform-rules.md ; avant la publication, la page de soumission fait foi.

1. Rédaction du contenu

Le contenu est rédigé en fonction de l'intention de recherche : d'abord confirmer que les spectateurs posent réellement la question et utilisent la même appellation, puis faire en sorte que le titre, le texte de couverture et la première phrase de la description répondent à la même question. Sur Douyin et Video Account, la majeure partie du trafic provient des recommandations et non de la recherche ; ces mots servent principalement à aider le système à diffuser la vidéo aux bonnes personnes.

Chercher d'abord les suggestions de recherche

  1. Lister les questions auxquelles cette vidéo peut répondre. Chaque question correspond à une intention : connaître le protagoniste ("Qu'est-ce que X ?", "X est-il bon ?"), choisir un outil ("Comparaison X", "Lequel est le meilleur"), concept ("Que signifie ce terme ?"), comment faire ("Comment utiliser X").
  2. Lire les suggestions pour confirmer que les spectateurs cherchent vraiment de cette manière et utilisent cette appellation. Les suggestions n'ont pas de volume de recherche, elles indiquent seulement que des utilisateurs recherchent. Relire le jour de la publication, ne pas utiliser des résultats sauvegardés plusieurs jours auparavant.
    • Douyin : Connecter le Chrome de l'utilisateur (voir « Connecter le navigateur » ci-dessous), ouvrir un onglet www.douyin.com et s'y rendre, modifier SEEDS dans scripts/douyin-suggest.js, puis exécuter playwright-cli -s=chrome --raw run-code --filename=scripts/douyin-suggest.js.
    • Xiaohongshu : Ouvrir un onglet www.xiaohongshu.com/explore, modifier SEEDS dans scripts/xhs-suggest.js puis exécuter. Recharger la page pour chaque mot (environ 6 secondes par mot), ne pas dépasser 25 mots à la fois.
    • Google : node scripts/google-suggest.mjs '[["mot graine","zh-CN"],["seed","en"]]' (sans navigateur).
    • Ces trois scripts sont en lecture seule. Ne fermer que les onglets ouverts par eux.
  3. Enregistrer les résultats bruts dans un fichier JSON avec la date, et citer le nom du fichier dans le contenu.
  4. L'intention principale et celle qui correspond parfaitement au contenu sont écrites dans le titre, la couverture et la première phrase de la description. Les intentions auxquelles la vidéo ne répond que partiellement (par exemple, comparer seulement deux modèles mais répondre à "Lequel est le meilleur") sont uniquement placées dans les hashtags, sinon les spectateurs qui cliquent partiront immédiatement. Les questions qui apparaissent répétitivement dans les suggestions mais auxquelles la vidéo ne répond pas ne sont pas forcées ; elles sont notées comme nouveau sujet.

Plusieurs expériences validées maintes fois :

  • Les termes techniques en anglais comme mot principal unique ne trouvent souvent pas de contenu pertinent. Utiliser la question en chinois pour la couverture, et mettre l'anglais dans la description et les hashtags.
  • Lorsque l'appellation utilisée dans la vidéo diffère de celle des spectateurs, le titre, la couverture et la voix off suivent les spectateurs (par exemple, les spectateurs cherchent "contexte pourrissant" et non "contexte corrompu").
  • Les appellations diffèrent souvent entre les deux plateformes ; utiliser celle qui apparaît sur les deux.

Comment rédiger

  • Titre : La question que se posent les spectateurs, avec une conclusion concrète. Utiliser l'appellation qu'ils recherchent. Les termes que personne ne cherche n'entrent pas dans le titre. Le titre, le texte de couverture et la première phrase de la voix off disent la même chose.
  • Description : La première phrase répète la question du titre avec conclusion et chiffres ; puis énumérer les points abordés dans la vidéo, inclure les termes et chiffres qui y apparaissent ; enfin, mentionner les conditions limitant les sources de données. Ajouter la déclaration IA si utilisée (par exemple "La voix off est synthétisée par IA"). Écrire pour les spectateurs, pas le processus de création.
  • Hashtags : L'appellation exacte du protagoniste, les objets comparés dans la vidéo, un mot de catégorie, un mot large pertinent pour le public cible. Utiliser uniquement les mots effectivement mentionnés dans la vidéo. Lors du remplissage, taper #mot sur la page de publication pour voir le volume de recherche ; les mots trop généraux avec des milliards de vues (par exemple #IA) doivent être changés immédiatement. Au maximum 5 hashtags sur Douyin en version web (les noms de séries sont confiés aux collections, pas aux hashtags) ; Video Account peut en accepter un ou deux de plus, inclure le nom de la série.
  • Commentaire épinglé : Une question à laquelle le spectateur peut répondre par sa propre expérience, en écho à la question posée à la fin de la vidéo.
  • Texte de couverture : Titre sur deux lignes maximum, avec un accroche chiffrée ou une conclusion ; utiliser l'appellation en chinois.
  • Le contenu, la couverture, la voix off et les images ne doivent contenir ni URL, ni comptes externes ; ne pas dire "allez voir sur ce site" ou "recherchez ceci". On peut inviter à commenter, suivre, ou consulter les collections.
  • Si l'on utilise une voix off IA, des images générées par IA ou un avatar numérique, faire une déclaration IA ; la voix off de code-video est synthétisée par IA, donc toute vidéo créée avec code-video nécessite une déclaration. Les noms des options sur chaque plateforme sont dans references/platform-rules.md.

2. Remplir le formulaire

Sélecteurs, pièges et astuces par plateforme :

  • Centre de création Douyin : references/douyin.md
  • Assistant Video Account : references/weixin.md
  • Plateforme de création Xiaohongshu : references/xiaohongshu.md

Règles

  • Ne pas publier à la place de l'utilisateur. Remplir le formulaire et s'arrêter avant le bouton de publication, attendre que l'utilisateur vérifie. Ne cliquer que lorsque l'utilisateur dit explicitement « publier » pour cet épisode ; l'autorisation pour l'épisode précédent ne s'étend pas au suivant.
  • Après avoir cliqué sur publier, vérifier que la nouvelle œuvre apparaît dans la liste des œuvres, que le numéro de collection et d'épisode correspondent, puis enregistrer l'heure de publication dans post.md.
  • Ne pas modifier ni supprimer le contenu déjà publié sur la plateforme, sauf demande explicite de l'utilisateur.
  • Pour les champs qui peuvent changer à chaque fois (localisation, collection, activité), si incertain, demander à l'utilisateur.
  • Ne fermer que les onglets ouverts par soi-même. Ne pas recharger un onglet contenant un formulaire non publié, ni y exécuter d'autres scripts.

Connecter le navigateur

Nécessite playwright-cli et son extension Chrome associée, l'utilisateur étant connecté au tableau de bord du créateur de chaque plateforme dans Chrome.

playwright-cli -s=chrome attach --extension=chrome   # L'utilisateur clique sur « Autoriser » sur la popup de l'extension
playwright-cli -s=chrome tab-new <URL de la page de publication>
playwright-cli -s=chrome tab-list
playwright-cli -s=chrome tab-select <numéro>            # tab-new ne change pas la page cible de run-code
playwright-cli -s=chrome --raw run-code --filename=<script.js>
playwright-cli -s=chrome screenshot --filename=<image.png>

Le script de run-code est une expression async page => { … } dont la valeur de retour est affichée. En cas de déconnexion de la session, se rattacher ; les onglets précédemment ouverts disparaissent ensemble, et le formulaire doit être rempli depuis le début.

Pratiques générales

  • **Chaque script commence par await page.bringToFront(). ** Si l'utilisateur utilise Chrome en même temps, la page de publication est souvent mise en arrière-plan ; le glisser-déposer et les clics attendent jusqu'au timeout ; les entrées clavier en attente avant le timeout sont saisies après le retour au premier plan, ce qui peut déformer la description. En cas de timeout, vider d'abord la zone de description avant de la remplir à nouveau.
  • **Une étape par script, vérifier après chaque étape. ** À la fin de chaque étape, lire innerText de la zone concernée ou prendre une capture d'écran, confirmer que la valeur a vraiment changé, puis passer à l'étape suivante.
  • Télécharger la vidéo : Essayer d'abord playwright-cli -s=chrome drop "<sélecteur de zone de téléchargement>" --path=<mp4>. Si le glisser-déposer ne déclenche pas le téléchargement, utiliser un script d'injection dans scripts/ : il convertit le fichier en base64 et l'écrit dans un script run-code, utilise DataTransfer pour le placer dans l'input file et déclenche change. En mode extension, setInputFiles et la boîte de dialogue de sélection de fichier ne sont pas disponibles.
  • Télécharger la couverture : D'abord ouvrir la fenêtre modale de la couverture, puis exécuter le script d'injection. Les trois plateformes nécessitent deux images : une horizontale au format 4:3 et une verticale au format 3:4. Une couverture en 16:9 sera recadrée, tronquant le titre.
  • Listes déroulantes et champs de recherche : De nombreux champs ne sont visibles que lorsque la liste déroulante est dépliée. Lorsque fill ou click renvoie « element is not visible », cliquer d'abord sur la zone affichant la valeur actuelle (si nécessaire, utiliser boundingBox ou, dans evaluate, obtenir les coordonnées puis page.mouse.click), attendre l'apparition du champ, puis saisir. Pour les champs déclenchant une recherche, il faut taper caractère par caractère avec keyboard.type, car fill ne déclenche pas la recherche.
  • Sélectionner précisément les éléments de la liste : Utiliser une correspondance exacte du texte complet, ou dans evaluate, trouver un élément dont innerText correspond exactement, visible dans la zone de liste déroulante, puis cliquer sur ses coordonnées. Une recherche par texte partiel risque de cliquer sur le conteneur extérieur et de sélectionner un autre élément. Après la sélection, lire la valeur actuelle.
  • Boutons apparaissant uniquement au survol : D'abord page.mouse.move sur la carte, attendre une demi-seconde, puis cliquer sur la position du bouton.
  • Options en anglais : Certaines plateformes affichent des options en anglais (par exemple le marquage vidéo de Video Account) ; sélectionner selon le texte réellement affiché sur la page.

Après la publication

Sur le tableau de bord du créateur Douyin, consulter les « mots de recherche » et la part du trafic provenant de la recherche, comparer avec les mots choisis. Noter les vidéos dont la méthode de rédaction a été modifiée, pour distinguer ce qui a fonctionné lors de la prochaine comparaison. Les données quotidiennes peuvent être collectées avec le skill video-data.

À communiquer lors de la remise

  • L'intention principale du contenu, les suggestions utilisées, les mots non utilisés et la raison.
  • Ce qui a été rempli pour chaque plateforme : titre, nombre de hashtags, couverture, collection et numéro d'épisode, localisation, déclaration, tendance ou activité.
  • À quelle étape on s'est arrêté, les champs non remplis ou non conformes au contenu, et la raison.
  • Si la publication a été cliquée : heure de publication, résultat de la vérification de la liste des œuvres, numéro de collection.

Individual skills in this repo

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

Skills associés