Sin Rostro Video Explicativo Xiaohongshu
Esta es una ruta de producción de video corto independiente, especializada en ensamblar "tarjeta de captura de contenido real + fondo de paisaje dinámico + BGM local" para borradores de Xiaohongshu (小红书). No modifica ni reemplaza el skill $explainer existente; este último sigue siendo responsable de videos 16:9, locución y explicaciones completas.
Los lectores principales del contenido son personas que desean emprender por su cuenta, están aprendiendo sobre IA y poseen una comprensión básica de negocios e IA. La captura de pantalla es solo una puerta de entrada a la evidencia; el verdadero valor del contenido es traducir las ideas de la captura en acciones que estos lectores puedan juzgar y ejecutar.
Primero, Define los Límites
- Cada contenido entrega al usuario solo dos elementos: un archivo
.mp4reproducible y un archivo.mdde borrador de publicación con el mismo título; los pares de archivos de múltiples contenidos de la misma semana se colocan directamente en el mismo directorio semanal; el manifiesto interno de seguimiento no cuenta como entrega y no se coloca en el directorio semanal. - Por defecto, se coloca en
Explicación XiaohongshuXX/Semana N/, los videos terminados y los borradores de publicación de la misma semana se colocan directamente en el directorio semanal, sin crear subdirectorios para contenido individual. - El borrador de publicación siempre tiene
publish_status: draft; antes de la entrega final,title_statusdebe serlocked. Por defecto, no se inicia sesión, carga, publica, comenta, da "me gusta" ni sigue; solo cuando el editor lo solicita explícitamente, se puede cargar el video y el borrador de publicación designados al centro de creación de Xiaohongshu con sesión iniciada y guardar como borrador, sin hacer clic en publicar. Si el usuario confirma explícitamente una lista de cuentas candidatas, se puede seguir manualmente una por una en la aplicación X con sesión iniciada, sin automatización masiva ni interacciones de crecimiento. - El contenido de X debe provenir de capturas de pantalla proporcionadas por el usuario o de publicaciones visibles en la aplicación X con sesión iniciada. No se pueden eludir CAPTCHAS, muros de pago o permisos, ni reorganizar el texto de las capturas, ni inventar cuentas/números/fechas.
- Por defecto, no se escribe una línea de fuente de X, a menos que el usuario lo solicite; la fuente y la licencia solo se colocan en los metadatos de la biblioteca de materiales.
- Una sola captura de pantalla es la única tarjeta de información. No se superpondrán subtítulos, barras de título, pegatinas, logotipos, intros, créditos finales, CTA, segunda tarjeta ni personajes.
- Cuando el usuario no proporciona evidencia factual, el título y el texto solo pueden hacer resúmenes claramente etiquetados, sin presentar especulaciones como hechos.
- Cada video terminado debe tener un
run_manifest.jsoninterno, ubicado fuera del directorio semanal, que registre la captura de pantalla, el fondo, el BGM, el público objetivo, la puntuación del tema, los títulos candidatos, la estructura del cuerpo, el paquete de revisión, los hashes y la confirmación humana; no es un archivo de publicación y no debe colocarse en el directorio semanal.
Cuándo Usar
Usa este skill cuando el usuario diga "haz un video explicativo para Xiaohongshu", "convierte esta captura de X en video", "usa un paisaje dinámico como fondo", "ponle una BGM", "dame el video y el borrador de publicación". Cuando se necesite operar la aplicación X de escritorio o la aplicación X con sesión iniciada, primero lee el skill de computer-use/control de navegador disponible. La detección y renderización de medios se realiza con ffprobe, ffmpeg o herramientas de edición autorizadas localmente. Si faltan capturas de pantalla, fondo, BGM conforme o evidencia de título que altere el significado de los hechos, detente en WAIT_DATA/WAIT_USER, no inventes.
Contrato de Entrada y Salida
Las reglas de generación y revisión de títulos, cuerpo de 50 caracteres y etiquetas se encuentran en content-generation-contract.md. Este archivo de referencia es el estándar de producción de contenido de este skill, no una inspiración opcional.
Entrada Mínima
- Una captura de pantalla de X, o un post localizable en la aplicación X con sesión iniciada.
- Una imagen de referencia de diseño cargada por el usuario, para fijar
source_crop_rect_px; solo si el usuario confirma explícitamente que la captura de X también sirve como imagen de referencia, se puede reutilizar el mismo archivo. - Un video de fondo dinámico. Si el usuario no lo proporciona, se puede obtener de páginas de descarga explícita de Pexels/Unsplash, guardando la licencia/registro de fuente; no se pueden usar materiales solo desde páginas de resultados de búsqueda.
- Un BGM local, o se permite seleccionar de la
Biblioteca de BGM para explicaciones de Xiaohongshulocal. Los archivos de audio con autorización desconocida no deben incluirse en el video final.
Opcional: tema, emoción objetivo, número de semana, título especificado por el usuario, si se debe conservar el área de imagen visible en el post original; la duración del video no se toma como entrada, está fijada permanentemente en 8 segundos.
Especificaciones Fijas del Video
- Lienzo fijo permanentemente en
1080×1440 px(3:4), por defecto30 fps, video H.264, audio AAC. - Duración del video fija permanentemente en
8 segundos; no se puede ajustar a otra duración. - El fondo dinámico cubre todo el lienzo, se puede atenuar ligeramente/añadir viñeta/desenfocar para sostener la tarjeta; no se puede congelar el fondo en un fotograma estático.
- El ancho de la tarjeta de captura está fijo permanentemente en
880 px, los márgenes izquierdo y derecho del lienzo están fijos permanentemente en100 px(100 + 880 + 100 = 1080). - La tarjeta de captura primero se recorta según la referencia del usuario para fijar el área de recorte de la captura fuente, luego se llena y recorta (cover) para ocupar
880 pxde ancho; está prohibido usar pad, letterbox o cualquier relleno en blanco. No se puede reescribir, reorganizar ni ocultar texto clave. - La altura de la tarjeta de captura está determinada naturalmente por la proporción de la captura después de fijar el recorte con la referencia: si
logical_card_height <= 1440, entoncesfinal_card_height = logical_card_heightyy = floor((1440 - final_card_height) / 2); si supera 1440px, primero se recorta verticalmente centrado consource_vertical_crop_px = floor((logical_card_height - 1440) / 2),final_card_height = 1440, resultandoy = 0. En ningún caso se especifica un espacio en blanco fijo superior/inferior, ni se reduce el ancho o se añade relleno. - La capa visible final de la captura utiliza una máscara de bordes redondeados de
24 px(medidos en píxeles de salida 1080×1440), con un borde interior de2 pxde color gris claro#C9D1D8en el borde más externo de la tarjeta, y añade una sombra suave: negra, opacidad16%, radio de desenfoque12 px, desplazamiento(0, 8 px), extensión de reserva36 px. El borde y la sombra pertenecen a la tarjeta de captura, no cambian las dimensiones externas de 880px de la tarjeta ni añaden una segunda capa de información. Cuando no se proporciona una imagen de referencia, detente enWAIT_USER, no fijes el rectángulo de recorte. - La tarjeta de captura aparece desde el segundo 0 por defecto, como la única tarjeta de información al principio del video y permanece hasta el final; si el usuario solicita explícitamente una animación de entrada, solo se pueden hacer cambios ligeros y legibles en la tarjeta misma.
- La escena contiene solo "fondo + una tarjeta de captura". Están prohibidos subtítulos adicionales, pegatinas, barras de fuente, intros, créditos finales y una segunda capa de información.
- Por defecto, solo hay una pista de audio BGM, sin narración; la música cubre todo el video y tiene una breve entrada/salida gradual para evitar picos y cortes bruscos.
Especificaciones Fijas del Borrador de Publicación
El nombre base del Markdown debe ser exactamente el mismo que el del video: <título>.mp4 y <título>.md. El cuerpo del texto tiene estrictamente 50 caracteres chinos por defecto; el conteo solo considera caracteres chinos en el cuerpo, sin contar título, puntuación, números, inglés, etiquetas y campos de estado. Solo cuando el usuario selecciona explícitamente el modo flexible, se puede usar un rango de 45–65 caracteres. El borrador solo conserva:
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
# Título
Cuerpo del texto (exactamente 50 caracteres chinos, incluyendo un gancho atractivo y un cierre claro)
#Etiqueta1 #Etiqueta2 #Etiqueta3
No metas la licencia del BGM, enlaces de descarga o proceso de producción en el texto para lectores. Cuando sea necesario dejar constancia, escríbelo en el index.json de la biblioteca de materiales o en los resultados internos de ejecución, sin aumentar los archivos de entrega semanal.
Flujo de Trabajo
- Recepción y Verificación: Confirmar captura, imagen de diseño de referencia independiente (o confirmación explícita del usuario de que la captura sirve como referencia), fondo, tema, número de semana y estado de la biblioteca de materiales; listar las carencias. Si el título contiene números, causalidad o promesas de beneficio, primero verificar si la captura realmente lo respalda.
- Captura de Contenido: Cuando el usuario autoriza operar la aplicación X, solo capturar el contenido visible actual; copiar la captura original como solo lectura a un espacio de trabajo temporal; al finalizar el video, limpiar la copia temporal sin eliminar la captura original del usuario, el video original ni la música original.
- Filtrado, Selección de Tema y Borrador Inicial con Claude: La automatización posterior solo leerá publicaciones públicas de un grupo de cuentas X confirmadas, primero pasando el umbral de calidad de captura de
content-generation-contract.md; una vez superado, crear untopic_packety puntuarlo, luego hacer que Claude genere 5 títulos candidatos, 1 título recomendado, 2 títulos de respaldo, cuatro versiones del cuerpo y 5 etiquetas. Cuando el editor ya ha especificado un título, se fija directamente ese título, Claude solo genera el cuerpo y las etiquetas. La salida de Claude es siempre un borrador de material, no puede entregarse directamente. - Edición Profunda de Codex y Revisión Final: Codex debe repensar el borrador inicial de Claude, enfocándose en revisar el gancho, el atractivo visual, los puntos débiles reales, el conflicto, la reivindicación de identidad, la frase memorable, el valor de acción y los límites de la evidencia; si es necesario, reescribir completamente, no solo reducir la longitud. Después de completar la verificación mecánica de exactamente 50 caracteres chinos y 5 etiquetas, enviar el borrador final a Claude para una revisión de cumplimiento; solo cuando Claude no esté disponible, se puede cambiar a Hermes y registrar
fallback_reason. Solo cuandoeditorial_review_status: codex_approvedy el estado de cumplimiento seaclaude_approvedohermes_approvedlegal, se puede pasar a entrega. - Seleccionar Fondo: Priorizar el video proporcionado por el usuario; los materiales externos solo se descargan de páginas oficiales con licencia explícita y se registra la fuente. Recortar/escalar a 3:4, sin cambiar el área de lectura de la tarjeta de captura.
- Seleccionar BGM: Primero ejecutar
audit_bgm.py, luego de los registros locales conapproved,sync_allowed=true,commercial_allowed=true, filtrar por estado de ánimo, energía, duración y presencia vocal, y seleccionar una usando una semilla fija de las 3–5 mejores puntuaciones.pendingsolo puede ser una sugerencia candidata; la producción/entrega debe usar--confirmed-onlyyhuman_listen_status=confirmed. La IA no toma la decisión final por el humano. Las pistas CC BY también deben tener un texto de atribución colocable, de lo contrario son eliminadas. - Síntesis: Reconstruir la línea de tiempo completa desde la captura fuente, el fondo y el BGM, usando ffmpeg/herramienta de edición para generar un MP4 de 1080×1440. Si se encuentra un error, volver a los materiales fuente y reconstruir, sin superponer parches en el MP4 ya renderizado.
- Aceptación: Usar
ffprobepara verificar obligatoriamente la proporción, la tasa de fotogramas, H.264/yuv420p, AAC, una sola pista de audio, audio desde el segundo 0 y cubriendo el video, duración de 8 segundos (tolerancia de encapsulado ±0.05 segundos); extraer fotogramas para confirmar que la tarjeta está nítida y sin capas de texto adicionales; verificar que el audio no tenga picos, no comience en silencio y no tenga conflicto vocal evidente; el texto debe pasar primero la edición profunda de Codex y luego la revisión de cumplimiento de Claude, o la revisión de respaldo de Hermes si la conexión con Claude falla y se registra el motivo. - Archivado: Escribir exactamente un MP4 y un Markdown directamente en
Explicación XiaohongshuXX/Semana N/; colocar el manifiesto interno fuera del directorio semanal. Limpiar solo las copias temporales generadas en esta ejecución, fotogramas temporales, registros y versiones de respaldo, sin limpiar los materiales originales del usuario; conservar los registros de fuente, licencia y hash en el manifiesto; mantener los borradores locales, sin publicación externa. - Bandeja de Borradores de Xiaohongshu (solo cuando el usuario lo solicite explícitamente): Priorizar tomar el control del centro de creación de Xiaohongshu en Google Chrome del ordenador con sesión iniciada por el usuario, no considerar el estado de inicio de sesión del navegador incorporado de Codex como una sesión de navegador de ordenador. Confirmar que el centro de creación ha iniciado sesión, luego cargar el
.mp4especificado, llenar el título y el cuerpo final/5 etiquetas del Markdown, esperar a que se complete el procesamiento y hacer clic en "Guardar borrador" o un botón equivalente. Después de guardar, verificar autoritativamente con mensajes de página, lista de borradores o relectura del título, y escribirdraft_upload_status, hora e identificador del borrador en el manifiesto fuera del directorio semanal. Ante páginas de inicio de sesión, CAPTCHA, control de riesgos, declaración de derechos de autor u otras que requieran juicio del usuario, detenerse enWAIT_USER; no hacer clic en "Publicar", publicación programada, publicación sincronizada ni ninguna acción de interacción.
Restricciones Duras de Aceptación de Hermes / Sin Rostro
Cada entrega debe registrar evidencia factual, no solo aprobar basándose en "se ve bien":
- Lienzo:
ffprobedebe ser1080×1440. - Geometría Horizontal: Los registros de extracción de fotogramas o filtros deben probar que la tarjeta de captura tiene
x=100, w=880, margen derecho=100. - Relleno y Recorte: La tarjeta de captura no debe tener pad, letterbox, bordes blancos ni relleno transparente; el contenido que sobresalga debe provenir del recorte cover.
- Geometría Vertical: Cuando no supera la altura,
y=floor((1440-final_card_height)/2); cuando supera la altura, primero registrarsource_vertical_crop_pxcentrado, la altura final de la tarjeta es 1440 yy=0. - Bordes Redondeados, Borde, Sombra y Capas: El radio de la máscara de la capa visible final de la captura es
24px, el borde interior en el borde más externo de la tarjeta está fijo en2px #C9D1D8, la sombra está fija en negro16%, desenfoque12px, desplazamiento(0,8px), extensión36px; la escena solo puede tener el fondo dinámico y esta única tarjeta de captura. - Reproducible: El manifiesto debe indicar los valores geométricos anteriores, la ruta/hash de la imagen de referencia del usuario,
source_crop_rect_px, hora de aceptación, rutas/hashes del primer fotograma/fotograma intermedio/último fotograma, ruta del registro de filtro ynext_state; cuando falten la imagen de referencia o la evidencia, detenerse enWAIT_USER.
Los bordes redondeados, el borde y la sombra deben completarse antes de que la tarjeta de captura entre en la composición: primero dibujar un borde interior de 2px #C9D1D8 en el borde más externo de la tarjeta, luego usar scripts/make_rounded_mask.py --width 880 --height FINAL_CARD_H --radius 24 --output rounded-mask.pgm para generar una máscara PGM del tamaño final y aplicar alphamerge; a partir del alpha de la misma tarjeta con bordes redondeados, generar la sombra extendida, desenfocada y desplazada, y luego componer la sombra y la tarjeta original sobre el fondo. No se pueden agregar capas sobre el MP4 ya renderizado. El manifiesto debe registrar todos los parámetros fijos del borde y la sombra.
Puntos de Entrada de Intención
Trata las siguientes frases como rutas internas estables, no requiriendo que el usuario conozca los parámetros del 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 <título> --manifest <run-manifest.json>
/xhs-card-video audit <week-folder> --manifest <run-manifest.json>
Los scripts correspondientes están en scripts/ de este skill. Los scripts son herramientas auxiliares reutilizables, no representan que se haya ejecutado una publicación externa.
Biblioteca Local de BGM
Ruta por defecto:
{{CREATOR_ROOT}}/BibliotecaBGMXiaohongshu/
Priorizar el uso de la variable de entorno PROOF_EXPLAINER_XHS_BGM_LIBRARY para sobrescribir; la variable anterior EXPLAINER_XHS_BGM_LIBRARY solo se mantiene por compatibilidad. El primer lote de la biblioteca tiene 100 pistas, divididas en 10 categorías: Concentración y Vida Diaria, Noche Lluviosa y Clima, Ambiente y Sueños, Noche y Neón, Calidez y Ritmo Lento, Jazz y Librería, Ligero y Cotidiano, Oriente y Zen, Retro y Ritmo, Mundo y Sensación Cinematográfica. 100 pistas son solo un grupo de materiales invocables, no son las Top 100 populares de Xiaohongshu, ni constituyen una clasificación de tendencias.
Requisitos Mínimos de Metadatos
Cada pista en index.json debe tener al menos:
{
"id": "bgm-001",
"relative_path": "audio/01_Concentración_y_Vida_Diaria/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"
}
Solo las pistas con review_status=approved, sync_allowed=true, commercial_allowed=true y una clase de licencia clara pueden incluirse en el video. reference_only solo se usa para registros de inspiración, blocked no se puede invocar. El audio de videos locales proporcionados por el usuario es por defecto review; solo cuando el usuario confirma que posee los derechos o ha obtenido autorización, se puede cambiar a user_owned. El permiso para empaquetar/re vender audio por separado es diferente de "incrustar en un video final", no se puede inferir por defecto.
El primer lote de la biblioteca usa el paquete de lanzamiento fijo de Open Lo-Fi v1.0.0, manteniendo en el directorio el catálogo ascendente, README, instantánea de la licencia y SHA-256. El README declara CC0 1.0, pero las muestras de terceros/derechos regionales no son auditados independientemente por este skill; rights_notes debe conservar esta advertencia. Si la fuente es Pixabay, Mixkit, OpenGameArt, DOVA, etc., se debe leer la página de licencia oficial elemento por elemento, no se puede raspar en lote ni usar una URL de vista previa como prueba de autorización/descarga formal. No descargar ni redistribuir fuentes de audio populares restringidas de XHS/TikTok/Instagram.
Reglas de Selección
random no es aleatorio sin restricciones:
Licencia o decodificación no conforme → Eliminar
Coincidencia de estado de ánimo +4
Coincidencia de energía/ritmo +3
Duración, bucleable, música instrumental +2
Usado recientemente -1
Conflicto vocal con tarjeta de captura -3
Primero conservar las 3–5 pistas con mayor puntuación, luego seleccionar una usando una semilla fija; escribir bgm_id, semilla y motivo de filtrado en selection_history.jsonl, sin llevar los registros de ejecución al directorio de entrega semanal.
Directorio Semanal, Nombres de Archivo y Estado
Explicación XiaohongshuXX/
└── Semana N/
├── <título>.mp4
└── <título>.md
Semana Npor defecto toma la semana ISO actual; cuando el usuario especifica un número de semana, se usa el del usuario.- El nombre del archivo es el título confirmado. Solo reemplazar caracteres prohibidos por el sistema, saltos de línea y
/, no cambiar silenciosamente a un número. - El directorio semanal solo puede contener pares de archivos MP4/Markdown, sin materiales temporales, registros o subdirectorios; cuando contiene múltiples contenidos, usar
audit_delivery.py --title <título>para auditar un par específico. - El directorio padre del directorio semanal debe ser exactamente
Explicación XiaohongshuXX, el nombre de la semana debe cumplir conSemana 1–Semana 53; el manifiesto interno se coloca en{{CREATOR_ROOT}}/.xhs-card-video-runs/(o una ruta fuera del directorio semanal especificada por el usuario). - El estado interno se puede escribir como:
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
Solo cuando ambos archivos finales se pueden abrir, audit_bgm.py y audit_delivery.py --manifest … pasan todas las verificaciones, la visualización/escucha humana ha sido confirmada y no hay acción de publicación externa, se puede informar local_ready.
Manejo de Fallos
- Falta captura/fondo/BGM disponible: Informar la carencia específica, detenerse en
WAIT_DATA, no descargar sustitutos no autorizados. - El título alteraría los hechos del post original: Detenerse en
WAIT_USER, dar los límites fácticos que necesitan confirmación. - El audio no se puede decodificar, el hash se duplica o faltan campos de licencia: Eliminar del grupo candidato, ejecutar
audit_bgm.py, no "usar primero y luego ver". - El BGM sigue con
human_listen_status=pending, el manifiesto falta/está dentro del directorio semanal, o la atribución CC BY no tiene lugar donde colocarse: Detenerse enWAIT_USER/AUDIT, no informarlocal_ready. - La proporción de renderizado, la legibilidad de la tarjeta o la pista de audio no son conformes: Eliminar esa salida temporal, reconstruir desde los materiales fuente; no superponer capas de parche.
- Cualquier solicitud de publicación pública, publicación programada o interacción: Mantener borrador y requerir explícitamente que el usuario confirme/ejecute personalmente; este skill solo carga en la bandeja de borradores de Xiaohongshu cuando el usuario lo solicita explícitamente, y debe detenerse en "Guardar borrador", sin publicar en su lugar.
Archivos de Referencia
references/xhs-video-contract.md: Restricciones de lienzo, tarjeta, audio y renderizado.references/bgm-library-contract.md: Directorio, licencia, campos y algoritmo de selección.references/delivery-checklist.md: Lista de verificación ejecutable antes de la entrega.references/run-manifest.md: Lista de verificación de fuente, licencia, hash y confirmación humana fuera del directorio semanal.references/content-generation-contract.md: Público objetivo, puntuación del tema, borrador inicial de Claude, edición profunda de Codex, mecanismo de título/cuerpo de 50 caracteres/5 etiquetas, y ruta final de revisión de cumplimiento.scripts/install_openlofi.py: Inicializar el primer grupo de 100 pistas desde un lanzamiento oficial fijo.scripts/select_bgm.py: Filtrar y seleccionar con semilla aleatoria, sin modificar el audio.scripts/ingest_bgm.py: Colocar audio local del usuario en la bandeja de entrada pendiente de revisión, sin otorgar derechos por defecto.scripts/confirm_bgm.py: Solo registrar la aprobación/rechazo de escucha humana según el ID especificado explícitamente por el usuario, sin tomar decisiones por él.scripts/audit_bgm.py: Verificar índice, rutas, decodificación, hash y campos de licencia.scripts/audit_delivery.py: Verificar el contrato de los dos archivos del directorio semanal, estado de borrador, estado de revisión de contenido, evidencia geométrica e información de flujo base del MP4.