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
.mp4ouvrable et un brouillon de publication.mdportant 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_statusdoit êtrelocked. 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.jsoninterne 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
- Une capture d'écran X, ou un post localisable dans l'application X connectée.
- 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é. - 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.
- 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 fpspar 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 pxde 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, alorsfinal_card_height = logical_card_heightety = 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, ety = 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 de2 pxde couleur gris clair#C9D1D8sur le bord extérieur de la carte, et une ombre portée douce : noir, opacité16 %, rayon de flou12 px, décalage(0, 8 px), extension réservée36 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 surWAIT_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
- 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.
- 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.
- 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 untopic_packetet 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. - É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. Seulseditorial_review_status: codex_approvedet un statut de conformitéclaude_approvedou unhermes_approvedvalide permettent de passer à la livraison. - 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.
- Choix de la BGM : Exécuter d'abord
audit_bgm.py, puis filtrer parmi les enregistrements locaux avecapproved,sync_allowed=true,commercial_allowed=trueselon 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. Lespendingne peuvent être que des suggestions de candidats ; la production/livraison doit utiliser--confirmed-onlyethuman_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. - 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.
- Validation : Forcer la vérification avec
ffprobedu 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. - 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. - 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
.mp4spé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 écriredraft_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 surWAIT_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 :
ffprobedoit indiquer1080×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'abordsource_vertical_crop_pxcentré, la hauteur finale de la carte est 1440 ety=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 à noir16%, flou12px, décalage(0,8px), extension36px; 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 etnext_state; en l'absence d'image de référence ou de preuve, s'arrêter surWAIT_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 surWAIT_USER/AUDIT, ne pas signalerlocal_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.