Blog · BL-04

Por qué la captura de comentarios de YouTube omite respuestas: doble paginación y verificación de integridad

Los commentThreads de YouTube no siempre incluyen todas las respuestas. A partir de la documentación oficial, se explican comments.list, parentId, la doble paginación, la desduplicación y las diferencias de conteo de comentarios, y se proporciona un método reproducible de validación de recolección.

Para evitar omitir respuestas al capturar comentarios de YouTube, verifica primero si solo leíste commentThreads. Las respuestas incluidas en la lista de hilos no siempre son completas; los hilos del vídeo deben paginarse, y las respuestas de cada comentario principal también pueden requerir su propia paginación. Terminar la primera capa no significa haber obtenido todas las respuestas.

Este no es un problema nuevo. En la discusión histórica en Stack Overflow, Baskaya ya se encontró con discrepancias entre el recuento de respuestas y el contenido devuelto. Las respuestas antiguas contienen conjeturas sobre la integración de Google+ de esa época y no sirven para explicar los fallos actuales. Lo que sigue teniendo valor de referencia es la pregunta que plantea: ¿estás contando hilos, comentarios o un subconjunto de respuestas devuelto por la interfaz?

Este artículo explica esta diferencia según la documentación oficial vigente hasta el 2026 de 9 de 5, y proporciona un método para verificar los resultados de la recolección. Se analizan los contratos de la interfaz oficial de YouTube, no el informe de pruebas prácticas de EveryInfra, y no se garantiza la recuperación de contenido que ya no sea accesible.

Por qué las respuestas en commentThreads están incompletas

En la descripción de recursos de YouTube, un commentThread contiene el comentario principal y las respuestas que pueda incluir. El comentario principal se encuentra en snippet.topLevelComment y la lista de respuestas en replies.comments; esta última puede ser solo un subconjunto. snippet.totalReplyCount es el recuento de respuestas de ese comentario principal y no se puede comparar directamente con la longitud de toda la lista de hilos.

Supón que un hilo sintético declara tener 12 respuestas, pero el objeto actual solo incluye 5. El valor 5 aquí no es una cantidad que el programa de captura pueda dar por finalizada, ni es motivo para rellenar la matriz devuelta hasta alcanzar 12 elementos. La acción correcta es seguir comprobando la entrada de respuestas de ese comentario principal, en lugar de solicitar repetidamente el mismo objeto de hilo esperando que la próxima vez devuelva más por sí mismo.

Otra distinción fácil de pasar por alto es el ID del hilo frente al ID del comentario principal. Deben leerse y registrarse por separado desde sus recursos correspondientes; no asumas que siempre son intercambiables en tu programa solo porque en una muestra ambas cadenas de texto coincidan. Que algo «parezca igual» en el modelo de datos no significa que tenga el mismo propósito en el contrato de la interfaz.

Mantén el progreso de la paginación por separado para comentarios principales y respuestas

La commentThreads.list oficial permite leer hilos usando videoId y continuar con la página siguiente mediante nextPageToken de la respuesta. El límite de maxResults es de un máximo de 100 elementos por página; no se obtienen todos los comentarios del vídeo en una sola solicitud, ni un hilo tiene un límite de solo 100 respuestas.

Para un comentario principal específico, sigue las reglas de comments.list, pasa el ID de dicho comentario a parentId y procesa el nextPageToken de su propia consulta de respuestas. El token de paginación de esta consulta pertenece a las respuestas, por lo que no se puede reutilizar en la consulta de hilos del vídeo ni con el token de otro comentario principal.

Durante la implementación, puedes dividir el trabajo en dos niveles de tareas: la tarea del vídeo descubre los comentarios principales y la tarea del comentario principal se encarga de recuperar las respuestas. Cada comentario principal mantiene su propia posición de continuación y su motivo de finalización. De este modo, una discusión con una gran cantidad de respuestas no convertirá a los demás hilos ya finalizados en tareas que deban empezar de cero.

Las condiciones de solicitud también deben guardarse junto con el progreso; por ejemplo, si se usó searchTerms, el orden seleccionado o el vídeo de destino. Si se aplicó un filtro de palabras clave desde el principio, la declaración de integridad posterior solo cubrirá ese rango de consulta y no se deben omitir los filtros en el archivo exportado para convertirlo en «todos los comentarios del vídeo».

Integra las condiciones de finalización en los resultados y no solo en los registros

Se recomienda separar el contenido de los comentarios del progreso de la recolección. El contenido se desduplica por plataforma y ID de comentario, conservando el vídeo, la pertenencia al comentario principal y la hora de observación; el progreso describe el estado actual de la tarea. Esta es una recomendación de diseño a nivel de aplicación; los siguientes campos no son campos devueltos originalmente por YouTube o EveryInfra.

Un registro mínimo de progreso puede responder si la lista de hilos ha llegado a la última página, qué respuestas de comentarios principales han llegado al final, cuáles se detuvieron debido a errores de solicitud o por límites de presupuesto de tareas, y cuál fue la hora de la última confirmación. Escribir únicamente success: true no permite expresar que «la capa superior ha terminado, pero a un comentario principal aún le faltan dos páginas por obtener».

