Communitygithub.com

xhs-card-video

Crée des vidéos courtes au format 3:4 pour Xiaohongshu, à partir de captures d'écran X, d'un fond animé et d'une musique locale vérifiée, sans publication automatique.

Qu'est-ce que xhs-card-video ?

Ce skill permet de générer des vidéos courtes destinées à la plateforme Xiaohongshu (小红书), en combinant une capture d'écran d'un post X, un fond vidéo dynamique et une musique de fond locale pré-approuvée. Il ne publie rien automatiquement : le résultat est une paire de fichiers (une vidéo MP4 et un brouillon de publication Markdown) archivée dans un dossier hebdomadaire. Le skill est conçu pour les créateurs souhaitant produire des cartes visuelles 'sans visage' (sans voix-off, sous-titres ou overlay) tout en respectant des contraintes très strictes : cadre fixe 1080×1440 px, durée exacte de 8 secondes, une seule carte de capture d'écran avec un fond animé. Il s'appuie sur un pipeline de vérification rigoureux : inspection du contenu source, sélection de la musique via un système de score, validation géométrique et audit final via ffprobe. Le skill ne publie jamais sur les réseaux sociaux : l'upload en brouillon sur le centre de création Xiaohongshu ne se fait que sur demande explicite de l'utilisateur, et s'arrête à l'étape 'sauvegarder le brouillon'.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/dingchenhui0618-arch/agent-skills/tree/HEAD/skills/xhs-card-video

Demander à votre IA préférée

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

Documentation

Carte vidéo Xiaohongshu sans visage explicatif

C'est une chaîne de montage vidéo courte indépendante, spécialisée dans l'assemblage "capture d'écran de contenu réel + fond de paysage animé + BGM locale" pour les brouillons Xiaohongshu. Elle ne modifie ni ne remplace le skill $explainer existant ; ce dernier reste en charge des vidéos 16:9, du doublage et des explications complètes.

Les lecteurs cibles sont des personnes souhaitant créer leur entreprise, apprendre l'IA, et possédant une compréhension commerciale et technique de base de l'IA. La capture d'écran n'est qu'un point d'entrée factuel ; la vraie valeur du contenu réside dans la traduction des insights de la capture en actions que ces lecteurs peuvent évaluer et exécuter.

Délimitations préalables

  • Chaque contenu ne livre à l'utilisateur que deux éléments : un fichier .mp4 ouvrable et un brouillon de publication .md portant le même titre. Les paires de fichiers de plusieurs contenus d'une même semaine peuvent être placées directement dans le même dossier hebdomadaire ; le manifeste de traçabilité interne n'est pas livré et n'est pas placé dans le dossier hebdomadaire.
  • Le dossier par défaut est 说明小红书XX/第N周/. Les vidéos finalisées et les brouillons de publication d'une même semaine sont placés directement dans le dossier hebdomadaire, sans sous-dossier par contenu.
  • Le brouillon de publication a toujours publish_status: draft ; avant la livraison finale, title_status doit être locked. Par défaut, pas de connexion, téléchargement, publication, commentaire, like ou abonnement automatiques. Ce n'est que sur demande explicite de l'éditeur que la vidéo finalisée et le brouillon de publication peuvent être téléchargés dans le centre de création Xiaohongshu connecté et enregistrés comme brouillon, sans jamais cliquer sur "publier". Si l'utilisateur confirme une liste de comptes candidats, ils peuvent être suivis manuellement un par un dans X connecté, sans script ni automatisation de croissance d'interaction.
  • Le contenu X doit provenir de captures d'écran fournies par l'utilisateur, ou de posts visibles dans l'application X connectée. Ne pas contourner les CAPTCHA, les paywalls ou les autorisations ; ne pas réorganiser le texte des captures d'écran, ni inventer des comptes, des chiffres ou des dates.
  • Par défaut, aucune ligne de source X n'est incluse, sauf demande contraire de l'utilisateur ; la source et la licence ne sont conservées que dans les métadonnées de la bibliothèque de matériel.
  • Une capture d'écran est la seule carte d'information. Pas de sous-titres mot à mot, barres de titre, autocollants, logos, générique d'ouverture, générique de fin, CTA, deuxième carte ou personnage.
  • En l'absence de preuves factuelles de l'utilisateur, le titre et le texte ne peuvent être que des résumés clairement étiquetés ; ne pas présenter des suppositions comme des faits.
  • Chaque vidéo finalisée doit avoir un run_manifest.json interne en dehors du dossier hebdomadaire, enregistrant la capture d'écran, le fond, la BGM, le public cible, le score du sujet, les candidats de titre, la structure du texte, le pack de révision, les hachages et la confirmation humaine. Ce n'est pas un fichier de publication et il ne doit pas être placé dans le dossier hebdomadaire.

