VS Code Copilot cloud automations: clasificar cada día las reseñas de App Store y Google Play

Una automatización de Copilot en la nube lee cada día reseñas de App Store y Google Play por MCP y las agrupa en fallos, pagos y acceso. API: $0.0056/día.

Ilustración sobre fondo oscuro. A la izquierda, un portátil cerrado descansa sobre una mesa de noche. Arriba a la derecha flota un pequeño taller de vidrio esmerilado con forma de nube. Dentro, un brazo robótico fino reparte tarjetas con estrellas en cuatro bandejas, y una de ellas es verde azulado. Dos siluetas de teléfono sin logotipo envían las tarjetas a la nube por líneas punteadas. El portátil está apagado y la clasificación de reseñas sigue en la nube.

El 28 de octubre de 2026, GitHub llevó a VS Code las automatizaciones de Copilot en la nube (Copilot cloud automations). Escribes una instrucción, eliges una hora y un agente en la nube de Copilot la ejecuta cada día en GitHub, aunque tu portátil esté apagado. Lo probamos con una tarea muy común en equipos de apps móviles: repartir cada mañana las reseñas negativas nuevas en fallos, pagos y problemas de acceso.

Hicimos llamadas reales a las capacidades app_store/reviews y google_play/reviews de EveryInfra en dos noches: 10 el 11 de noviembre de 2026 con datos de Estados Unidos, y otras el 12 de noviembre con el App Store de México y España. Con una ejecución diaria sobre cuatro fichas de tienda, la API cuesta $0.0056 al día, unos $0.17 en 30 días. Para lectores hispanohablantes hay un dato que pesa más: una lista de palabras clave en inglés solo clasificó 8 de 72 reseñas negativas de Duolingo en México (11%). La misma lista escrita en español clasificó 39 (54%).

No creamos esta automatización en un repositorio de GitHub. Todos los pasos del lado de Copilot salen de la documentación de GitHub y de VS Code, y los marcamos como «ejemplo de configuración». Todas las cifras de EveryInfra salen de llamadas reales, con la hora de Singapur (SGT) de cada una.

Ilustración isométrica sobre fondo oscuro. A la izquierda, dos siluetas de teléfono sin logotipo vierten una fila de tarjetas con estrellas en un tamiz metálico ancho. La mayoría cae por los agujeros a un cubo gris grande. Las pocas que quedan arriba se deslizan a cuatro bandejas pequeñas a la derecha, con iconos sencillos: un engranaje roto, una moneda, una llave y una antena. Una bandeja es verde azulado. La mayoría de las reseñas no hace falta leerlas y unas pocas negativas se reparten por tipo de problema.
La tarea diaria es un tamiz: la mayoría de las reseñas no se leen y unas pocas negativas se reparten en fallos, pagos, acceso y sincronización.

La tarea: un informe de reseñas negativas cada mañana

Un equipo publica una app para iOS y Android. Cada mañana, el repositorio debe tener un informe nuevo con las reseñas de 1 a 3 estrellas aparecidas desde la última ejecución. El informe pone cada reseña en un grupo: fallos y errores, pagos y suscripción, acceso y cuenta, sincronización y dispositivos, anuncios, cambios de diseño u otros. Si un grupo se dispara, por ejemplo una docena de «se cierra después de actualizar» en tres días, la automatización abre una incidencia (issue) con ejemplos y la versión de la app.

La tarea encaja con las automatizaciones de Copilot por tres motivos. Va con horario y debe terminar antes de que el equipo empiece a trabajar. Escribe en el repositorio, y el agente en la nube ya tiene herramientas de GitHub para archivos e incidencias. Sus datos están fuera del repositorio, así que el agente necesita un servidor MCP o un script que los traiga. La API de datos de EveryInfra cubre ese tercer punto.

Elegimos una app grande y una mediana. Duolingo (ID del App Store 570060128, paquete Android com.duolingo) es una app de idiomas con muchísimas reseñas. Strava (ID 426826309, paquete com.strava) registra actividad deportiva y recibe un volumen medio. Solo leímos reseñas públicas, sin iniciar sesión en ninguna cuenta. Las llamadas con datos de Estados Unidos se hicieron el 11 de noviembre de 2026 entre las 00:22 y las 00:42 SGT. Las de México y España, el 12 de noviembre entre las 00:14 y las 00:17 SGT.

¿Qué son las VS Code Copilot cloud automations? El anuncio del 28 de octubre, punto por punto

El registro de cambios de GitHub del 28 de octubre de 2026 anunció Copilot Automations en Visual Studio Code. Según ese texto, hace falta VS Code 1.144 y activar el ajuste chat.automations.cloud.enabled. La función está en los planes Copilot Pro, Pro+, Max, Business y Enterprise, en la pestaña Automations de la ventana Agents. Ese día, la página de descarga de VS Code ofrecía la versión 1.144.1.

La página de automatizaciones de VS Code, con fecha del 11 de noviembre de 2026, ya dice otra cosa sobre los ajustes. Según ella, las automatizaciones y su gestión en la nube vienen activadas por defecto. Solo hay que revisar chat.automations.enabled y chat.automations.cloud.enabled si la opción Run in the Cloud no aparece en el formulario. Citamos las dos fuentes porque quien siga el anuncio puede buscar un ajuste que ya está encendido.

GitHub publicó ese mismo día dos entradas relacionadas: límites de gasto para automatizaciones y automatizaciones compartidas por un equipo. Las secciones de coste y de límites las usan más abajo.

Con todo eso junto, una automatización tiene tres partes: una instrucción, un disparador y un conjunto de herramientas. La instrucción dice qué hacer, qué leer y qué entregar. El disparador es un horario, una ejecución manual o un evento de GitHub, como una incidencia nueva. Las herramientas son las de GitHub más las herramientas MCP configuradas en el repositorio. Cada ejecución abre una sesión del agente en la nube de Copilot en un entorno temporal, y el registro queda en GitHub.

DatoQué dice la fuenteFuente
Fecha28 de octubre de 2026Registro de cambios de GitHub
Versión de VS Code1.144 o posteriorRegistro de cambios, notas de VS Code 1.144
Ajusteschat.automations.cloud.enabled (anuncio); activado por defecto (documentación del 11 de noviembre de 2026)Registro de cambios, documentación de VS Code
PlanesCopilot Pro, Pro+, Max, Business, EnterpriseRegistro de cambios de GitHub
RepositoriosSolo privados e internosDocumentación de VS Code
Horarios en la nubeManual, diario, semanal; minutos 00/15/30/45; hora en UTCDocumentación de VS Code
HerramientasLas de GitHub y las MCP de la configuración del repositorioDocumentación de VS Code y de GitHub
CobroUna sesión del agente por ejecución, en AI credits, más minutos de ActionsDocumentación de GitHub
APIREST «agent automations», vista previa pública, versión 2026-03-10Documentación REST de GitHub

Hay una fila que se pasa por alto con facilidad. La página de VS Code dice que una automatización en la nube no acepta el modo local, los ajustes de aprobación locales, los agentes personalizados ni la configuración MCP local. Por tanto, el servidor MCP de EveryInfra que tengas en tu VS Code no existe para la automatización. Hay que darlo de alta otra vez en los ajustes del repositorio en GitHub, como explica la sección de MCP más abajo.

¿Con qué frecuencia puede ejecutarse? En la nube, diaria o semanal

Para una tarea de reseñas, el dato clave es el intervalo más corto. Bajo la tabla «Set a recurring schedule» de la documentación de VS Code, el texto es claro. Las automatizaciones en la nube admiten Manual, Daily y Weekly, y los horarios por hora y con cron son solo para ejecuciones locales. El minuto tiene que ser 00, 15, 30 o 45 y la hora se guarda en UTC. Capturamos ese fragmento de la página.