La desduplicación debe realizarse al guardar el contenido. Si el proceso se detiene después de escribir una página, es posible volver a obtener la misma página al reanudar; actualizar los registros existentes por ID es más fiable que deducir por el texto del comentario. Dos usuarios que escriban frases cortas idénticas siguen siendo dos comentarios distintos, y editar el texto de un mismo comentario no debe convertirlo de inmediato en dos opiniones de usuarios independientes.

El avance del progreso debe registrarse solo después de que el contenido se haya guardado con éxito. Si registras la página siguiente antes de guardar la actual, un fallo a mitad del proceso podría omitir datos. Permitir la relectura y la desduplicación suele ser más fácil de verificar que permitir saltos de página silenciosos. Si se producen duplicados en los cursores o pasa demasiado tiempo sin nuevos IDs, detén el proceso y marca una anomalía; no trates los reintentos continuos de la misma página como un avance válido.

Discrepancias en el recuento de comentarios: diferencias que no se pueden solucionar

Verifica primero la jerarquía de objetos, los criterios de filtrado y la doble paginación antes de revisar los tipos de error. La documentación oficial de la lista de hilos distingue entre commentsDisabled, permisos insuficientes y vídeos no encontrados, entre otros casos. Ninguno de estos debe presentarse como «el vídeo no tiene comentarios actualmente». Una matriz vacía procedente de una consulta exitosa no constituye la misma evidencia que una matriz vacía devuelta tras descartar una excepción en el cliente.

En cuanto a las diferencias de cantidad, también se debe registrar la ventana de observación: el recuento visible en la página, los metadatos del hilo y los resultados de la paginación no se obtienen necesariamente en el mismo momento. Una simple diferencia numérica no permite confirmar qué contenido falta ni reconstruir su texto. Al analizar texto legible, utiliza como muestra los comentarios obtenidos y atribuibles reales, informando al mismo tiempo del alcance incompleto.

Sugerimos redactar el estado de forma verificable, por ejemplo: «La página de hilos de esta consulta ha finalizado; se han detectado dos tareas de respuesta pendientes en los comentarios principales». Esto resulta más honesto que un porcentaje de integridad de 98%, ya que este último requiere un denominador total fiable y de la misma naturaleza. Si no tienes un denominador, evita crear un porcentaje que parezca exacto.

Si te enfrentas a problemas generales de HTTP o parámetros, puedes consultar el apartado de gestión de errores de la API en el sitio. Los reintentos pueden solucionar fallos temporales parciales, pero no amplían los permisos ni convierten un objeto de respuestas parciales en un conjunto de datos completo.

Comprueba tu recolector con cuatro muestras pequeñas

En un objeto de prueba o entorno controlado al que tengas acceso, verificar cuatro escenarios concretos facilita la localización de errores mucho más que ejecutar una gran cantidad de vídeos desde el principio.

  1. Una respuesta asociada a un hilo es menor que la cantidad declarada: el programa debe programar la tarea de respuestas en lugar de declarar la finalización directamente.
  2. Una lista de respuestas tiene una página siguiente: el programa debe continuar con ese comentario principal y no limitarse a recorrer la lista de hilos del vídeo.
  3. Se lee la misma página dos veces: el recuento final de comentarios únicos no debe duplicarse y la relación entre padres e hijos debe mantenerse coherente.
  4. La solicitud de un comentario principal falla: los demás resultados pueden conservarse, pero la exportación debe indicar la incompletitud parcial y no sobrescribir los resultados válidos anteriores con respuestas vacías.

La validación también debe comprobar el uso de salida. Al realizar agrupaciones de temas, si una respuesta del tipo «esto es incorrecto» se separa de su comentario principal, carece casi por completo de interpretabilidad. Conservar la relación con el comentario principal ayuda a las personas o a los modelos a volver al contexto de la discusión. La relación de comentarios y respuestas de Douyin en el sitio también aborda este problema de modelado, pero los parámetros de solicitud de distintas plataformas no se pueden copiar directamente.

Las indicaciones anteriores son pruebas sugeridas y no se corresponden con un experimento real en vídeos ejecutado en este artículo. Si ya dispones de un JSON exportado desde la interfaz, puedes verificar estas estructuras y estados de forma desconectada antes de decidir si necesitas autorización para recuperar datos adicionales.

Lo que realmente debes entregar es una muestra de comentarios con límites definidos

«Cuántas entradas se han capturado» es solo una parte del resultado. Una exportación apta para análisis debe indicar también el objetivo, los filtros, la hora de captura, la relación entre padres e hijos, el método de desduplicación y los elementos pendientes. El informe de análisis también debe heredar estos límites y no desechar las brechas conocidas en el origen solo por haber entrado en la fase de resumen.

Al seleccionar una interfaz de datos encapsulada, puedes ayudarte del método de verificación de catálogos en la introducción a la API de datos unificada para confirmar paso a paso qué campos y capacidades de paginación ofrece realmente. No apliques directamente los parámetros oficiales de este artículo a otra API, ni asumas que la compatibilidad con comentarios significa que se han cubierto todos los niveles y contenidos históricos.

La clave de la recolección de comentarios de YouTube no radica en aumentar constantemente la cantidad por página, sino en garantizar que la asignación de cada respuesta, el progreso de cada tarea de paginación y el motivo de cada detención se puedan explicar. Solo así los resultados de la captura podrán servir como base para el análisis y evitar convertirse en un archivo incapaz de aclarar qué información se ha omitido.