Quand utiliser

Utiliser ce skill lorsque l'utilisateur dit "fais une carte Xiaohongshu explicative", "transforme cette capture X en vidéo", "mets un fond animé", "ajoute une BGM", "donne-moi la vidéo et le brouillon". Si des actions nécessitent un bureau ou une application X connectée, lire d'abord le skill computer-use/contrôle de navigateur disponible. Pour la détection et le rendu des médias, utiliser ffprobe, ffmpeg locaux ou un outil de montage autorisé. S'il manque une capture d'écran, un fond, une BGM conforme ou une base de titre qui modifierait le sens factuel, s'arrêter sur WAIT_DATA/WAIT_USER, ne pas inventer.

Contrat d'entrée et de sortie

Les règles de génération et de révision du titre, du texte de 50 caractères et des tags se trouvent dans content-generation-contract.md. Ce fichier de référence est la norme de production de contenu de ce skill, pas une inspiration optionnelle.

Entrée minimale

  1. Une capture d'écran X, ou un post localisable dans l'application X connectée.
  2. Une image de référence de mise en page fournie par l'utilisateur, pour verrouiller source_crop_rect_px ; si l'utilisateur confirme explicitement que la capture X sert également d'image de référence, le même fichier peut être réutilisé.
  3. Une vidéo de fond animé. Si l'utilisateur n'en fournit pas, elle peut être téléchargée depuis une page de téléchargement explicite de Pexels/Unsplash, en enregistrant la licence et la source ; ne pas utiliser de matériel provenant uniquement d'une page de résultats de recherche.
  4. Une BGM locale, ou autorisation de sélectionner dans la 说明小红书BGM素材库 locale. Les fichiers audio sans licence claire ne doivent pas entrer dans la vidéo finale.

Optionnel : thème, émotion cible, numéro de semaine, titre spécifié par l'utilisateur, conservation de la zone d'image visible du post d'origine ; la durée de la vidéo n'est pas une entrée, elle est fixée en permanence à 8 secondes.