Captura de la sección Set a recurring schedule de la documentación de automatizaciones de VS Code. Arriba hay una tabla con los tipos de horario Manual, Hourly, Daily, Weekdays, Weekly y Cron y lo que hace cada uno. Debajo, un recuadro verde azulado marca una frase: las automatizaciones en la nube solo admiten Manual, Daily y Weekly, Hourly y Cron son para automatizaciones locales, y la hora se guarda en UTC.
Los horarios que VS Code ofrece para automatizaciones en la nube. El recuadro verde azulado marca la frase que citamos. Captura del 11 de noviembre de 2026, hora de Singapur. Documentación de automatizaciones de VS Code, captura

Dos fuentes no coinciden del todo. La página de GitHub sobre cómo crear automatizaciones incluye horarios por hora, diarios y semanales, disparadores por incidencias y pull requests, y un disparador por API. Una incidencia de prueba de VS Code del 11 de octubre (número 340970) también menciona Hourly y Weekdays. Nuestra lectura es que una automatización creada en la web de GitHub puede ir cada hora, mientras que la creada en VS Code solo ofrece diaria y semanal. La página de VS Code es más reciente que la incidencia, así que seguimos la página.

Guardar la hora en UTC obliga a hacer cuentas según el país. La documentación de VS Code recomienda revisar la hora guardada después de un cambio de horario, algo que afecta a Madrid y no a Ciudad de México.

CiudadHora UTC para un informe a las 08:00Cambio de horario
Ciudad de México (UTC−6)14:00No
Bogotá (UTC−5)13:00No
Buenos Aires (UTC−3)11:00No
Madrid (CET / CEST)07:00 en invierno, 06:00 en veranoSí, revisar en marzo y octubre

El flujo completo: seis pasos por ejecución

Animación de flujo con seis cajas en dos filas. Un punto recorre las cajas, una vuelta cada nueve segundos. Paso 1, disparador: cada día a las 01:00 UTC, programado en GitHub. Paso 2, sesión: el agente en la nube de Copilot lee las instrucciones del repositorio. Paso 3, obtener: app_store/reviews y google_play/reviews. Paso 4, quitar duplicados y filtrar: descartar IDs ya vistos y dejar 1 a 3 estrellas. Paso 5, clasificar: fallos, pagos, acceso, sincronización, otros. Paso 6, informe: escribir reports/fecha.md y abrir una incidencia si hay un pico. Una nota indica que la API cuesta 4 llamadas al día, $0.0056 en total, y que el modelo solo lee reseñas filtradas de 1 a 3 estrellas.

La figura muestra el flujo que recomendamos. El paso 1 es el horario de GitHub y en el paso 2 el agente lee los archivos de instrucciones del repositorio. El paso 3 trae las reseñas nuevas, por MCP o con un script. El paso 4 quita por ID las ya vistas y deja solo las de 1 a 3 estrellas. En el paso 5 el modelo pone cada reseña en un grupo fijo y compara los recuentos con los días anteriores. El paso 6 escribe el informe y, si hace falta, abre una incidencia.

La decisión de diseño más importante está entre los pasos 3 y 4. Si el agente llama a la API por MCP, cada reseña entra completa en el contexto del modelo, con autor, enlace al avatar y votos de utilidad. Si un script trae, deduplica y filtra antes, el modelo lee un archivo pequeño. Las dos vías funcionan, y la sección «Primero el script» mide los tokens de cada una.

Cómo se conecta el Copilot cloud agent a MCP: el JSON de los ajustes del repositorio

El agente en la nube lee sus servidores MCP de los ajustes del repositorio: Settings, luego Copilot, luego MCP servers, donde se pega un bloque JSON. La página de GitHub sobre servidores MCP describe el formato. El nivel superior es mcpServers, y cada servidor lleva type (local, stdio, http o sse), url y headers si es remoto, y una lista blanca tools. Solo funcionan herramientas MCP, no recursos ni prompts, y los servidores remotos que exigen OAuth todavía no son compatibles. El servidor MCP remoto de EveryInfra usa clave de API y no OAuth, así que encaja. El bloque siguiente es un ejemplo de configuración que no guardamos en ningún repositorio.

json
{
  "mcpServers": {
    "everyinfra": {
      "type": "http",
      "url": "https://api.everyinfra.com/mcp",
      "headers": {
        "Authorization": "Bearer $COPILOT_MCP_EVERYINFRA_KEY"
      },
      "tools": ["everyinfra_list_capabilities", "everyinfra_call_api", "everyinfra_get_job"]
    }
  }
}

La clave no va en el JSON. La página de GitHub sobre secretos del agente explica las reglas. En Secrets and variables existe un tipo Agents. Un secreto cuyo nombre empieza por COPILOT_MCP_ solo llega a los servidores MCP y no se convierte en variable de entorno del agente. Los demás secretos sí llegan como variables de entorno a los comandos y scripts que ejecuta el agente, y los registros ocultan sus valores.

Por eso la vía MCP usa COPILOT_MCP_EVERYINFRA_KEY y la vía del script un nombre sin prefijo, como EVERYINFRA_API_KEY. Con el nombre equivocado, la primera llamada devuelve 401.

En la lista blanca bastan tres herramientas. A las 00:22 SGT del 11 de noviembre enviamos una petición tools/list al servidor MCP de EveryInfra y devolvió 12 herramientas. La clasificación de reseñas solo usa tres: listar capacidades, llamar a la API y consultar un trabajo asíncrono. La lista blanca tiene otro efecto. La especificación MCP da a cada herramienta unas annotations, y readOnlyHint indica que no modifica nada.

En nuestra respuesta, everyinfra_list_capabilities y everyinfra_get_job son de solo lectura, y everyinfra_call_api no lo es porque cobra. La página de GitHub sobre MCP dice que la revisión de código de Copilot solo usa herramientas con readOnlyHint verdadero. Así que la misma configuración no puede llamar a la API durante una revisión de código, pero sí en sesiones del agente y en automatizaciones.

Para probarlo, GitHub propone asignar una incidencia a Copilot y mirar en el registro que el paso «Start MCP Servers» liste el servidor. Hay además un caso abierto. En la discusión 211107, del 27 de octubre de 2026, un usuario cuenta que las herramientas MCP propias arrancan en una automatización pero no se pueden llamar, mientras que en una sesión manual sí funcionan. Sin respuesta de GitHub cuando la leímos, conviene lanzar la primera ejecución a mano y buscar en el registro una llamada real a everyinfra_call_api.

Queda el cortafuegos. La página de GitHub sobre el cortafuegos dice que solo afecta a los procesos que el agente lanza con su herramienta Bash, no a los servidores MCP. La vía MCP no necesita cambios. En la vía del script, la petición sale de Bash y hay que añadir api.everyinfra.com a la lista de permitidos del repositorio. La referencia de la lista de permitidos enumera los dominios por defecto, y el nuestro no está.

Dos capacidades: `app_store/reviews` y `google_play/reviews`

