Desglose de cuentas de Douyin (Benchmark)
Deja que el script se encargue de la recopilación de cuentas públicas, la agregación de datos y el renderizado HTML; el agente redacta un informe Markdown basado en report_data.json con límites de evidencia claros.
Límites a respetar
- Solo recopilar datos visibles públicamente en la web; no descifrar firmas, no eludir CAPTCHAs ni controles de acceso.
- Usar únicamente la sesión dedicada en
~/.douyin-benchmark/chrome-profile. No leer, copiar ni apuntar directamente al directorio de usuario habitual de Chrome, no extraer valores de cookies. - Los valores faltantes deben permanecer como faltantes, no reescribirlos como
0. Los "me gusta" solo pueden usarse como proxy de popularidad pública, no como indicador de rendimiento de reproducción, tasa de interacción o efecto de seguidores. - Distinguir correctamente entre: formulario de inicio de sesión normal, verificación de seguridad real, y error de servicio de página. Ante verificación de seguridad, error de servicio de página o una respuesta vacía que indique bloqueo, detenerse; no reintentar en bucle, no cambiar IP automáticamente, no crear tareas retrasadas automáticas ni prometer finalización posterior.
Preparación inicial
Ejecutar en el directorio de este Skill:
npm ci
node scripts/login.js
login.js abre un navegador dedicado, guarda la sesión automáticamente y se cierra cuando se verifica la entrada a una cuenta real. Para comprobar una sesión existente, ejecutar node scripts/login.js --check.
Ejecución con un solo comando
Dar prioridad a que el usuario proporcione el enlace corto de "Compartir perfil" de la app Douyin. Un número de cuenta de Douyin no es un sec_uid; construir directamente /user/<número> puede redirigir silenciosamente al feed.
OUT="$HOME/douyin-benchmark-output/<identificador_de_cuenta>"
node scripts/run_benchmark.js "<enlace_compartir_perfil/sec_uid/número_de_douyin/nombre_de_usuario>" "$OUT" \
--expected-id "<número_de_douyin, opcional>"
Por defecto se usa Chrome con interfaz gráfica, mejorando la observabilidad y coincidiendo con el User-Agent real de un navegador. Solo añadir --headless explícitamente en entornos sin interfaz gráfica. El script ejecuta secuencialmente:
- Resolución del enlace corto o
sec_uid; solo usa búsqueda interna si se proporciona nombre de usuario o número de Douyin. - Recopilación de perfil, publicaciones y colecciones, escribiendo
account_full_raw.json. - Si hay publicaciones, genera
report_data.jsoneinforme_analisis.html. - Actualiza
run_status.jsondurante todo el proceso; no continúa el análisis si falla.
Leer el estado primero, luego escribir conclusiones
Leer run_status.json y account_full_raw.json.capture:
complete: El endpoint devolvióhas_more=0. Se puede escribir un informe a nivel de cuenta; seguir verificando la diferencia entre el número total de publicaciones en el perfil y el número recopilado.partial: Solo escribir un "Informe de muestra recopilada", indicando claramente cerca del título el tamaño de la muestra, el total de publicaciones en el perfil y la cobertura; no usar términos como "completo" o "máximo de la cuenta".blocked_empty_body: El endpoint de publicaciones devolvió HTTP 200 pero cuerpo vacío. Detener las solicitudes, solo entregar una instantánea del perfil y diagnóstico; los reintentos posteriores deben ser decididos por el usuario, como máximo una vez.challenge: Pedir al usuario que complete la verificación en el navegador dedicado y luego reintentar una vez; no intentar eludir.login_required: La página muestra un formulario de inicio de sesión normal, no una verificación de seguridad. Ejecutar el script de inicio de sesión y reintentar solo una vez si tiene éxito.page_service_error: El área de publicaciones muestra claramente "Servicio anormal, actualice para obtener datos". Detener la actualización; después de verificar el estado de la sesión, reintentar como máximo una vez.no_post_response: Puede deberse a un error de entrada o cambio en la página/API. Primero verificarsec_uidy la página con interfaz gráfica; no aumentar ciegamente el número de desplazamientos.endpoint_error: El endpoint de publicaciones devolvió un error HTTP/API o contenido no JSON. Conservar el diagnóstico y detener el análisis; primero verificar cambios en la página/API.
Redacción del informe Markdown
Solo cuando report_data.json exista y contenga publicaciones analizables, leer completamente references/report-template.md y escribir $OUT/informe_analisis.md siguiendo la estructura de nueve secciones.
Dividir el contenido en tres categorías y redactar con claridad:
- Hechos: Campos públicos y resultados de cálculos del JSON.
- Observaciones: Títulos, descripciones, nombres de colecciones, portadas o videos que se hayan abierto realmente.
- Inferencias: Identidad de la cuenta, ruta de monetización, fórmula de contenido; escribir la evidencia y el nivel de confianza, no presentarlo como un hecho.
Si no hay texto de comentarios, no escribir sobre "reacciones emocionales populares"; si no se ha visto ningún video, no afirmar detalles sobre ángulos de cámara, voz en off, guion o actuación. Cuando el usuario especifique su propio nicho, se puede adaptar la lista de elementos replicables.
Verificación
account_full_raw.json,run_status.json,report_data.json,informe_analisis.html,informe_analisis.mddeben tener estados coherentes.- Tanto el HTML como el Markdown deben mostrar la muestra real recopilada, el número total de publicaciones en el perfil, la cobertura y el
capture_status. - En caso de bloqueo, revisar
capture.diagnostics.page: solo registrar título, ruta, señales booleanas de inicio de sesión/desafío/error de servicio, y número de enlaces de video; no guardar el cuerpo de la página ni cookies. - Los números deben coincidir punto por punto con
report_data.json; los valores faltantes mostrar—/Desconocido. - El HTML debe poder abrirse sin conexión; el texto externo debe estar escapado; que una portada no cargue no debe afectar al cuerpo.
- El HTML no debe desbordarse horizontalmente en toda la página; el título de la publicación más reciente debe ser legible. La frecuencia de publicación debe mostrar los últimos 12 meses basada en el número de publicaciones; solo si la recopilación fue completa, los meses sin publicaciones se rellenan con 0.
- El Markdown debe tener las nueve secciones completas, incluyendo: metodología de datos, límites de evidencia, lista de elementos replicables y elementos que no se deben copiar directamente.
Configuración
DOUYIN_PROFILE_DIR: Directorio de sesión dedicado; por defecto~/.douyin-benchmark/chrome-profile.DOUYIN_BROWSER_CHANNEL: Por defectochrome; al establecerchromium, instalar primero Playwright Chromium.DOUYIN_HEADLESS=true: Forzar modo sin cabeza; por defecto con interfaz gráfica.DOUYIN_SCROLL_WAIT_MS: Límite inferior del intervalo de desplazamiento, por defecto 1600 ms; no usarlo para recopilación de alta frecuencia.