Spécifications fixes de la vidéo

  • Canvas fixé en permanence à 1080×1440 px (3:4), 30 fps par défaut, vidéo H.264, audio AAC.
  • Durée vidéo fixée en permanence à 8 secondes ; ne pas ajuster à une autre durée.
  • Le fond animé remplit tout le cadre, peut être légèrement assombri/vignet/flouté pour soutenir la carte ; ne pas figer le fond en image fixe.
  • Largeur de la carte de capture fixée en permanence à 880 px, marges gauche et droite du canvas fixées en permanence à 100 px (100 + 880 + 100 = 1080).
  • La carte de capture est d'abord recadrée sur la source selon l'image de référence de l'utilisateur, puis remplie et recadrée (cover) pour occuper les 880 px de largeur ; interdiction d'utiliser pad, letterbox ou tout espace vide. Ne pas réécrire, réorganiser ou masquer le texte clé.
  • La hauteur de la carte de capture est déterminée naturellement par le ratio de la capture après verrouillage de la référence : si logical_card_height <= 1440, alors final_card_height = logical_card_height et y = floor((1440 - final_card_height) / 2) ; si elle dépasse 1440 px, un recadrage vertical centré est appliqué : source_vertical_crop_px = floor((logical_card_height - 1440) / 2), final_card_height = 1440, et y = 0. Dans les deux cas, pas de marge haute/basse fixe, pas de réduction de largeur ni d'espace vide.
  • Le calque visible final de la capture utilise un masque d'angle arrondi de 24 px (basé sur les pixels de sortie 1080×1440), un contour intérieur de 2 px de couleur gris clair #C9D1D8 sur le bord extérieur de la carte, et une ombre portée douce : noir, opacité 16 %, rayon de flou 12 px, décalage (0, 8 px), extension réservée 36 px. Le contour et l'ombre portée font partie de la carte de capture ; ils ne modifient pas la largeur extérieure de 880 px de la carte et n'ajoutent pas de deuxième couche d'information. Si aucune image de référence n'est fournie, s'arrêter sur WAIT_USER, ne pas verrouiller le rectangle de recadrage.
  • La carte de capture apparaît par défaut à 0 seconde comme unique carte d'information de la vidéo et reste jusqu'à la fin ; si l'utilisateur demande explicitement un effet d'entrée, il ne peut s'agir que d'un changement léger et lisible sur cette carte elle-même.
  • L'image se compose uniquement du "fond + une carte de capture". Interdiction de sous-titres supplémentaires, autocollants, barre de source, générique d'ouverture, générique de fin et deuxième couche d'information.
  • Par défaut, une seule piste audio BGM, sans narration ; la musique couvre toute la vidéo avec un court fondu d'entrée/sortie, pour éviter les clics et les coupures brusques.

Spécifications fixes du brouillon de publication

Le nom de base Markdown doit être exactement le même que celui de la vidéo : <titre>.mp4 et <titre>.md. Le texte principal est strictement de 50 caractères chinois par défaut ; le comptage ne prend en compte que les caractères chinois du texte, sans le titre, la ponctuation, les chiffres, l'anglais, les tags et les champs d'état. Si l'utilisateur choisit explicitement le mode flexible, 45 à 65 caractères sont autorisés. Le brouillon ne conserve que :

publish_status: draft
title_status: locked
copy_length: exact_50
platform: xiaohongshu
content_review_status: claude_approved
content_review_agent: claude
content_generation_agent: claude
editorial_review_status: codex_approved
editorial_review_agent: codex

# Titre

Texte principal (exactement 50 caractères chinois, incluant un crochet attrayant et une conclusion claire)

#Tag1 #Tag2 #Tag3

Ne pas insérer de licence BGM, de lien de téléchargement ou de processus de fabrication dans le texte destiné aux lecteurs. Si des traces sont nécessaires, les écrire dans l'index.json de la bibliothèque de matériel ou dans les résultats d'exécution internes, sans ajouter de fichiers dans le dossier hebdomadaire.