El catálogo gratuito de EveryInfra (GET https://api.everyinfra.com/api/v1/social/catalog, sin coste) tenía 573 capacidades cuando lo leímos. La clasificación usa dos. Otras dos ayudan en la primera configuración: app_store/search encuentra una app del App Store y su ID numérico, y google_play/profile lee la ficha de una app Android. Las cuatro están en las páginas de la API de datos del App Store y la API de datos de Google Play. Las páginas de cada capacidad son reseñas del App Store, reseñas de Google Play, búsqueda en el App Store y ficha de Google Play.

Punto`app_store/reviews``google_play/reviews`
ID de la appapp_id numérico, por ejemplo 426826309app_id con el paquete, por ejemplo com.strava
País e idiomacountry elige la tienda del paíscountry no cambia las reseñas; language sí
Ordennewest o most_helpfulnewest o top_rated
Reseñas por llamada30 por defecto, 500 como máximo40 por defecto, 200 como máximo
PáginasNo pagina, una llamada lo trae todopage_token, válido 24 horas, tope de 200
Estrellasrating (y rating_scale)score
Otros camposid, title, text, author, app_version, helpful_count, posted_atid, text, author_name, thumbs_up, reply_text, reply_at, app_version, language, url, posted_at
Precio$0.001389 por llamada$0.001389 por llamada

El precio es por llamada, no por reseña: 500 reseñas del App Store cuestan lo mismo que 30, así que conviene poner siempre limit al máximo. A las 00:23 SGT del 11 de noviembre pedimos 100 reseñas de Strava en Google Play y recibimos un token de página siguiente. La segunda página trajo otras 100 con stop_reason depth_limit, el tope de 200. Paginar solo añade un cobro, así que basta una llamada con limit 200 por ficha de Google Play y una con limit 500 por ficha del App Store.

Las dos tiendas usan nombres de campo distintos, así que el script los unifica antes de nada. Las estrellas son rating en una tienda y score en la otra, y solo el App Store tiene título. Las dos usan posted_at, pero el App Store trae un desfase del Pacífico como -07:00 y Google Play usa UTC. Hay que pasar todo a una misma zona antes de contar por día; si no, el límite de «ayer» se mueve 7 u 8 horas.

Un viaje de ida y vuelta real: qué envía el agente y qué recibe

En una sesión del agente, una llamada a una herramienta MCP es una petición tools/call estándar. A las 00:26:38 SGT del 11 de noviembre enviamos una con ese formato directamente al servidor MCP de EveryInfra: 20 reseñas recientes de Strava en el App Store de Estados Unidos. La respuesta fue un bloque de texto JSON de 10.725 caracteres, con count 20 y charged_usd 0.001389 en billing. El modelo de la sesión ve ese bloque entero, sin comprimir.

json
{"jsonrpc":"2.0","id":2,"method":"tools/call",
 "params":{"name":"everyinfra_call_api",
  "arguments":{"platform":"app_store","action":"reviews",
   "params":{"app_id":"426826309","country":"us","sort":"newest","limit":20}}}}
Captura de respuestas reales de la API de EveryInfra en dos partes. Arriba, la petición MCP tools/call y su respuesta a las 00:26:38 SGT: everyinfra_call_api con platform app_store, action reviews, el ID de Strava 426826309 y limit 20. La respuesta muestra dos reseñas con el autor oculto, y unos recuadros verde azulado marcan count 20 y charged_usd 0.001389. Abajo, una respuesta 429 de las 00:22:43: el mensaje dice que esta clave admite 10 llamadas por minuto y que se reintente en 16 segundos. Los recuadros marcan retry_after 16 y Nothing was charged.
Un viaje de ida y vuelta por MCP y una respuesta 429, ambos reales. Los autores están ocultos y se quitaron los campos de saldo. Captura del 11 de noviembre de 2026, hora de Singapur. Respuestas reales de la API de EveryInfra, 2026-11-11, de 00:22 a 00:26 SGT

La mitad inferior de la captura muestra una petición limitada. Nuestra clave de prueba tiene su propio límite de 10 llamadas por minuto, y otras tareas la usaban esa noche. A las 00:22:43 SGT, la petición de Duolingo en Google Play recibió un 429 con el motivo, retry_after de 16 segundos, retryable verdadero y la indicación de que no se cobró nada. Esperamos 21 segundos y a las 00:23:04 SGT llegaron 200 reseñas. A las 00:23:44 SGT hubo otro 429 con Strava en el App Store, y el reintento de las 00:24:11 SGT funcionó. Ninguno de los dos 429 se cobró.

La noche del 12 de noviembre apareció otro error. Tres llamadas a Google Play en español (00:15:46, 00:16:24 y 00:17:40 SGT) devolvieron 503 con el motivo capacity_exhausted: falta de capacidad momentánea, no nuestro límite, reintentar en 5 segundos. Las tres tenían charged_usd 0 y un bloque refund. En los dos casos la regla para la automatización es esperar retry_after segundos, reintentar como mucho tres veces y hacer una sola llamada por app y tienda en cada ejecución.

Prueba 1: ¿cuánto tiempo cubre una llamada?

Para saber si basta con una ejecución al día, primero hay que ver cuánto tiempo abarca una llamada. Tomamos el posted_at de la reseña más nueva y la más antigua de cada respuesta. Los cuatro conjuntos de Estados Unidos son muy distintos. En Duolingo, 200 reseñas de Google Play en inglés cubren 4,25 horas y 500 del App Store cubren 37,9 horas. En Strava, 200 reseñas de Google Play cubren 7,6 días y 450 del App Store cubren 123,9 días: 700 veces más que el caso más corto.

Gráfico de barras horizontales en escala logarítmica, diez veces por línea, titulado cuánto tiempo cubre una llamada. Cuatro barras: Duolingo Google Play inglés, 200 reseñas, 4,3 horas. Duolingo App Store Estados Unidos, 500 reseñas, 37,9 horas. Strava Google Play inglés, 200 reseñas, 7,6 días. Strava App Store Estados Unidos, 450 reseñas, 123,9 días. Una línea vertical verde azulado marca 24 horas, una ejecución al día, y solo la barra de Duolingo en Google Play queda por debajo. Fuente: nuestras llamadas reales del 11 de noviembre de 2026, de 00:22 a 00:29 SGT.
ConjuntoHora de la llamada (SGT)ReseñasTiempo cubiertoReseñas nuevas al díaDe 1 a 3 estrellas
Duolingo · App Store Estados Unidos00:22:2850037,9 horas316,6105 (21%)
Duolingo · Google Play inglés00:23:042004,25 horas1.130,627 (13,5%)
Strava · Google Play inglés00:23:21 y 00:23:31, dos páginas2007,6 días26,3102 (51%)
Strava · App Store Estados Unidos00:24:11450123,9 días3,6236 (52,4%)

Dos detalles merecen comentario. Primero, las 450 reseñas de Strava en el App Store cubren cuatro meses, del 7 de julio al 8 de noviembre de 2026: en una app con poco volumen, una llamada muestra un trimestre entero. Segundo, la proporción de reseñas negativas va al revés que el volumen. Duolingo tiene entre 13,5% y 21% de negativas y Strava más de la mitad, lo que no significa que una app sea peor: una app grande recibe muchas cinco estrellas rápidas que diluyen la proporción. En un informe hay que mirar el número de negativas y su cambio, no solo el porcentaje.

Prueba 2: ¿basta con una ejecución al día?

Si se divide el tope de una llamada entre el volumen diario, sale la parte que captura una ejecución diaria. El tope es 500 reseñas en el App Store y 200 en Google Play, y la parte no pasa de 100%. Tres de los cuatro conjuntos llegan al 100%. Duolingo en el App Store recibe unas 317 al día y Strava recibe de unas pocas a unas decenas. Solo Duolingo en Google Play en inglés recibe unas 1.131 al día, de modo que una llamada captura el 17,7%.

Gráfico de barras horizontales titulado con una ejecución al día, qué parte de las reseñas nuevas se captura. Duolingo Google Play inglés 17,7 por ciento, unas 1.130,6 reseñas al día, en verde azulado. Duolingo App Store Estados Unidos 100 por ciento, unas 316,6 al día. Strava Google Play inglés 100 por ciento, unas 26,3 al día. Strava App Store Estados Unidos 100 por ciento, unas 3,6 al día. El subtítulo dice que el tope por llamada es 500 en el App Store y 200 en Google Play, y que las reseñas nuevas al día son reseñas divididas entre el tiempo cubierto.

Las reseñas que se pierden no vuelven después. Google Play da las 200 más recientes y ahí se detiene, también con paginación. Para una app como Duolingo, el informe diario ve una franja de unas 4 horas y pierde las otras 20. El reparto por grupos dentro de esa franja puede seguir siendo razonable. Pero una frase como «este grupo creció» pierde fuerza, porque la franja puede caer justo después de una notificación push.

Ilustración isométrica sobre fondo oscuro. Una cinta transportadora larga lleva muchas tarjetas con estrellas. Al final hay una sola cesta pequeña con el borde verde azulado. Cuando se llena, la mayoría de las tarjetas cae por el extremo de la cinta y se amontona en el suelo. Sobre la cinta cuelga un reloj redondo con marcas y sin números. Las reseñas llegan demasiado rápido y una cesta que pasa una vez al día solo recoge una pequeña parte.
En una app con mucho volumen, una ejecución al día recoge una franja corta y el resto cae por el final de la cinta.

Para no perder nada de Duolingo hacen falta 6 ejecuciones al día, una cada 4 horas. Desde VS Code, una automatización en la nube va como mucho una vez al día, así que quedan dos caminos. El primero es crearla en la web de GitHub con horario por hora; cada ejecución abre una sesión y gasta AI credits y minutos de Actions. El segundo separa la obtención del análisis: un flujo programado normal de GitHub Actions ejecuta el script cada 4 horas, sin modelo, y añade las reseñas negativas nuevas a un archivo. La automatización corre una vez cada mañana y solo lee ese archivo. Ese camino cuesta 9 llamadas al día (6 para Duolingo en Android y 1 para cada una de las otras tres fichas), unos $0.375 en 30 días.

Para apps con volumen medio o bajo nada de esto importa: una ejecución diaria captura el 100% con mucho margen. Una prueba sencilla da el número para tu app. Haz una llamada manual al configurar y mira el plazo entre la reseña más nueva y la más antigua. Si supera 24 horas, basta una ejecución al día; si no, divide 24 entre ese plazo y redondea hacia arriba. Conviene poner esta comprobación en la instrucción para que el agente la repita cada vez, porque una versión grande o una promoción pueden multiplicar el volumen en una semana.

Prueba 3: la reseña más nueva ya tiene un día

El segundo dato que afecta a una ejecución diaria es el retraso. Restamos a la hora de la llamada la fecha de la reseña más nueva de cada respuesta. La tabla incluye también las llamadas repetidas que hicimos para comprobarlo.

ConjuntoRetraso de la reseña más nuevaLlamada repetida (SGT)Resultado
Duolingo · App Store Estados Unidos36,9 horas00:40:33, 18 minutos después500 de 500 iguales, 0 nuevas
Duolingo · Google Play inglés24,3 horas00:29:13, 6 minutos después177 iguales, 23 nuevas
Strava · App Store Estados Unidos44,3 horas(sin comparación)—
Strava · Google Play inglés24,4 horasde 00:41:50 a 00:42:10, unos 19 minutos después200 de 200 iguales
Duolingo · App Store México37,0 horas(sin repetición)12 de noviembre, 00:15:21 SGT
Duolingo · App Store España41,5 horas(sin repetición)12 de noviembre, 00:15:33 SGT

Los dos retrasos de Google Play superan apenas las 24 horas, y eso cuadra con la ayuda de Play Console, que habla de unas 24 horas antes de mostrar valoraciones y reseñas nuevas. En el App Store el retraso es mayor, de 36 a 44 horas, también en México y España, y las páginas de Apple sobre valoraciones y reseñas no dan una cifra. Las repeticiones muestran dos patrones. En Google Play, 23 de 200 reseñas de Duolingo eran nuevas a los seis minutos: la tienda las suelta sin parar, con un día de retraso. En el App Store, las 500 de Duolingo eran idénticas a los 18 minutos: esa tienda actualiza por tandas.

El retraso tiene tres consecuencias para el diseño. El informe debe indicar qué franja de fechas cubre, porque en realidad muestra reseñas de anteayer a ayer y no «las de hoy». «Nueva» se decide por ID y no por fecha, ya que una reseña publicada hace 40 horas puede aparecer por primera vez hoy. Y la hora exacta de arranque importa poco: media hora antes o después trae casi los mismos datos.

Prueba 4: ¿en qué grupos caen las reseñas negativas?

Escribimos las reglas como una tabla fija de palabras clave dentro del script, para que cualquiera pueda repetir las cuentas y para compararlas después con el modelo. Las reglas tienen un orden: primero fallos (crash, freeze, bug, not working, stuck), luego acceso y cuenta (log in, sign in, password, account), después pagos (subscription, charge, refund, premium, trial) y sincronización (sync, GPS, Garmin, watch, upload). Al final van anuncios y cambios de diseño (update, redesign, changed). Si una reseña cumple varias reglas, gana la primera; si no cumple ninguna, va a «otros». Fijamos estas reglas a las 00:27 SGT del 11 de noviembre, antes de mirar los recuentos.

Gráfico de barras apiladas en porcentaje titulado reseñas de 1 a 3 estrellas por regla de palabras clave. Cuatro barras. Duolingo Google Play inglés, 27 reseñas: otros 70 por ciento, pagos 15 por ciento. Duolingo App Store Estados Unidos, 105 reseñas: otros 52 por ciento, pagos 26 por ciento, cambios 10 por ciento. Strava Google Play inglés, 102 reseñas: otros 37 por ciento, fallos 19 por ciento, pagos 14 por ciento, acceso 12 por ciento, sincronización 11 por ciento. Strava App Store Estados Unidos, 236 reseñas: pagos 27 por ciento, otros 26 por ciento, fallos 19 por ciento, sincronización 12 por ciento, acceso 11 por ciento. La leyenda enumera fallos y errores, acceso y cuenta, pagos y suscripción, sincronización GPS y dispositivos, anuncios, cambios de diseño y actualizaciones, otros.
GrupoDuolingo · App StoreDuolingo · Google PlayStrava · App StoreStrava · Google Play
Fallos y errores504419
Acceso y cuenta112512
Pagos y suscripción2746314
Sincronización, GPS y dispositivos202811
Anuncios5201
Cambios de diseño y actualizaciones101147
Otros55196238
Total de 1 a 3 estrellas10527236102

Las dos apps tienen reseñas negativas muy distintas. En Duolingo dominan «otros» y pagos, y los fallos y problemas de acceso son raros; casi todo «otros» habla del diseño de las lecciones, del sistema de energía y del método, y las palabras clave no lo detectan. En Strava, pagos sigue en cabeza, pero fallos, sincronización y acceso juntos superan a pagos, algo lógico en una app que se conecta a relojes y graba rutas GPS. Un informe con solo porcentajes diría poco sobre Duolingo: de 27 reseñas negativas diarias en Android en inglés, 19 son «otros». Por eso la clasificación no puede depender solo de palabras clave.

Prueba 5: ¿cuánto acierta la regla de palabras clave?

Para saber si la regla sirve sola, sacamos 40 reseñas negativas de los cuatro conjuntos con una semilla aleatoria fija. Leímos título y texto de cada una, le dimos un grupo y lo comparamos con el de la regla. La regla acertó 23, falló 13 y se le escaparon 4 (dijo «otros» cuando había un grupo claro). Con solo 40 reseñas, la proporción indica un orden de magnitud: la regla acierta algo más de la mitad de las veces.

Gráfico de barras horizontales titulado acierta la regla de palabras clave, 40 reseñas aleatorias de 1 a 3 estrellas revisadas a mano. La regla acierta: 23 reseñas, 23 de 40, en verde azulado. La regla falla: 13 reseñas. La regla no detecta y dice otros: 4 reseñas. El subtítulo dice que el autor leyó cada título y texto, asignó un grupo y lo comparó con la primera regla que coincidía. La muestra es pequeña y solo indica el orden de magnitud.

Los 13 fallos siguen un patrón. La palabra «account» provoca la mayoría: alguien pagó un año entero y no puede usarlo, el texto incluye «account» y la regla de acceso gana por orden, aunque el problema es de pago. Las quejas sobre el soporte o sobre un tipo de entrenamiento que falta también acaban en acceso por la misma palabra. El segundo patrón es «super»: el plan de pago de Duolingo se llama Super, y «super annoying» termina en pagos. El tercero es el consumo de datos de Strava en Android: «gastó 4GB de datos en pocas horas tras actualizar» lleva GB y una cifra, y la regla de pagos lo toma por un importe.

Las 4 que se escaparon no tienen ninguna palabra clave, como «no se ve el pulso» o «la pausa automática es horrible». Las reglas sirven como primer filtro barato y repetible, pero el grupo final lo debe decidir un modelo que lea el texto. Hay medidas públicas para comparar. Un artículo de mayo de 2025 usa ChatGPT sin ejemplos sobre 1.880 reseñas etiquetadas a mano en cuatro tipos de requisito y obtiene un F1 de 0,842. Otro de octubre de 2025 prueba cinco modelos abiertos ligeros con opiniones de usuarios y da un F1 de 0,47 a 0,68. Un trabajo de julio de 2025 sobre enrutado híbrido manda lo fácil a modelos pequeños ajustados y lo difícil a un modelo grande. Conserva del 98,4% al 100,4% de la precisión del modelo grande solo (más de 100% significa que la mezcla acertó un poco más) y reduce un 67,8% las peticiones y un 66,3% los tokens. Esos trabajos usan otros grupos, así que sus cifras no se trasladan tal cual, pero la idea es la misma: una capa barata primero y un modelo grande para lo difícil. Nuestra regla de palabras clave ocupa el lugar del modelo pequeño.

Prueba 6: reseñas en español de México y España

Esta prueba la hicimos para los lectores de este artículo. La noche del 12 de noviembre de 2026 pedimos las reseñas de Duolingo en el App Store de México (00:15:21 SGT) y de España (00:15:33 SGT), 500 en cada caso. Pasamos por las mismas reglas en inglés de la prueba 4 y por una lista nueva en español, escrita antes de ver los resultados. La lista en español usa términos como «se cierra», «no funciona», «iniciar sesión», «contraseña», «suscripción», «cobro», «reembolso», «sincronizar», «anuncio», «actualización» y «vidas».

Conjunto (12 de noviembre, SGT)Tiempo cubiertoAl díaDe 1 a 3 estrellasClasificadas con reglas en inglésClasificadas con reglas en español
Duolingo · App Store México, 00:15:21370,0 horas (15,4 días, del 2026-10-25 al 2026-11-10)32,472 (14,4%)8 (11%)39 (54%)
Duolingo · App Store España, 00:15:33966,4 horas (40,3 días, del 2026-09-30 al 2026-11-09)12,4157 (31,4%)25 (16%)87 (55%)

La primera conclusión es de volumen. En México y España, 500 reseñas cubren de 15 a 40 días, así que una ejecución diaria captura el 100% con mucho margen. Es lo contrario de lo que pasa con el inglés en Google Play: la misma app puede necesitar seis ejecuciones al día en un mercado y una en otro. Si tu equipo sigue varios países, haz la prueba del plazo para cada uno. No copies el horario de un mercado a otro.

La segunda conclusión es sobre el idioma. Una lista de palabras clave en inglés clasifica solo el 11% de las reseñas negativas mexicanas y el 16% de las españolas; el resto cae en «otros». La lista en español sube al 54% y 55%. Aun así queda casi la mitad sin grupo. En México, 8 reseñas hablan de perder la «racha» y 11 de vidas, corazones o energía, y ninguna regla las recoge. En España, 24 reseñas mencionan anuncios o publicidad, pero la regla solo pone 10 en el grupo de anuncios porque otra regla gana antes. Con reseñas en varios idiomas, la tarea del modelo pesa todavía más.

Prueba 7: el consumo de datos de Strava en Android

El verdadero valor de un informe diario es ver cuándo un grupo crece de golpe. Las reseñas de Strava en Google Play dieron un ejemplo real. De 200 reseñas, 23 dicen que la app gasta muchísimos datos móviles, por ejemplo 3GB en dos rutas a pie, y 21 de ellas tienen una estrella. En las 450 reseñas de Strava en el App Store del mismo periodo, ninguna lo menciona. El problema solo aparece en Android.

Gráfico de líneas titulado reseñas de Strava en Android que hablan del consumo de datos, en descenso día a día. El eje horizontal va del 2 al 9 de noviembre. Dos líneas. Reseñas por día: 33, 21, 21, 26, 26, 31, 22, 20. Reseñas que mencionan datos móviles: 10, 3, 3, 3, 0, 2, 1, 1. El subtítulo dice que son 200 reseñas de Google Play en inglés contadas por día de publicación en UTC, y que 0 de 450 reseñas del App Store del mismo periodo lo mencionan.

Por día de publicación en UTC, el 2026-11-02 hubo 10 de estas reseñas y después entre 0 y 3 diarias, en descenso. Por versión, 17 de las 23 vienen de la 487.11 y 4 de la 488.11. La 487.11 tiene 86 reseñas en el conjunto, así que alrededor del 20% habla de datos; la 488.11 tiene 68 y lo menciona cerca del 6%. Una reseña dice que el problema empezó el 2026-10-22 y seguía sin arreglo dos semanas después. Un hilo de Reddit en r/Strava describe el mismo salto de consumo en Android, y un usuario repite el consejo del soporte de desactivar los datos móviles. No encontramos ninguna explicación pública de Strava, así que solo describimos lo que dicen las reseñas.

Imagina un equipo con la clasificación diaria en marcha desde finales de octubre. La regla de palabras clave habría puesto el problema en «pagos» u «otros», como vimos. El modelo lee el texto y lo pone en fallos, y diez reseñas con la misma queja en un día lo marcan como pico y abren una incidencia. Un informe semanal lo vería varios días más tarde en el mejor caso, y esa es la diferencia principal con nuestro informe semanal con Codex Cloud.

Primero el script: por qué el agente no debe leer la salida bruta de MCP

Primero, los tokens. En las cuatro respuestas brutas de Estados Unidos, una reseña ocupa de media entre 437 y 569 bytes. La ayuda de OpenAI sobre tokens da unos 4 caracteres por token en inglés, así que una reseña son unos 109 a 142 tokens. El viaje por MCP de las 00:26:38 SGT encaja con esa estimación: unos 536 caracteres por reseña.

Con una llamada diaria por cada una de las cuatro fichas, si el modelo lee la salida bruta de MCP entran unos 65.062 tokens al día. Si un script quita los IDs vistos, deja 1 a 3 estrellas y conserva solo título y texto, quedan unos 4.999. La diferencia es de unas 13 veces. Las reseñas negativas en español tienen de media unos 201 caracteres de título y texto en México y 250 en España, así que el filtro del script les sirve igual.

Gráfico de barras horizontales en escala logarítmica titulado coste diario de que un modelo lea los datos, solo la parte de datos. Cinco barras. Salida de MCP en el contexto con Sonnet 5.5: 0,1301 dólares al día. Script que deja 1 a 3 estrellas con Sonnet 5.5: 0,0100 dólares al día. Salida de MCP en el contexto con Haiku 5.5: 0,0065 dólares al día. Script que deja 1 a 3 estrellas con Haiku 5.5: 0,0005 dólares al día. Tarifa de la API de EveryInfra por 4 llamadas: 0,0056 dólares al día. El subtítulo dice unos 4 caracteres por token, precios de modelos de la lista de GitHub Copilot, y que la sesión cuesta aparte.

La página de modelos y precios de GitHub da el precio de entrada por millón de tokens: Claude Sonnet 5.5 a $2, Claude Haiku 5.5 y GPT-6 Luna a $0.10, Claude Opus 5.5 a $4. Solo en datos, Sonnet 5.5 cuesta $0.1301 al día con la salida bruta y $0.0100 con la filtrada; Haiku 5.5, $0.0065 y $0.0005. Estas cifras no incluyen leer la instrucción y los archivos, escribir el informe ni abrir incidencias, porque no ejecutamos ninguna sesión real. Aun así la dirección es clara: con filtro, incluso un modelo potente sale barato.

El script aporta dos ventajas más. La deduplicación la hace el código y no la memoria del modelo, y las pruebas anteriores muestran por qué importa. Además, los nombres de autor y los enlaces a avatares se quedan fuera antes de llegar al contexto, así que el informe y las incidencias no pueden mostrar por error nombres de usuarios. Este es un script mínimo para el repositorio, que el agente ejecuta con Bash. Lo probamos una vez con nuestra clave de prueba a las 00:41:50 SGT del 11 de noviembre: una llamada por tienda, $0.002778 en total, 600 reseñas marcadas como vistas y 311 de 1 a 3 estrellas en el archivo del día.

python
"""Trae reseñas nuevas de App Store / Google Play, quita las vistas y deja 1-3 estrellas para el modelo."""
import json, os, pathlib, urllib.request, datetime

API = "https://api.everyinfra.com/api/v1/social"
KEY = os.environ["EVERYINFRA_API_KEY"]          # secreto de tipo Agents, sin prefijo COPILOT_MCP_
APPS = [
    ("app_store", "426826309", {"country": "us", "sort": "newest", "limit": 500}),
    ("google_play", "com.strava", {"country": "us", "language": "en", "sort": "newest", "limit": 200}),
]
STATE = pathlib.Path(".triage/seen.json")

def call(platform, app_id, params):
    body = {"platform": platform, "action": "reviews", "params": {"app_id": app_id, **params}}
    req = urllib.request.Request(API, data=json.dumps(body).encode(), method="POST", headers={
        "Authorization": f"Bearer {KEY}", "Content-Type": "application/json", "User-Agent": "review-triage/1.0"})
    with urllib.request.urlopen(req, timeout=120) as r:
        return json.load(r)

seen = set(json.loads(STATE.read_text())) if STATE.exists() else set()
out, spent = [], 0.0
for platform, app_id, params in APPS:
    data = call(platform, app_id, params)
    spent += data.get("billing", {}).get("charged_usd", 0)
    for r in data.get("results", []):
        key = f"{platform}:{r['id']}"
        stars = r.get("rating", r.get("score"))
        if key in seen:
            continue
        seen.add(key)                              # marcar como vista
        if stars is not None and stars <= 3:
            out.append({"key": key, "stars": stars, "version": r.get("app_version"),
                        "posted_at": r["posted_at"],
                        "text": ((r.get("title") or "") + " | " + (r.get("text") or ""))[:600]})
day = datetime.date.today().isoformat()
pathlib.Path("reports").mkdir(exist_ok=True)
pathlib.Path(f"reports/{day}.new-low-star.json").write_text(json.dumps(out, ensure_ascii=False, indent=1))
STATE.parent.mkdir(exist_ok=True)
STATE.write_text(json.dumps(sorted(seen)))
print(json.dumps({"new_low_star": len(out), "seen_total": len(seen), "charged_usd": round(spent, 6)}))

La última línea imprime tres números: reseñas negativas nuevas, total de reseñas vistas y coste de la ejecución. El agente los ve en la sesión y puede ponerlos al principio del informe. Hay que subir .triage/seen.json al repositorio, porque cada ejecución empieza en un entorno nuevo y sin ese archivo todo parece nuevo. La primera ejecución también trata como nuevas todas las reseñas antiguas, así que el primer informe solo sirve de línea base, sin alertas. Para el mercado hispano, cambia country y añade un filtro por el campo language en las reseñas de Google Play, como explica la prueba 6.

Cómo escribir la instrucción de la automatización

La instrucción es un texto para el agente que se escribe en la pestaña Automations de VS Code al crear la automatización. Cuanto más precisa, más estables son los resultados y menos AI credits gasta, porque el modelo no tiene que replantear la tarea cada día. El bloque siguiente es un ejemplo de configuración que no guardamos en GitHub. Las reglas de grupo y el formato del informe van mejor en una skill dentro de .github/skills/review-triage/. La página de GitHub sobre agent skills dice que el agente lee skills del proyecto en .github/skills, .claude/skills o .agents/skills, y el vídeo de VS Code sobre skills muestra esa misma estructura, con un SKILL.md por carpeta.

markdown
Clasificación diaria de reseñas negativas (ejemplo de configuración)

1. Ejecuta `python3 scripts/triage.py`. Trae las reseñas nuevas de App Store y Google Play,
   escribe reports/<fecha>.new-low-star.json e imprime new_low_star, seen_total y charged_usd.
   Una llamada por ficha en cada ejecución. Ante 429 o 503, espera retry_after segundos, como mucho 3 veces.
2. Lee el JSON. Pon cada reseña en un grupo de .github/skills/review-triage/SKILL.md:
   fallos y errores, pagos y suscripción, acceso y cuenta, sincronización y dispositivos,
   anuncios, cambios de diseño, otros. Decide con el texto completo, no por una sola palabra.
   Las reseñas pueden estar en inglés o en español; usa el mismo grupo en los dos idiomas.
3. Escribe reports/<fecha>.md: franja de fechas cubierta, recuento por grupo,
   media de los 7 últimos informes, hasta 3 textos por grupo (sin nombres) y coste de la ejecución.
4. Si un grupo supera 3 veces su media de 7 días y tiene al menos 5 reseñas,
   abre una incidencia «[Pico de reseñas] grupo + versión» con los ejemplos.
   Si ya hay una abierta con ese título, añade un comentario.
5. Sube reports/ y .triage/seen.json a la rama triage-reports y abre un pull request.
   No hagas push a main.

El umbral del punto 4 (3 veces la media y al menos 5 reseñas) es solo un punto de partida; cada equipo debe ajustarlo a su volumen. El punto 5 es de seguridad. La página de GitHub sobre riesgos del agente dice que el agente trabaja en ramas copilot/ y entrega por pull request. El texto de las reseñas lo escriben personas ajenas y puede contener frases como «ignora las instrucciones anteriores». Un pull request pone una revisión humana entre el agente y la rama principal.

Cómo son el informe y la incidencia

La primera pantalla del informe debe leerse en 10 segundos. El ejemplo usa los datos reales de Strava de las 00:22 a las 00:24 SGT del 11 de noviembre, maquetados a mano con el formato de la instrucción. Los recuentos salen de la regla de palabras clave sin revisión del modelo, así que solo sirven para mostrar el formato.

markdown
# Informe de reseñas negativas 2026-11-11 (Strava)

Cubre: Google Play inglés 2026-11-02 a 11-09 (UTC), App Store Estados Unidos 2026-07-07 a 11-08
Nuevas de 1-3 estrellas: Google Play 102, App Store 236 (primera ejecución, solo línea base)
Coste de esta ejecución: $0.002778 (2 llamadas)

| Grupo | Google Play | App Store |
|---|---|---|
| Fallos y errores | 19 | 44 |
| Pagos y suscripción | 14 | 63 |
| Acceso y cuenta | 12 | 25 |
| Sincronización y dispositivos | 11 | 28 |

Revisar: 23 reseñas de Google Play dicen que la app gastó muchos datos móviles tras actualizar,
sobre todo en la 487.11. App Store: 0.

La incidencia solo se abre cuando un grupo crece de forma clara y es más corta que el informe: grupo, versión, recuento frente a la media, tres textos y un enlace al informe. Tanto la API REST de incidencias de GitHub como las herramientas de GitHub que trae el agente pueden abrir incidencias. En una automatización basta con las herramientas del agente, sin otro token de GitHub.

El coste: API, AI credits y minutos de Actions

Para Copilot usamos las páginas de facturación de GitHub del 11 de noviembre de 2026. El uso se cuenta en AI credits y 1 credit vale $0.01. La página de planes y la de facturación por uso dan los credits mensuales.

PlanPrecioAI credits incluidos al mes
Pro$10 al mes1.500
Pro+$39 al mes7.000
Max$100 al mes20.000
Business$19 por usuario al mes1.900 por usuario
Enterprise$39 por usuario al mes3.900 por usuario

El agente en la nube tiene un 10% de descuento. Cada sesión gasta credits según los tokens del modelo y minutos según las reglas de facturación de GitHub Actions; la lista de precios de runners da $0.006 por minuto en Linux de 2 núcleos. Se pueden fijar límites de credits por ejecución, día, semana y mes, con un mínimo de 30 credits por ejecución, y el contador diario se reinicia a las 00:00 UTC.

Una ejecución al día, 30 díasImporteCálculo
API de EveryInfra, dos apps, 4 fichas$0.16674 llamadas al día × $0.001389 × 30
Igual, con Duolingo Android cada 4 horas$0.3759 llamadas al día × $0.001389 × 30
Modelo leyendo datos, Sonnet 5.5, con filtro$0.30unos 4.999 tokens al día × $2 por millón × 30
Modelo leyendo datos, Sonnet 5.5, salida bruta de MCP$3.90unos 65.062 tokens al día × $2 por millón × 30
Minutos de Actions (suponiendo 10 por ejecución, tras los incluidos)$1.8010 minutos × $0.006 × 30
Resto de la sesión (instrucción, informe, incidencia)Sin medirNo ejecutamos ninguna sesión real

La API es la parte más pequeña: menos de $0.40 al mes incluso con 9 llamadas diarias. El filtro del script cambia unas 13 veces el coste de que el modelo lea los datos. Los minutos de Actions dependen de la duración de cada sesión, y los 10 minutos son una suposición; además son gratis hasta agotar los incluidos en el plan de la cuenta. Lo que ninguna página pública da es el coste fijo de la sesión, así que conviene poner un límite bajo por ejecución la primera semana y luego revisar la página de uso de GitHub.

¿Por qué no usar las API de las propias tiendas?

Las dos tiendas ofrecen API para desarrolladores, pero cada una solo lee tus propias apps. La API de App Store Connect tiene un endpoint que lista todas las reseñas de una app, con una clave de tu cuenta de desarrollador y solo para apps de tu equipo. La API de Google Play Developer tiene reviews.list. Según la página sobre responder reseñas, solo devuelve reseñas de la última semana, solo de apps en producción y solo con texto; la cuota de lectura es de 200 llamadas por hora y una respuesta admite 350 caracteres. La referencia de Python del recurso reviews muestra los mismos métodos.

Para un equipo que solo vigila su app, estas API son la primera opción: son gratis y los datos vienen de las tiendas. No sirven para leer competidores, ir más allá de una semana ni unir las dos tiendas en un formato. Las dos capacidades de EveryInfra funcionan igual para cualquier app pública, devuelven un solo JSON y cuestan $0.001389 por llamada. Lo sensato es usar las API de las tiendas para responder en tu app y una API de datos para competidores y la vista conjunta.

Límites y precauciones

La tabla reúne los límites de todo el artículo y lo que conviene hacer con cada uno.

LímiteQué hacer
Desde VS Code, solo repositorios privados e internosUsar un repositorio privado; una automatización de equipo necesita además la política de la organización para el agente
La automatización no lee la configuración MCP localDar de alta el servidor en los ajustes del repositorio en GitHub
Discusión 211107: herramientas MCP propias que fallan en automatizacionesLanzar la primera ejecución a mano y revisar el registro, o usar el script
Desde VS Code, el horario más corto en la nube es diarioAutomatización por hora en la web de GitHub, u obtención frecuente con Actions
Google Play da las 200 más nuevas y country no las cambiaUna llamada por idioma
El App Store da como mucho 500, sin páginasUna llamada por país con country (mx, es…)
Las reseñas llegan con 24 a 44 horas de retrasoIndicar la franja de fechas; mantener una herramienta de fallos para alertas en tiempo real
Reglas en inglés con reseñas en españolLista de palabras en cada idioma como primer filtro y el modelo para el resto
El texto de las reseñas puede intentar guiar al agenteEntregar por pull request, sin push a main, y quitar nombres de usuario

Todos los pasos de Copilot de este artículo son ejemplos de configuración. No creamos esta automatización en un repositorio ni ejecutamos una sesión real, así que no tenemos datos de duración, tokens totales ni credits gastados. Todas las cifras de EveryInfra salen de llamadas reales del 11 y 12 de noviembre de 2026, cotejadas con el precio del catálogo y con el charged_usd de cada respuesta. Este artículo no habla en nombre de GitHub ni de Microsoft, y EveryInfra no tiene ninguna relación de colaboración con esas empresas.

Preguntas frecuentes

VS Code Copilot cloud automations no funciona: ¿cómo encuentro la causa?

Primero revisa tres cosas de la página de VS Code: versión 1.144 o posterior, ajustes de automatización activados y repositorio privado o interno. Después abre en GitHub el registro de esa ejecución y mira si el disparador no saltó, si la sesión no arrancó o si falló una herramienta. Si las herramientas MCP propias fallan solo en automatizaciones, como en la discusión 211107, usa por ahora la vía del script.

Copilot cloud agent pricing: ¿cuánto cuesta una ejecución diaria?

Cada ejecución abre una sesión que gasta AI credits según los tokens (1 credit es $0.01) y minutos de Actions. Solo podemos dar lo que medimos: la API cuesta $0.0056 al día para dos apps, y Sonnet 5.5 leyendo reseñas filtradas cuesta cerca de $0.01 al día en la parte de datos. El resto de la sesión no lo medimos. Pon primero un límite de credits por ejecución y revisa la página de uso a la semana.

¿Se pueden ver las reseñas de Google Play de otra app?

En la tienda, cualquiera puede leer las reseñas públicas de una app desde su ficha. Por API, la de Google Play Developer solo da las de tus apps y solo de la última semana. Para leer las de un competidor de forma automática hace falta otra fuente, como google_play/reviews en este artículo.

Para empezar

Paso 1: consigue una clave en el inicio rápido de EveryInfra y mira en el catálogo gratuito los parámetros de app_store/reviews y google_play/reviews. Paso 2: busca los IDs de tu app y de un competidor con app_store/search o con la URL de la tienda. Haz una llamada manual por país y calcula cuántas ejecuciones al día necesitas con el plazo entre la reseña más nueva y la más antigua.

Paso 3: sigue los ejemplos de configuración de este artículo. Da de alta el servidor MCP o el script y su secreto en el repositorio de GitHub. Crea una automatización diaria en la nube desde la pestaña Automations de VS Code, lánzala una vez a mano y comprueba que el registro muestra la llamada a la API y el informe subido. La guía completa del servidor MCP remoto está en la página del servidor MCP de EveryInfra y los precios en la página de precios.

Otros artículos del sitio: en el informe semanal con Copilot y MCP el modelo solo escribe un script semanal de Actions; el informe semanal de reseñas con Codex Cloud usa las mismas dos tiendas una vez por semana. Para convertir reseñas en un producto, lee reseñas como producto de datos; sobre cobros dobles en reintentos, claves de idempotencia para agentes.

Referencias

  1. Create and manage Copilot Automations in Visual Studio Code, registro de cambios de GitHub, 2026-10-28, https://github.blog/changelog/2026-10-28-create-and-manage-copilot-automations-in-visual-studio-code/
  2. Create and manage agent automations, documentación de VS Code, página del 2026-11-11, leída el 2026-11-12, https://code.visualstudio.com/docs/agents/run/automations
  3. Notas de la versión VS Code 1.144, 2026-10-28, https://code.visualstudio.com/updates/v1_144
  4. About automations, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/concepts/agent-capabilities/agent-powered-workflows-and-operations/about-automations
  5. Creating automations, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/how-tos/use-copilot-agents/cloud-agent/create-automations
  6. New tools, triggers, and cost controls for Copilot automations, registro de cambios de GitHub, 2026-10-28, https://github.blog/changelog/2026-10-28-new-tools-triggers-and-cost-controls-for-copilot-automations/
  7. Build shared workflows for your team with Copilot automations, registro de cambios de GitHub, 2026-10-28, https://github.blog/changelog/2026-10-28-build-shared-workflows-for-your-team-with-copilot-automations/
  8. Copilot automations now learn from outcomes and self-improve, registro de cambios de GitHub, 2026-10-28, https://github.blog/changelog/2026-10-28-copilot-automations-now-learn-from-outcomes-and-self-improve/
  9. GitHub Agentic Workflows generally available, registro de cambios de GitHub, 2026-10-28, https://github.blog/changelog/2026-10-28-github-agentic-workflows-generally-available/
  10. GitHub Universe 2026: evolving every layer of the stack, blog de GitHub, 2026-10-28, https://github.blog/news-insights/company-news/github-universe-2026-evolving-every-layer-of-the-stack/
  11. REST API endpoints for agent automations (versión 2026-03-10), documentación de GitHub, leída el 2026-11-11, https://docs.github.com/rest/agent-automations/agent-automations?apiVersion=2026-03-10
  12. Test automations (incidencia 340970), microsoft/vscode, 2026-10-11, https://github.com/microsoft/vscode/issues/340970
  13. Configure MCP servers for your repository, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/configure-mcp-servers
  14. About MCP, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/concepts/customizations/mcp
  15. Configure secrets and variables for Copilot cloud agent, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/configure-secrets-and-variables
  16. Customizing or disabling the firewall for Copilot cloud agent, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/copilot/how-tos/agents/copilot-coding-agent/customizing-or-disabling-the-firewall-for-copilot-coding-agent
  17. Copilot allowlist reference, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/reference/copilot-allowlist-reference
  18. About Copilot cloud agent, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/copilot/concepts/agents/cloud-agent/about-cloud-agent
  19. Risks and mitigations for Copilot cloud agent, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/concepts/agents/cloud-agent/risks-and-mitigations
  20. About agent skills, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/concepts/agents/about-agent-skills
  21. Usage-based billing for individuals, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/copilot/concepts/billing/usage-based-billing-for-individuals
  22. Plans for GitHub Copilot, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/copilot/get-started/plans
  23. Models and pricing, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/copilot/reference/copilot-billing/models-and-pricing
  24. About billing for GitHub Actions, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/billing/managing-billing-for-github-actions/about-billing-for-github-actions
  25. Actions runner pricing, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/billing/reference/actions-runner-pricing
  26. REST API endpoints for issues, documentación de GitHub, leída el 2026-11-11, https://docs.github.com/en/rest/issues/issues
  27. Custom MCP tools unavailable in automation sessions (discusión 211107), comunidad de GitHub, 2026-10-27, https://github.com/orgs/community/discussions/211107
  28. Copilot automations (discusión 211008), comunidad de GitHub, leída el 2026-11-11, https://github.com/orgs/community/discussions/211008
  29. Cloud sandbox sessions, documentación de VS Code, leída el 2026-11-11, https://code.visualstudio.com/docs/agents/run/cloud-sandbox-sessions
  30. Add MCP servers in VS Code, documentación de VS Code, leída el 2026-11-11, https://code.visualstudio.com/docs/copilot/customization/mcp-servers
  31. Introducing Agent Skills in VS Code, canal de YouTube de VS Code, transcripción leída el 2026-11-11, https://www.youtube.com/watch?v=JepVi1tBNEE
  32. Tools, especificación de Model Context Protocol 2025-06-18, https://modelcontextprotocol.io/specification/2025-06-18/server/tools
  33. Reply to reviews, documentación de Google Play Developer API, leída el 2026-11-11, https://developers.google.com/android-publisher/reply-to-reviews
  34. androidpublisher v3 reviews (referencia de Python), documentación para desarrolladores de Google, leída el 2026-11-11, https://developers.google.com/resources/api-libraries/documentation/androidpublisher/v3/python/latest/androidpublisher_v3.reviews.html
  35. View and analyze your app's ratings and reviews, ayuda de Play Console, leída el 2026-11-11, https://support.google.com/googleplay/android-developer/answer/138230
  36. List all customer reviews for an app, documentación de App Store Connect API, leída el 2026-11-11, https://developer.apple.com/documentation/appstoreconnectapi/get-v1-apps-_id_-customerreviews
  37. Ratings, reviews, and responses, Apple Developer, leída el 2026-11-11, https://developer.apple.com/app-store/ratings-and-reviews/
  38. What are tokens and how to count them, centro de ayuda de OpenAI, leída el 2026-11-11, https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them
  39. Hybrid routing for app review classification (arXiv 2507.08250), 2025, https://arxiv.org/html/2507.08250v2
  40. Zero-shot app review classification with ChatGPT (arXiv 2505.04759), 2025, https://arxiv.org/html/2505.04759v1
  41. Lightweight LLMs for app review analysis (arXiv 2510.23055), 2025, https://arxiv.org/pdf/2510.23055
  42. Mobile data usage shot up today (Android), Reddit r/Strava, leída el 2026-11-11, https://www.reddit.com/r/Strava/comments/1xcqvgv/mobile_data_usage_shot_up_today_android/
  43. Catálogo de datos de EveryInfra (gratuito), leído el 2026-11-11 a las 00:21 SGT y el 2026-11-12, https://api.everyinfra.com/api/v1/social/catalog

Referencia BL-132

Nuestras estadísticas siempre están activas. Google Analytics, solo con «Permitir analítica». Política de privacidad