Flux de travail

  1. Réception et vérification : Confirmer la capture d'écran, l'image de référence de mise en page indépendante (ou la confirmation explicite de l'utilisateur que la capture sert également de référence), le fond, le thème, le numéro de semaine et l'état de la bibliothèque de matériel ; lister les lacunes. Si le titre contient des chiffres, des causes-effets ou des promesses de bénéfices, vérifier d'abord si la capture les soutient réellement.
  2. Extraction du contenu : Lorsque l'utilisateur autorise l'opération sur l'application X, ne capturer que le contenu visible actuellement ; copier la capture d'écran originale en lecture seule dans un espace de travail temporaire, nettoyer les copies temporaires après validation de la vidéo finale, ne pas supprimer la capture d'écran originale, la vidéo originale ou la musique originale de l'utilisateur.
  3. Filtrage, sélection et premier brouillon Claude : L'automatisation ultérieure ne lit que les posts publics des comptes X déjà confirmés ; passer d'abord le seuil de qualité de capture de content-generation-contract.md ; une fois passé, créer un topic_packet et le noter, puis laisser Claude générer 5 candidats de titre, 1 titre recommandé, 2 titres de secours, quatre sections de texte et 5 tags. Si l'éditeur a déjà spécifié un titre, verrouiller directement ce titre, Claude ne génère que le texte et les tags. La sortie de Claude est toujours un brouillon de matériel, pas directement livrable.
  4. Édition approfondie Codex et validation du brouillon final : Codex doit repenser le brouillon de Claude, en vérifiant particulièrement le crochet, l'attractivité, les vrais points douloureux, les conflits, l'appropriation identitaire, la phrase mémorisable, la valeur d'action et les limites des preuves ; réécrire complètement si nécessaire, pas seulement réduire le nombre de caractères. Après avoir effectué la vérification mécanique des 50 caractères chinois exacts et des 5 tags, envoyer le brouillon final à Claude pour une validation de conformité ; ce n'est que si Claude n'est pas disponible qu'on bascule vers Hermes en enregistrant fallback_reason. Seuls editorial_review_status: codex_approved et un statut de conformité claude_approved ou un hermes_approved valide permettent de passer à la livraison.
  5. Choix du fond : Prioriser l'utilisation de la vidéo fournie par l'utilisateur ; les matériaux externes ne sont téléchargés que depuis des pages officielles explicitement autorisées, avec enregistrement de la source. Recadrer/mettre à l'échelle en 3:4, sans modifier la zone de lecture de la carte de capture.
  6. Choix de la BGM : Exécuter d'abord audit_bgm.py, puis filtrer parmi les enregistrements locaux avec approved, sync_allowed=true, commercial_allowed=true selon l'émotion, l'énergie, la durée et l'état vocal ; en sélectionner une parmi les 3 à 5 mieux notées avec une seed fixe. Les pending ne peuvent être que des suggestions de candidats ; la production/livraison doit utiliser --confirmed-only et human_listen_status=confirmed. L'IA ne prend pas la décision finale à la place de l'humain. Les morceaux CC BY doivent en plus avoir un texte d'attribution publiable, sinon ils sont éliminés.
  7. Synthèse : Reconstruire la timeline complète à partir de la capture source, du fond et de la BGM, utiliser ffmpeg/un outil de montage pour produire un MP4 1080×1440. En cas d'erreur, revenir aux matériaux sources et reconstruire, ne pas superposer de patchs sur le MP4 déjà rendu.
  8. Validation : Forcer la vérification avec ffprobe du ratio, du framerate, du H.264/yuv420p, de l'AAC, de la piste audio unique, de l'audio commençant à 0 seconde et couvrant l'image, de la durée de 8 secondes (tolérance d'encapsulation ±0.05 s) ; extraire des frames pour confirmer la netteté de la carte et l'absence de couches de texte supplémentaires ; vérifier l'absence de saturation audio, de silence au début et de conflit vocal évident ; le texte doit d'abord passer par l'édition approfondie de Codex, puis par la validation de conformité de Claude, ou en cas d'échec de connexion à Claude et avec enregistrement de la raison, par la validation de secours Hermes.
  9. Archivage : Écrire exactement un MP4 et un Markdown directement dans 说明小红书XX/第N周/ ; placer le manifeste interne en dehors du dossier hebdomadaire. Ne nettoyer que les copies temporaires, trames temporaires, journaux et versions de sauvegarde générés par cette exécution, ne pas nettoyer les matériaux originaux de l'utilisateur ; conserver les enregistrements de source, de licence et de hachage dans le manifeste ; garder les brouillons locaux, sans publication externe.
  10. Brouillons Xiaohongshu (uniquement sur demande explicite de l'utilisateur) : Prioriser la prise de contrôle du centre de création Xiaohongshu dans Google Chrome connecté de l'utilisateur, ne pas considérer l'état de connexion du navigateur intégré de Codex comme une session de navigateur de bureau. Après confirmation de la connexion au centre de création, télécharger le .mp4 spécifié, remplir le même titre et le texte final/les 5 tags du Markdown, attendre la fin du traitement, puis cliquer sur "Sauvegarder le brouillon" ou un bouton équivalent. Après la sauvegarde, vérifier de manière fiable via un message sur la page, la liste des brouillons ou une relecture du titre, et écrire draft_upload_status, l'heure et l'identifiant du brouillon dans le manifeste en dehors du dossier hebdomadaire. En cas de page de connexion, de CAPTCHA, de contrôle de risque, de déclaration de droits d'auteur ou de toute autre page nécessitant une décision de l'utilisateur, s'arrêter sur WAIT_USER ; ne pas cliquer sur "Publier", publier programmé, publier en synchro ou effectuer toute action d'interaction.

Contraintes dures de validation Hermes / sans visage explicatif

Chaque livraison doit enregistrer des preuves factuelles, ne pas se contenter d'un "cela semble correct" :

  • Canvas : ffprobe doit indiquer 1080×1440.
  • Géométrie horizontale : Les logs de trame ou de filtre doivent prouver que la carte de capture a x=100, w=880, right_margin=100.
  • Remplissage/recadrage : La carte de capture ne doit pas présenter de pad, letterbox, bord blanc ou espace transparent ; le contenu débordant doit provenir d'un recadrage cover.
  • Géométrie verticale : En cas de non-dépassement, y=floor((1440-final_card_height)/2) ; en cas de dépassement, enregistrer d'abord source_vertical_crop_px centré, la hauteur finale de la carte est 1440 et y=0.
  • Angles arrondis, contour, ombre portée et couches : Le rayon du masque du calque visible final de la capture est 24px, le contour intérieur du bord extérieur de la carte est fixé à 2px #C9D1D8, l'ombre portée est fixée à noir 16%, flou 12px, décalage (0,8px), extension 36px ; l'image ne peut contenir que le fond animé et cette seule carte de capture.
  • Re-productible : Le manifeste doit mentionner les valeurs géométriques ci-dessus, le chemin/le hachage de l'image de référence de l'utilisateur, source_crop_rect_px, l'heure de validation, les chemins/les hachages des première/trame médiane/dernière trames, le chemin du log de filtre et next_state ; en l'absence d'image de référence ou de preuve, s'arrêter sur WAIT_USER.

Les angles arrondis, le contour et l'ombre portée doivent être réalisés avant l'assemblage de la carte de capture : d'abord, dessiner un contour intérieur de 2px #C9D1D8 sur le bord extérieur de la carte, puis utiliser scripts/make_rounded_mask.py --width 880 --height FINAL_CARD_H --radius 24 --output rounded-mask.pgm pour générer un masque PGM aux dimensions finales et appliquer alphamerge ; à partir du même alpha de carte arrondie, générer l'ombre portée étendue, floutée et décalée, puis composer l'ombre et la carte originale sur le fond. Ne pas ajouter de couches supplémentaires sur le MP4 déjà rendu. Le manifeste doit enregistrer tous les paramètres fixes du contour et de l'ombre portée.

Points d'entrée d'intention

Traiter les phrases suivantes comme des routes internes stables, sans exiger de l'utilisateur la connaissance des paramètres de script :

/xhs-card-video make
/xhs-card-video make --source x-app --week auto --bgm random --confirmed-only --record
/xhs-card-video make --source <screenshot> --background <video> --bgm <bgm-id>
/xhs-card-video bgm init --count 100
/xhs-card-video bgm ingest <file-or-folder>
/xhs-card-video bgm confirm <bgm-id> --status confirmed
/xhs-card-video bgm audit
/xhs-card-video bgm pick --mood rainy --energy low-mid --seed <seed> --confirmed-only --record
/xhs-card-video audit <week-folder>
/xhs-card-video audit <week-folder> --title <titre> --manifest <run-manifest.json>
/xhs-card-video audit <week-folder> --manifest <run-manifest.json>

Les scripts correspondants se trouvent dans le dossier scripts/ de ce skill. Les scripts sont des outils réutilisables, ils ne signifient pas qu'une publication externe a été effectuée.

Bibliothèque locale de BGM

Chemin par défaut :

{{CREATOR_ROOT}}/说明小红书BGM素材库/

Prioriser l'utilisation de la variable d'environnement PROOF_EXPLAINER_XHS_BGM_LIBRARY ; l'ancienne variable EXPLAINER_XHS_BGM_LIBRARY n'est conservée que pour compatibilité. La bibliothèque initiale contient 100 morceaux, répartis en 10 catégories : Concentration & Quotidien, Nuit pluvieuse & Météo, Ambiance & Rêve, Nuit & Néons, Chaleur & Rythme lent, Jazz & Librairie, Léger & Quotidien, Orient & Zen, Vintage & Groove, Monde & Cinéma. Les 100 morceaux ne sont qu'un pool de matériel utilisable, pas un Top 100 des tendances Xiaohongshu, et ne constituent pas un classement des tendances.

Exigences minimales de métadonnées

Chaque morceau doit avoir au minimum dans index.json :

{
  "id": "bgm-001",
  "relative_path": "audio/01_Concentration_Quotidien/bgm-001__track.mp3",
  "source_page_url": "https://…",
  "download_url": "https://…",
  "source_platform": "openlofi|user_local|manual_other",
  "license_class": "cc0|cc_by|site_custom|user_owned|reference_only|blocked",
  "sync_allowed": true,
  "commercial_allowed": true,
  "standalone_redistribution_allowed": false,
  "license_checked_at": "YYYY-MM-DD",
  "license_snapshot_path": "licenses/…",
  "license_snapshot_sha256": "…",
  "rights_notes": "…",
  "trend_status": "verified|unverified|not_claimed",
  "duration_s": 12.3,
  "sha256": "…",
  "review_status": "approved|review|rejected",
  "human_listen_status": "pending|confirmed|rejected"
}

Seuls les morceaux avec review_status=approved, sync_allowed=true, commercial_allowed=true et une classe de licence claire peuvent entrer dans la vidéo. reference_only ne sert que pour l'inspiration, blocked ne doit pas être appelé. L'audio des vidéos locales fournies par l'utilisateur est par défaut review ; ce n'est qu'après que l'utilisateur a confirmé en détenir les droits ou avoir obtenu l'autorisation qu'il peut être passé à user_owned. L'autorisation d'empaqueter/re-vendre l'audio séparément est différente de "l'intégration dans une vidéo" et ne peut pas être déduite par défaut.

La bibliothèque initiale utilise le package de version fixe Open Lo-Fi v1.0.0, avec conservation du catalogue amont, du README, de l'instantané de la licence et du SHA-256. Le README déclare CC0 1.0, mais les échantillons tiers/droits régionaux ne sont pas audités indépendamment par ce skill ; les rights_notes doivent conserver cette réserve. Si la source est Pixabay, Mixkit, OpenGameArt, DOVA, etc., lire chaque page de licence officielle individuellement, ne pas récolter en masse ni utiliser l'URL d'aperçu comme preuve de licence officielle/téléchargement. Ne pas télécharger ni redistribuer de sources audio à succès restreintes de XHS/TikTok/Instagram.

Règles de sélection

random n'est pas un aléatoire sans contrainte :

Licence et décodage non valides → Éliminé
Correspondance émotionnelle                +4
Correspondance énergie/rythme              +3
Durée, boucle, instrumental pur            +2
Déjà utilisé récemment                     -1
Conflit vocal avec la carte de capture     -3

Conserver d'abord les 3 à 5 morceaux les mieux notés, puis en sélectionner 1 avec une seed fixe ; écrire bgm_id, la seed, la raison du filtre dans selection_history.jsonl, sans amener les logs d'exécution dans le dossier de livraison hebdomadaire.

Dossier hebdomadaire, noms de fichiers et état

说明小红书XX/
└── 第N周/
    ├── <titre>.mp4
    └── <titre>.md
  • 第N周 par défaut prend la semaine ISO en cours ; si l'utilisateur spécifie un numéro de semaine, c'est celui-ci qui prime.
  • Le nom de fichier est le titre confirmé. Ne remplacer que les caractères interdits par le système, les sauts de ligne et / ; ne pas le changer discrètement en numéro.
  • Le dossier hebdomadaire ne peut contenir que des paires de fichiers MP4/Markdown, pas de matériel temporaire, de logs ou de sous-dossiers ; pour plusieurs contenus, utiliser audit_delivery.py --title <titre> pour auditer la paire spécifiée.
  • Le répertoire parent du dossier hebdomadaire doit être exactement 说明小红书XX, le nom de la semaine doit correspondre à 第1周–第53周 ; le manifeste interne est placé dans {{CREATOR_ROOT}}/.xhs-card-video-runs/ (ou un chemin en dehors du dossier hebdomadaire spécifié par l'utilisateur).
  • L'état interne peut être écrit comme suit :
state: INTAKE | WAIT_DATA | WAIT_USER | WAIT_REVIEW | BUILD | AUDIT | local_ready
source_status: captured | supplied | missing
bgm_status: approved_confirmed | approved_pending_listen | review | missing
title_status: locked | draft
  publish_status: draft
  draft_upload_status: not_requested | pending | saved | blocked
  draft_upload_platform: xiaohongshu | none
  draft_upload_at: <ISO-8601 or null>
  draft_entry_identifier: <title/url/id or null>
copy_length: exact_50 | range_45_65
platform: xiaohongshu
content_review_status: pending | claude_approved | hermes_approved | rework_required
content_review_agent: claude | hermes | none
content_generation_agent: claude | hermes | none
editorial_review_status: pending | codex_approved | rework_required
editorial_review_agent: codex | none
run_manifest: <absolute path outside week folder>
delivery_path: <absolute week folder>
next_state: DONE | WAIT_DATA | WAIT_USER

Ce n'est que lorsque les deux fichiers finaux sont ouvrables, que tous les tests de audit_bgm.py et audit_delivery.py --manifest … sont passés, que la vérification humaine de l'image et de l'écoute est confirmée et qu'aucune action de publication externe n'a eu lieu, que local_ready peut être signalé.

Gestion des échecs

  • Capture/fond/BGM disponible manquant : Signaler la lacune spécifique, s'arrêter sur WAIT_DATA, ne pas télécharger de substitut sans licence.
  • Titre modifiant les faits du post original : S'arrêter sur WAIT_USER, donner les limites factuelles à confirmer.
  • Audio non décodable, hachage dupliqué ou champ de licence manquant : Éliminer du pool de candidats, exécuter audit_bgm.py, ne pas "utiliser d'abord, vérifier ensuite".
  • BGM encore en human_listen_status=pending, manifeste manquant/dans le dossier hebdomadaire, ou attribution CC BY sans emplacement : S'arrêter sur WAIT_USER/AUDIT, ne pas signaler local_ready.
  • Ratio de rendu, lisibilité de la carte ou piste audio non conforme : Supprimer la sortie temporaire de cette exécution, reconstruire à partir des matériaux sources ; ne pas superposer de couches de réparation.
  • Toute demande de publication publique, publication programmée ou interaction : Conserver le brouillon, et préciser que l'utilisateur doit confirmer/exécuter lui-même ; ce skill ne fait que télécharger dans le dossier des brouillons Xiaohongshu sur demande explicite de l'utilisateur, et doit s'arrêter à "Sauvegarder le brouillon", sans publier à sa place.

Fichiers de référence

  • references/xhs-video-contract.md : Contraintes de canvas, carte, audio et rendu.
  • references/bgm-library-contract.md : Catalogue, licence, champs et algorithme de sélection.
  • references/delivery-checklist.md : Liste de validation exécutable avant livraison.
  • references/run-manifest.md : Liste de source, licence, hachage et confirmation humaine en dehors du dossier hebdomadaire.
  • references/content-generation-contract.md : Lecteur cible, score du sujet, premier brouillon Claude, édition approfondie Codex, mécanisme de titre/texte 50 caractères/5 tags, et routage de validation de conformité finale.
  • scripts/install_openlofi.py : Initialise le pool de 100 morceaux à partir d'une release officielle fixe.
  • scripts/select_bgm.py : Filtre et sélectionne avec seed pseudo-aléatoire, ne modifie pas l'audio.
  • scripts/ingest_bgm.py : Place l'audio local de l'utilisateur dans une boîte de réception à réviser, n'accorde pas de droits par défaut.
  • scripts/confirm_bgm.py : N'enregistre que la confirmation/rejet de l'écoute humaine pour l'ID spécifié par l'utilisateur, ne prend pas de décision à sa place.
  • scripts/audit_bgm.py : Vérifie l'index, les chemins, le décodage, les hachages et les champs de licence.
  • scripts/audit_delivery.py : Vérifie le contrat des deux fichiers du dossier hebdomadaire, l'état de brouillon, l'état de révision du contenu, les preuves géométriques et les informations de flux de base du MP4.

Individual skills in this repo

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

design-showcase-websites

Design and build distinctive, high-impact websites and clickable, presentation-ready prototypes for any industry, language, or site type from business briefs, public links, local media, existing sites, or product requirements. Use for brand and corporate sites, landing pages, ecommerce, SaaS and product sites, portfolios, editorial and content sites, education and nonprofit sites, events and communities, local and hospitality businesses, campaigns, web product interfaces, and website UI redesigns. Support Chinese, English, Japanese, Korean, and multilingual experiences without defaulting to one locale or visual style. Also use for requests mentioning 网站原型, 宣传网站, 企业官网, 营销官网, 电商网站, 落地页, 内容网站, 官网重构, 可点击演示, website prototype, landing page, or redesign.

kinetic-typography-video

动效 KINETIC — 把口播视频(数字人或真人实拍)做成爆款动效质感的视觉语言与逐帧渲染器。用一条贯穿全片的"光"、按音节落下的大字、剪辑师才认得的圈内物件(框选框、真实声波、关键帧、时间线、口型条)、人物抠像后"字藏身后"、音画同钟的合成音效与节拍对齐的配乐。用户说"用动效做/用动效风格/做得更炫/像那条爆款动效视频一样/Opus 那种动效"、或要给数字人/真人口播加高密度动效包装时使用。不用于:只要简单字幕的口播、纯 MG 无人物讲解(用 knowledge-explainer)、结构化信息单镜头(shotcraft-motion)。

knowledge-explainer

把文字、文章、笔记、PPT 或 HTML 课件提炼为有配音字幕的 16:9 知识讲解视频。 使用 Remotion 语义动画与 Fish Audio / ElevenLabs 配音,先做短样片再扩展。 用于课件转视频、知识视频、内训片、科普 explainer,也用于参考视频的解释型动效拆解与原创复现;不负责真人口播剪辑、数字人生成或未知作者工具归属鉴定。

video-prompt-director

创作者的主力 AI 视频提示词 Skill。先按脚本风格选档位,再像导演一样把脚本、故事、口播稿、分镜表或一句想法,拆成能直接生成的分段视频提示词。短视频档(抖音/小红书节奏:一镜到底、多分镜、街拍、角色小故事、竖屏短剧,标杆是《丹眉》和赛博原子)和电影精品档(慢节奏剧情、表演、对白、对手戏、AU 微表情、八维公式),各有结构和示例。每段含生成模式与参数、参考图绑定、人物道具场景、镜头时间轴、声音和硬约束。适用 Seedance 2.0/2.5、即梦、dreamina、LibTV、TT AI。Use when 用户要写视频提示词、AI 视频提示词、Seedance 提示词、即梦提示词、脚本转视频、拆分镜、分镜提示词、快剪、短视频提示词、storyboard、shot list、多图参考、首尾帧、人物表演提示词、AI 演技、情绪递进、导演式提示词,或给出脚本/故事/想法要变成视频。当前项目若有专用工作流 Skill(Vlog、情感钩子、新闻解说等),优先用专用的。

Skills associés