Telegram channel scraper API: resumen diario de precios con Claude

Claude y una telegram channel scraper API vigilan canales rusos de mayoristas y transitarios. 24 llamadas reales; 10 canales cuestan unos 0,18 USD al mes.

Ilustración. Un tablón lleno de papeles con precios en ruso. Un tubo verde azulado aspira los papeles hacia una pequeña máquina en el centro. La máquina imprime una ficha diaria ordenada con unas pocas variaciones de precio resaltadas, que cae junto a un portátil.

Muchos mayoristas de móviles y transitarios de habla rusa no tienen web ni tienda en un marketplace. Publican el stock nuevo y las cotizaciones del día en canales públicos de Telegram. Si importas electrónica, comparas precios entre mercados o cotizas fletes entre China y Rusia, esos canales son una fuente diaria. El problema es leerlos todos cada mañana.

Extrajimos los precios de esos posts y los comparamos por modelo. Salen tres hallazgos. Primero, en un canal mayorista, el precio minorista por unidad del iPhone 18 Pro 256 GB negro de Hong Kong bajó un 7,2 % en 47 días. Segundo, si se compara con la versión solo eSIM del mismo post, que es más barata, sale una caída del 15,7 %, más del doble de la real. Tercero, otro mayorista cotiza en «у.е.», una unidad convencional, y sus propios precios en rublos dan un tipo un 3,9 % por encima del dólar oficial del Banco de Rusia de ese día.

Así que el valor de un resumen diario no está en descargar los posts. Está en comparar el mismo modelo, la misma versión y la misma unidad.

La muestra son cuatro canales públicos. Entre las 00:14 y las 00:39, hora de Singapur, del 2026-11-10, hicimos 24 llamadas reales con telegram/channel_posts, telegram/search y otras capacidades de EveryInfra. Se cobraron 17 llamadas, con un total de 0,010285 USD. Esta guía recorre la elección de la vía, la configuración, una llamada real de ida y vuelta, la paginación, la extracción, el costo y la programación.

El trabajo: qué publican cada día los vendedores y transitarios rusos en Telegram

Compradores transfronterizos, analistas de precios y equipos de logística siguen a menudo una lista de canales públicos en ruso. Los mayoristas de móviles y electrónica publican cada día largas listas de modelos y precios. Los transitarios publican varias veces por semana tarifas de tren y de mar más tren, con sus plazos. Algunas cuentas del sector publican un índice de fletes de contenedores.

Cada canal publica con un ritmo muy distinto y con un formato propio. Unos ponen los precios en el texto y otros publican la lista entera como imagen. Leerlos a mano cada día lleva tiempo. Y lo que más importa es el cambio: qué modelo bajó, qué ruta subió y quién empezó a cotizar en otra unidad.

Elegimos cuatro canales públicos como muestra. Los cuatro son cuentas comerciales públicas. No mostramos contactos personales ni nombres de usuario de gerentes que aparecen en los posts.

boxb2b es un mayorista y minorista de móviles. Su título es «BOX - Телефоны опт и розница» (teléfonos, por mayor y al por menor). La llamada telegram/profile mostró 70.200 suscriptores. linktek se presenta como plataforma mayorista de Apple en Dubái, China y Moscú, con 11.700 suscriptores. logistved es un canal de logística entre China y Rusia, con el título «ЛОГИСТ» (logista). teustat es el canal de una plataforma de tarifas de contenedores. Ninguna de las cuatro cuentas está verificada.

La llamada de perfil también devuelve el total de medios de todo el historial del canal. boxb2b ha publicado 370 fotos y 218 vídeos. linktek ha publicado 18.100 fotos, 4.190 vídeos y 15.000 enlaces. Esa diferencia de volumen decide hasta dónde llega una lectura de 200 posts, como se ve en la sección de paginación.

CanalTipoPosts devueltos y periodoPosts por díaTipo de contenidoDónde están los precios
boxb2bMóviles, mayor y menor200 posts, del 2026-02-22 al 2026-11-090,7789 vídeo, 82 foto, 29 textoUn modelo y su precio en rublos por línea, 129 posts con precios
linktekMayorista de Apple50 posts, del 2026-11-04 al 2026-11-099,4932 foto, 10 texto, 8 vídeoCada línea lleva precio en у.е. y en rublos, 40 posts con precios
logistvedNoticias de logística50 posts, del 2026-10-20 al 2026-11-092,4844 textoRangos de tarifa y plazos en el texto
teustatPlataforma de tarifas de contenedores50 posts, del 2026-09-11 al 2026-11-090,8544 fotoCasi siempre en la imagen, con un pie corto

La tabla sale de cuatro llamadas a telegram/channel_posts entre las 00:17 y las 00:18, hora de Singapur. Cada número se puede recalcular con las respuestas originales que guardamos.

Mira primero la última columna. Los cuatro son «canales de precios», pero no son iguales. Los precios de linktek y boxb2b están en el texto, así que una expresión regular los saca. En teustat, 44 de los 50 posts son fotos con una o dos líneas de texto. Para obtener esas tarifas hay que leer la imagen. Un flujo de resumen debe clasificar los canales antes de empezar.

Gráfico de barras horizontales con la media de posts por día de cuatro canales. linktek publica 9,49 al día, logistved 2,48, teustat 0,85 y boxb2b 0,77. Una sola lectura de cada canal cubre entre 5,3 y 260 días.

El ritmo de publicación dice cuántos posts leer cada día. linktek publica casi 10 veces al día, así que un límite de 20 cubre unos dos días. boxb2b publica menos de una vez al día, así que un límite de 20 retrocede más de un mes. Para estos cuatro canales basta una lectura diaria de 20 posts, quitando los repetidos por ID. No hace falta pedir 200 posts cada día.

Tres vías: Bot API, un telegram api parser propio con MTProto o una telegram channel scraper api de pago por llamada

Hay tres formas habituales de leer canales públicos de Telegram. La primera es la Bot API de Telegram. Creas un bot con BotFather y recibes mensajes por HTTP.

La segunda es un parser propio con MTProto, lo que en foros rusos llaman «парсер». Suele usar la librería de Python Telethon y lee el historial del canal como una cuenta de usuario real. La tercera es la de esta guía: llamas a una API de datos de pago por llamada con el nombre del canal y recibes una lista estructurada de posts.

Ilustración de tres caminos en paralelo. A la izquierda, un robot con llaves frente a varias puertas, y solo están abiertas las puertas a las que se ha unido. En el centro, una persona de espaldas atada con una cadena a un servidor junto a un cronómetro. A la derecha, un tubo verde azulado lleva papeles de un tablón directamente a una caja.
La barrera de entrada de cada vía. El bot tiene que unirse antes al canal. La cuenta de usuario tiene que iniciar sesión y respetar los límites. La API de pago por llamada solo necesita el nombre del canal.

El límite de la Bot API está en las preguntas frecuentes sobre bots de Telegram. La sección «What messages will my bot get?» termina con un caso más: todos los mensajes de los canales donde el bot es miembro (Bots FAQ). Es decir, un bot solo puede leer canales a los que se ha unido.

Una respuesta muy citada en Stack Overflow lo dice más claro: sin permisos de administrador no se reciben los mensajes del canal (Stack Overflow 45002999). Una discusión de python-telegram-bot llega a lo mismo: un bot solo entra en un canal como administrador (discusión 3047 de python-telegram-bot). Nadie te va a hacer administrador del canal de un mayorista. Así que, para vigilar canales públicos ajenos, la Bot API casi nunca sirve. Encaja con tus propios canales o con un socio que acepte añadir tu bot como administrador.

Captura de la sección What messages will my bot get de las preguntas frecuentes sobre bots de Telegram. Enumera los tipos de mensajes que recibe un bot. La última línea, All messages from channels where they are a member, está marcada con un recuadro verde azulado.
Un bot solo recibe posts de los canales donde es miembro. Esta línea explica por qué la Bot API no lee canales ajenos. Telegram Bots FAQ, captura del 2026-11-10

La vía MTProto puede leer el historial de cualquier canal público. El costo está en la cuenta. La página de Telegram «Obtaining api_id» indica que primero te registras con una app oficial de Telegram. Después creas una aplicación en las herramientas para desarrolladores de my.telegram.org y obtienes un api_id y un api_hash. Cada número de teléfono puede tener un solo api_id.

La misma página advierte que las cuentas que usan clientes no oficiales quedan bajo observación. Las cuentas que envían mensajes masivos o falsean visitas reciben un bloqueo permanente (Obtaining api_id). El primer paso de la guía de inicio de sesión de Telethon es entrar con el teléfono de la cuenta de desarrollador. Luego pones el api_id y el api_hash en TelegramClient (guía de inicio de sesión de Telethon).

El historial se lee con el método messages.getHistory, que retrocede página a página con offset_id y add_offset (messages.getHistory). Si pides páginas demasiado rápido, el servidor responde 420 FLOOD_WAIT_X, donde X son los segundos de espera (errores de la API de Telegram). En Stack Overflow, un usuario preguntó cómo evitar el FloodWaitError de Telethon. La respuesta más votada dice que la única forma es enviar menos peticiones y que el límite cambia según la cuenta (Stack Overflow 76198570). Las preguntas frecuentes de Telethon dedican una sección a las cuentas bloqueadas (Telethon FAQ).

Hay otro detalle que se pasa por alto. La búsqueda global de posts en MTProto es de pago. La documentación de búsqueda de Telegram dice que las búsquedas globales de posts se pagan. Los usuarios Premium tienen una cantidad gratuita y después cada búsqueda cuesta una cantidad de Stars (documentación de búsqueda de Telegram). Si tu parser propio tiene que descubrir canales nuevos por palabra clave, esa parte no es gratis.

Captura del párrafo sobre la búsqueda global de posts en la documentación de búsqueda de la API de Telegram. La frase Global post searches are paid está marcada con un recuadro verde azulado. El texto siguiente explica que los usuarios Premium tienen búsquedas gratis y que después cuestan Stars.
La búsqueda global de posts en MTProto cuesta Stars, así que descubrir canales también tiene un costo con un parser propio. Documentación de la API de Telegram, Search, captura del 2026-11-10
AspectoBot API de TelegramParser MTProto propio (por ejemplo, Telethon)API de datos de pago por llamada (esta guía)
Qué canales leeSolo los canales donde está el bot (Bots FAQ)Canales públicos visibles para la cuenta y privados a los que se ha unidoCanales públicos. Un enlace de invitación privado devolvió un resultado vacío sin cobro (nuestra prueba)
Identidad y accesoToken de BotFather, sin teléfonoTeléfono real, api_id de my.telegram.org, un api_id por númeroUna clave de API
HistorialSolo posts nuevos desde que entra el bot. getUpdates guarda las actualizaciones 24 horas como máximomessages.getHistory retrocede por desplazamientoHasta 200 posts recientes por llamada, sin paginación
LímitesPor bot420 FLOOD_WAIT, distinto según la cuentaPor clave, un número fijo de llamadas por minuto. El 429 indica cuánto esperar
Buscar canales por palabraNoLa búsqueda global cuesta Starstelegram/search, 0,000556 USD por llamada
CostoGratisSoftware gratis. Pagas la cuenta y el servidor0,000556 USD por llamada (post_detail cuesta 0,000806 USD)
Uso en ClaudeEscribir tu propio servidor MCPEscribir tu servidor MCP y cuidar el archivo de sesiónDirección MCP remota lista para un conector

Las «24 horas» de la fila de la Bot API vienen de la descripción de getUpdates: las actualizaciones que no recoges no se guardan más de 24 horas (documentación de la Bot API). Si tu bot sí está en el canal, lo correcto es un webhook o un proceso permanente que reciba las actualizaciones channel_post al momento. El objeto Update de python-telegram-bot tiene los campos channel_post y edited_channel_post (documentación de Update en python-telegram-bot). Los equipos que mueven archivos grandes pueden montar su propio servidor de la Bot API. En modo local, el servidor de código abierto telegram-bot-api descarga archivos sin límite de tamaño y sube hasta 2000 MB (tdlib/telegram-bot-api).

¿Qué vía conviene a quién? Hay cuatro casos claros.

Primero, usa la Bot API si el canal es tuyo o si un socio añade tu bot como administrador. Es gratis, funciona en tiempo real y Telegram la ofrece de forma nativa. No necesitas a terceros.

Segundo, si tienes que leer un grupo o canal privado al que perteneces, solo sirve un parser MTProto propio. Una API de pago por llamada no lee enlaces de invitación privados.

Tercero, si necesitas avisos en segundos, por ejemplo para cerrar un pedido o reservar un hueco en un tren, te conviene más un cliente MTProto permanente o un bot que una lectura diaria.

Cuarto, tu equipo puede conocer Telethon y aceptar el trabajo de mantener la cuenta, los archivos de sesión y los límites. Si además vigila miles de canales, un parser propio tiene un costo marginal más bajo.

La API de pago por llamada encaja con el resto de casos. Lees canales públicos ajenos, de unos pocos a unos cientos. Revisas los cambios una o dos veces al día. Y no quieres registrar un teléfono ni mantener una sesión abierta para esto.

Telethon sigue muy activo, con más de 12.000 estrellas en GitHub (LonamiWebs/Telethon). Su última versión en PyPI, la 1.45.0, salió el 2026-09-10 (Telethon en PyPI). Pyrogram, otra librería MTProto que fue popular, se archivó el 2024-12-23. Su repositorio indica que el proyecto ya no tiene mantenimiento (pyrogram/pyrogram).

Conectarlo en Claude: conector personalizado y ejemplo de configuración en Claude Code

En esta sección y en la de programación, todo dato sobre funciones de Claude sale de la documentación de Anthropic. Los pasos que no ejecutamos en nuestra máquina llevan la etiqueta «ejemplo de configuración».

Claude no lee Telegram por sí solo. Para que llame a una API de datos, le das un servidor MCP remoto. En Claude web y en la app de escritorio esto se llama «conector personalizado». El artículo del centro de ayuda de Anthropic se actualizó el 2026-10-30. Los pasos son: abrir Customize, abrir Connectors, pulsar «+ Add», elegir «Add custom connector» y escribir un nombre y la URL del servidor (guía de conectores personalizados).

El mismo artículo añade dos puntos. La conexión sale de la nube de Anthropic, así que el servidor tiene que ser accesible desde internet. La autenticación puede usar una clave de API o una credencial fija. Anthropic publica los rangos de IP de esas peticiones salientes, útiles si usas una lista de permitidos (direcciones IP de Anthropic).

Sobre los planes, el artículo «Use connectors» se actualizó el 2026-11-06. Dice que los conectores personalizados funcionan en Free, Pro, Max, Ultra, Team y Enterprise. Cuando tienes muchos conectores, el ajuste «Tool access» puede ser Auto u On demand. El artículo sugiere On demand a partir de 10 conectores (guía de uso de conectores).

En cada chat puedes activar o desactivar un conector desde el menú «+» del cuadro de texto. Para un servidor que solo corre en tu ordenador existen las extensiones de escritorio, con su propia guía (guía de servidores MCP locales). Como el resumen tiene que ejecutarse de forma programada en la nube, usamos un conector remoto.

En Claude Code, el comando claude mcp add --transport http añade un servidor MCP remoto y admite una cabecera (documentación MCP de Claude Code). Este es un ejemplo de configuración. La clave se queda en una variable de entorno y nunca se escribe en un archivo.

bash
# Ejemplo de configuración: añadir el servidor MCP remoto de EveryInfra a Claude Code local
claude mcp add --transport http everyinfra https://api.everyinfra.com/mcp \
  --header "Authorization: Bearer $EVERYINFRA_API_KEY"

# Llamar una vez a channel_posts con curl, fuera de Claude, para comprobar la clave y los parámetros
curl -s https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"telegram","action":"channel_posts","params":{"username":"boxb2b","limit":20}}'

Antes de empezar conviene saber un límite. La documentación de tareas programadas en la nube de Claude Code dice que los servidores MCP añadidos con claude mcp add solo existen en tu máquina local. Una tarea programada en la nube no puede usarlos.

Una tarea programada puede usar el servidor de otras dos formas (tareas programadas en la nube de Claude Code). Puedes añadirlo como conector de claude.ai o ponerlo en el archivo .mcp.json del repositorio. El archivo del repositorio queda así. También es un ejemplo de configuración, y la clave viene de una variable de entorno.

json
{
  "mcpServers": {
    "everyinfra": {
      "type": "http",
      "url": "https://api.everyinfra.com/mcp",
      "headers": { "Authorization": "Bearer ${EVERYINFRA_API_KEY}" }
    }
  }
}

Recomendamos el conector. La página de entornos en la nube tiene una nota sobre esto. Los conectores MCP activados en una sesión o en una tarea programada funcionan sin añadir sus dominios a «Allowed domains». El motivo es que el tráfico del conector pasa por los servidores de Anthropic y no por la red de la sesión (documentación de entornos en la nube).

El caso contrario da más trabajo. Supón que la tarea programada llama a la API directamente con curl. El nivel de red por defecto, «Trusted», solo permite registros de paquetes y dominios de una lista. Tendrías que pasar el entorno a Custom, añadir el dominio de la API y guardar la clave como secreto de red. El conector te ahorra esos dos pasos.

Diagrama de flujo animado con seis pasos en dos filas: lista de canales, llamar a channel_posts por canal, quitar repetidos por ID, extraer modelo y precio, comparar con ayer, escribir el resumen. El final de la segunda fila vuelve al inicio, lo que indica una repetición diaria.

De los seis pasos del diagrama, los pasos dos, tres y cuatro pueden ir sin modelo. El modelo solo trata las líneas que la expresión regular no entiende bien y redacta el resumen final.

Una llamada real: qué envía Claude y qué devuelve la API

Hicimos el saludo MCP directamente con la misma clave. Así reproducimos lo que hace un conector dentro de Claude. A las 00:26:27, hora de Singapur, enviamos initialize. El servidor respondió en 0,135 segundos con la versión de protocolo 2025-06-18. Es la versión de la especificación MCP que define el transporte Streamable HTTP (especificación de transportes MCP).

Después, tools/list devolvió 12 herramientas en 0,094 segundos. La lista ocupaba 16.250 bytes (especificación de herramientas MCP). Aquí importan tres. everyinfra_list_capabilities enumera capacidades y parámetros. everyinfra_call_api llama a una capacidad. everyinfra_get_job lee el resultado de un trabajo asíncrono.

A las 00:26:28, hora de Singapur, enviamos tools/call para leer los 5 últimos posts de boxb2b. Esta es la forma de la petición que envía Claude cuando decide usar una herramienta en un chat.

json
{"jsonrpc":"2.0","id":3,"method":"tools/call",
 "params":{"name":"everyinfra_call_api",
  "arguments":{"platform":"telegram","action":"channel_posts",
               "params":{"username":"boxb2b","limit":5}}}}
Paso MCPHora (Singapur)SegundosTamaño y resultado
initialize00:26:270,135Protocolo 2025-06-18
tools/list00:26:280,09416.250 bytes, 12 herramientas
tools/call, channel_posts con limit 500:26:288,3139.698 bytes, 5 posts, 0,000556 USD

El primer resultado era la lista de precios diaria del 2026-11-09. Este es un extracto: recortamos el texto y dejamos la estructura.

json
{"id":"req_8529285a194244d8","platform":"telegram","action":"channel_posts",
 "results":[{"id":2655,"url":"https://t.me/boxb2b/2655",
   "channel_username":"boxb2b","channel_title":"BOX - Телефоны опт и розница",
   "text":"Ежедневное обновление: 09.11 ... 18 Pro 256 Black (eSim) - 112.000₽ ... 18 Pro 256 Black (sim) - 123.300₽ ...",
   "view_count":2510,"posted_at":"2026-11-09T07:22:04+00:00","media_type":"text",
   "reactions":[{"count":7,"is_paid":false},{"count":1,"is_paid":false}]}, …],
 "count":5,"billing":{"charged":true,"charged_usd":0.000556}}
Captura de una ficha de respuesta de la API con un resultado de telegram/channel_posts del canal linktek. El post 37606 es del 2026-11-05. El texto enumera precios mayoristas de la gama iPhone 18 Pro de Hong Kong, con precio en у.е. y en rublos en cada línea, resaltados en verde azulado. Al pie aparece charged_usd 0.000556.
Respuesta original de un post mayorista. Cada línea trae dos unidades, y eso permite calcular después el tipo de cambio del vendedor. Respuesta real de la API de EveryInfra, 2026-11-10 00:18 hora de Singapur

El catálogo enumera 16 campos de respuesta para telegram/channel_posts (catálogo de capacidades). Que un campo tenga valor depende del canal. Contamos cada campo en los 350 posts únicos de los cuatro canales.

CampoSignificadoPosts con valorUso en el resumen
id, urlID y enlace del post350 de 350La clave para quitar repetidos. Cada precio del resumen enlaza a su post
channel_username, channel_titleNombre y título del canal350 de 350Agrupar
posted_atHora de publicación en UTC350 de 350Saber qué es de hoy. Suma 3 horas para la hora de Moscú
textTexto del post324 de 350La materia prima de la extracción. 26 posts solo tienen foto o vídeo
view_countVisitas349 de 350Qué cotizaciones se leen más
media_type, media_urlTipo y enlace del contenido347 de 350, 259 de 350Las tablas de teustat son imágenes y hace falta este enlace para leerlas
reactionsReacciones con emoji299 de 350Opcional
reply_to_url, link_preview_urlPost respondido y vista previa de enlace17 de 350, 44 de 350Seguir posts que completan otros
author, is_forwarded, forwarded_fromRemitente y origen del reenvío0 de 350Los canales publican como canal, y estos cuatro no reenviaron nada

La nota de campos del catálogo añade algo. Cuando las otras fuentes no están disponibles, los resultados llegan de una fuente de último recurso que no devuelve media_url ni reactions. En nuestra prueba, solo 1 de los 50 posts de linktek traía reactions, lo que seguramente refleja ese caso. Así que tu código no debe contar siempre con esos dos campos.

Todos los valores de posted_at están en UTC. Por ejemplo, el post 37606 de linktek marca 08:50:51 UTC, que son las 11:50 en Moscú. Un resumen que corta el «hoy» por la hora de Moscú encaja mejor con el horario de estos vendedores.

Gráfico de dispersión con el tiempo de respuesta de 24 llamadas. Las llamadas correctas tardaron entre 5,3 y 17,6 segundos, con una mediana de 10,44 segundos. Las búsquedas fueron casi siempre más lentas que las lecturas de canal. Un enlace de invitación privado tardó 29,4 segundos y un canal inexistente 87,3 segundos, ambos vacíos y sin cobro. Cuatro llamadas a post_detail y un error de parámetro respondieron en menos de 1 segundo.

En velocidad, las 17 llamadas cobradas tardaron entre 5,264 y 17,613 segundos. La mediana fue de 10,44 segundos. Cumple el objetivo que fijamos antes de escribir: una mediana de 20 segundos o menos. Las seis búsquedas fueron más lentas que las lecturas de canal, entre 11 y 18 segundos.

Los dos resultados vacíos fueron los más lentos. Un enlace de invitación privado con formato válido tardó 29,4 segundos. Un nombre de canal que no existe tardó 87,3 segundos. Ninguno se cobró. Por eso, en una tarea programada es razonable dar 2 minutos de margen a cada canal. Si un canal falla, los demás deben seguir.

Paginación y límites: channel_posts no tiene parámetro de página

Mucha gente que busca «telegram api parser» quiere el historial completo de un canal. Esta es la respuesta. telegram/channel_posts tiene dos parámetros, username y limit. El límite es 20 por defecto y llega a 200. No hay page_token ni filtro de fecha.

Enviamos un parámetro since a propósito para comprobarlo. A las 00:22, hora de Singapur, la API respondió 422. El error decía que since no es un parámetro de telegram/channel_posts, que username es obligatorio y que limit es opcional. También traía una petición de ejemplo que funciona. Esa llamada no se cobró. Los filtros de fecha solo existen en telegram/search, que acepta keyword, since y until y devuelve hasta 100 resultados por llamada.

¿Cuántos posts devuelve de verdad limit=200? A las 00:17, hora de Singapur, llamamos a boxb2b con limit=200. Recibimos exactamente 200 posts. El más antiguo era del 2026-02-22 y el más reciente del 2026-11-09. Son 260 días, y el JSON original ocupaba 217.994 caracteres.

La llamada tardó 14,0 segundos. Justo después, las lecturas de 50 posts de los otros tres canales tardaron entre 6,6 y 10,4 segundos. Cuatro veces más posts sumaron solo unos 4 a 7 segundos, así que limit=200 es una buena opción para la primera base.

En un canal que publica poco, una sola llamada te da casi un año. Eso es muy útil para crear la primera base de precios. En un canal como linktek, con casi 10 posts al día, 200 posts cubren unas tres semanas. Esta capacidad no devuelve historial más antiguo. Si necesitas historial profundo, tendrás que retroceder con offset_id en tu propio parser MTProto.

Cada llamada cuesta lo mismo, sea cual sea el límite. Así que el costo por post baja cuando sube el límite. Con limit 20 son 0,0278 USD por cada 1.000 posts. Con 50, 0,01112 USD. Con 100, 0,00556 USD, y con 200, 0,00278 USD.

Nuestro objetivo previo era 0,005 USD o menos por cada 1.000 posts, y solo limit 200 lo cumple. Pero en un resumen diario la unidad real no es «por cada 1.000 posts». Es «una llamada por canal y día». Pagas 0,000556 USD tanto si el canal publicó una vez como si publicó diez.

Gráfico de barras con la media de caracteres por post en la respuesta de cuatro canales. logistved ocupa 1.497, linktek 1.366, boxb2b 1.090 y teustat 985. Con el límite de 50.000 caracteres de Claude Code, una respuesta admite 33, 36, 45 y 50 posts.

Claude también pone un límite. La documentación MCP de Claude Code dice que una salida de herramienta de más de 10.000 tokens muestra un aviso. El máximo por defecto es de 25.000 tokens, y se puede subir con MAX_MCP_OUTPUT_TOKENS. Los resultados de más de 50.000 caracteres se guardan en un archivo en lugar de entrar en el contexto (documentación MCP de Claude Code).

Medimos los caracteres por post de cada respuesta. Con esa cifra, 50.000 caracteres caben 33 posts de logistved, 36 de linktek, 45 de boxb2b o 50 de teustat. Así que, cuando el modelo llama a la herramienta en Claude, un límite de 20 a 30 es lo más seguro. Para una base de 200 posts, llama a la API desde un script y guarda el resultado en un archivo. Luego deja que Claude lea el archivo.

Hay que quitar los repetidos. A las 00:30, hora de Singapur, volvimos a llamar a linktek con limit=20. Los 20 posts ya los teníamos de 12 minutos antes, así que hubo 0 posts nuevos. A las 00:39 leímos 20 posts de boxb2b y otros 20 de logistved, y de nuevo hubo 0 nuevos. Guarda un conjunto con los ID ya vistos (el id es único dentro de un canal). Cada día, pasa solo los ID nuevos a los pasos siguientes. Así el modelo no lee ni escribe dos veces la misma lista.

Estas tres lecturas repetidas trajeron 60 posts y costaron 0,001668 USD, pero dieron 0 posts nuevos. Ese es el costo de pagar por llamada. Fija el intervalo de lectura según el ritmo de cada canal. Para un canal como boxb2b, que publica menos de una vez al día, basta con una lectura diaria.

Extraer precios: primero una expresión regular, y Claude solo para lo difícil

Los posts mayoristas son bastante regulares. La lista diaria de boxb2b tiene un modelo por línea, como «18 Pro 256 Black (sim) - 123.300₽», separado con ▫️ o 🔥. linktek escribe en cada línea «modelo (stock) — 1 371 у.е. / 117 849 ₽».

Primero escribimos un extractor solo con expresiones regulares, sin modelo. De 200 posts de boxb2b y 50 de linktek sacó 1.411 filas de precio. De ellas, 1.048 vienen de 129 posts de boxb2b y 363 de 40 posts de linktek. 319 filas tenían precio en у.е. Esta es la lógica principal.

python
import re
SEP = re.compile(r"▫️|▪️|•|🔥|✅|📱|💻|🔻|\n|(?<=₽)(?=\S)")
PRICE = re.compile(
    r"(?P<item>[A-Za-zА-Яа-я0-9][^₽]{2,90}?)\s*(?:[-—–:]|\s)\s*"
    r"(?:(?P<ue>\d[\d\s]*)\s*у\.е\.\s*/\s*)?"
    r"(?P<rub>\d{1,3}(?:[.\s ]\d{3})+|\d{4,7})\s*₽")

def extract(post, seen_ids):
    if post["id"] in seen_ids:          # saltar posts ya procesados
        return []
    rows = []
    for chunk in SEP.split(post.get("text") or ""):
        for m in PRICE.finditer(chunk):
            rub = int(re.sub(r"\D", "", m.group("rub")))
            if rub < 1000:              # «desde 5 uds.» y similares no son precios
                continue
            rows.append({"post_id": post["id"], "date": post["posted_at"][:10],
                         "item": m.group("item").strip(), "rub": rub,
                         "ue": int(re.sub(r"\D", "", m.group("ue"))) if m.group("ue") else None})
    return rows

Antes de escribir fijamos esta prueba: tomar una muestra al azar, revisar cada fila a mano y exigir un 90 % de acierto o más. Sacamos 25 filas al azar y las comparamos con su post. El número del precio era correcto en las 25. Pero solo 20 se podían usar tal cual.

RevisiónFilas
Filas revisadas a mano25
Número de precio correcto25
Utilizables tal cual20
Total de un lote leído como precio unitario3
Línea de color sin el nombre del modelo2

Tres filas eran totales de lote, marcados como «Итого» (total), que la expresión regular tomó por precios unitarios. Dos filas solo tenían un color. El modelo estaba en un pequeño encabezado encima, así que la expresión sacó «Silver» y perdió el modelo. Contado como «utilizable tal cual», el resultado es del 80 %. No llega al objetivo del 90 %, y lo decimos tal cual. Otras dos filas tenían un valor en у.е. partido en dos, como «3 720 у.е.», que daba un tipo de 444. Las quitamos con un filtro de 50 a 150 en el cálculo del tipo de cambio.

Todos estos fallos son de contexto. Una persona ve las líneas de arriba y de abajo y entiende qué es una línea de total o de color. Una expresión regular no. Este paso encaja bien con Claude. La función de salidas estructuradas de Claude devuelve JSON que sigue el esquema que le das. La documentación dice que usa decodificación restringida para garantizar que el JSON cumple el esquema. La petición usa output_config.format con el tipo json_schema (documentación de salidas estructuradas).

Pasa primero la expresión regular. Después envía al modelo solo dos tipos de post. El primero tiene precio pero no nombre de modelo. El segundo contiene palabras como Итого, всего o партия (total, en total, lote). En el esquema, pide model, storage, variant (SIM o eSIM), color, price_rub, price_ue e is_lot_total en cada fila.

No ejecutamos este paso en nuestra máquina, así que es un ejemplo de configuración. La página de precios de Anthropic presenta Claude Haiku 5.5 como el modelo para tareas de gran volumen como clasificación y extracción. Su precio de entrada es de 0,10 USD por millón de tokens para prompts de hasta 100.000 tokens (precios de Anthropic). Con el ritmo y los caracteres por post medidos en los cuatro canales, los posts nuevos suman unos 18.000 caracteres al día. Solo una parte pequeña llega al modelo.

Prueba 1: ¿cuánto bajó un mismo iPhone 18 Pro en 47 días?

La serie de precios es el resultado más valioso de esta prueba. Tomamos todas las cotizaciones de un mismo modelo en los 200 posts de boxb2b: el iPhone 18 Pro 256 GB negro de Hong Kong. Los posts lo marcan como «sim», es decir, SIM física más eSIM. Después lo comparamos con los precios mayoristas de linktek.

FechaCanal y postVersión y condicionesPrecio (rublos)
2026-09-17boxb2b 2612Hong Kong, negro, reserva, mínimo 5 unidades141.000
2026-09-21boxb2b 2621Hong Kong, negro, mínimo 3 unidades130.900
2026-09-23boxb2b 2624Hong Kong, negro, al por menor, una unidad132.900
2026-11-04linktek 37584EE. UU., solo eSIM, negro, por mayor102.426 (1.191 у.е.)
2026-11-05linktek 37608EE. UU., solo eSIM, negro, por mayor101.821 (1.184 у.е.)
2026-11-05linktek 37606Hong Kong, negro, por mayor, envío incluido117.849 (1.371 у.е.)
2026-11-09boxb2b 2655Hong Kong, negro, al por menor, una unidad123.300
2026-11-09boxb2b 2655Solo eSIM, negro, al por menor, una unidad112.000

Compara la misma versión con las mismas condiciones (Hong Kong, una unidad, al por menor). En los 47 días entre el 2026-09-23 y el 2026-11-09, el negro pasó de 132.900 a 123.300 rublos, un 7,2 % menos. En los mismos posts, el Glacier pasó de 131.900 a 122.300 rublos (−7,3 %) y el Burgundy de 135.900 a 123.500 rublos (−9,1 %).

Del precio de reserva del 2026-09-17 (mínimo 5 unidades) al precio al por menor del 2026-11-09 hay un 12,6 % de diferencia. Pero las condiciones no son las mismas, así que no es una caída real. El error más común es usar la versión equivocada. El post del 2026-11-09 también trae un precio solo eSIM de 112.000 rublos. Si lo comparas con el precio de Hong Kong de septiembre, sale una caída del 15,7 %, más del doble de la real.

Para quien piensa en dólares: al tipo del Banco de Rusia del 2026-11-10, 82,7536 rublos por dólar, 123.300 rublos son unos 1.490 USD. El precio solo eSIM al por menor, 112.000 rublos, son unos 1.353 USD. El precio mayorista de linktek para la versión de EE. UU. solo eSIM, 101.821 rublos, son unos 1.230 USD.

Gráfico de líneas con las cotizaciones del iPhone 18 Pro 256 GB negro en dos canales mayoristas rusos entre el 17 de septiembre y el 9 de noviembre de 2026. El precio de Hong Kong de boxb2b bajó de 141.000 rublos en reserva a 123.300 rublos al por menor el 9 de noviembre, con la versión solo eSIM a 112.000. Los precios mayoristas de linktek para la versión de EE. UU. solo eSIM fueron 102.426 el 4 de noviembre y 101.821 el 5 de noviembre, y el de Hong Kong 117.849.

También se puede calcular la diferencia entre menor y mayor. El 2026-11-09, el precio solo eSIM al por menor de boxb2b era de 112.000 rublos. Eso es un 10,0 % más que el precio mayorista de linktek para la versión de EE. UU. solo eSIM, 101.821 rublos, del 2026-11-05. El precio de Hong Kong al por menor, 123.300 rublos, estaba un 4,6 % por encima del mayorista de Hong Kong, 117.849 rublos. El propio precio de linktek bajó un 0,6 % entre el 4 y el 5 de noviembre.

Estas cifras sirven a quien compra. En una misma semana, la diferencia entre canales y entre versiones suele ser mayor que la caída de un modelo en un mes. Por eso cada línea de «cambio de precio» del resumen debe indicar la versión y las condiciones. Y solo debe compararse con la línea de ayer de la misma versión y condiciones.

Prueba 2: ¿cuántos rublos vale una у.е.?

Cada línea de linktek lleva un precio en у.е. y otro en rublos. у.е. es la abreviatura de «условная единица», unidad convencional. Los mayoristas rusos la usan a menudo para cotizar un precio que sigue a una divisa extranjera. El vendedor decide cuántos rublos vale una unidad.

Como los dos precios están en la misma línea, podemos calcular el tipo del vendedor. Tomamos las 319 filas de linktek con у.е. del 2026-11-04 al 2026-11-09. Quitamos las 2 filas con números partidos y quedaron 317. La mediana fue de 85,99 rublos por unidad. El mínimo fue 85,8 y el máximo 87,0, así que los valores están muy juntos.

Luego lo comparamos con los tipos diarios del Banco de Rusia, a partir de su XML original (tipos diarios del Banco de Rusia). La tabla muestra las cuatro fechas con tipo nuevo de esa semana.

Fecha del tipo del Banco de RusiaDólar (rublos)Tipo del vendedor (rublos por у.е.)Diferencia
2026-11-0481,669985,99+5,3 %
2026-11-0681,794785,99+5,1 %
2026-11-0782,138685,99+4,7 %
2026-11-1082,753685,99+3,9 %

Solo podemos decir que una у.е. vale entre un 4 % y un 5 % más que el tipo del dólar del banco central de ese día. El canal no explica qué incluye la diferencia, como el costo de cambio, la logística o el margen, y no lo adivinamos.

Gráfico de barras con los tipos del dólar del Banco de Rusia del 4, 6, 7 y 10 de noviembre de 2026, de 81,67 a 82,75 rublos, junto al tipo implícito de unos 85,99 rublos por у.е. de los posts de linktek, entre un 3,9 % y un 5,3 % más alto.

Hay otra condición que solo aparece en el texto del post. El post 37606 de linktek dice que pagar por transferencia de empresa (sin IVA) suma un 12 %. También dice que el precio incluye el envío y que la logística tarda unos 7 días.

Si un resumen extrae solo los precios, el costo real del mismo teléfono puede desviarse más de un diez por ciento. Por eso conviene pasar estas líneas de condiciones a Claude. Una expresión regular es buena con los números, pero no entiende a qué precio se aplica un «+12 %».

Prueba 3: ¿coinciden las tarifas de los transitarios con los índices públicos?

Las cifras de flete son más difíciles de comprobar. Rutas, tipos de contenedor y condiciones se escriben de muchas formas. Tomamos cuatro posts recientes de logistved y teustat y los comparamos con la página pública del World Container Index de Drewry, en el Reino Unido.

Fuente y fechaRutaCifra del postResultado
logistved 5117, 2026-11-09China a Rusia, tren directo, 40 pies high cubeDe 9.500 a 10.000 USD de media, plazos en la tabla siguienteEntre un 5,0 % y un 10,5 % por encima de la media de octubre de teustat, 9.049 USD, para Shanghái a Moscú en tren directo. Origen y método distintos: sirve solo para ver la dirección
logistved 5115, 2026-11-06Puertos del Lejano Oriente a Moscú en tren, 40 pies400.000 rublos de media en noviembre, por la subida de tarifas de los ferrocarriles rusosEl post no da fuente, así que no pudimos comprobarlo
logistved 5100, 2026-11-02World Container IndexBaja un 3 % en la semana, hasta 4.429 USDDrewry muestra 4.389 USD el 2026-11-05, un 1 % menos. 4.389 es un 1 % menos que 4.429, así que el canal citaba el número anterior y las cifras cuadran
teustat 4402, 2026-11-02Shanghái a Moscú, 40 pies COC, media de octubreTren directo 9.049 USD. Por el Lejano Oriente 9.376 USD. Por San Petersburgo 9.832 USD. Por Novorossiysk sin datosÍndice propio de la plataforma, con las cifras en el texto

El mismo post 5117 de logistved da los plazos en rutas regulares, de estación a estación y sin retrasos extra. Añade que los trenes de la primera quincena de noviembre están casi llenos.

RutaDías de tránsitoTarifa del post
Por Zabaikalsk28 a 309.500 a 10.000 USD
Por Kazajistán22 a 249.500 a 10.000 USD
Por Khorgos18 a 229.500 a 10.000 USD
Por Erlian25 a 289.500 a 10.000 USD
Exprés, Pinghunan por Zabaikalsk a Moscú14 a 1610.700 USD
Exprés, Xi'an por Khorgos a Moscú (anunciado)10 a 1210.500 USD

El número de Drewry del 2026-11-05 muestra también otras dos rutas (Drewry WCI). Shanghái a Róterdam estaba en 3.615 USD y Shanghái a Nueva York en 9.303 USD. Esta comprobación enseña dos cosas.

La primera: un canal que repite un índice público suele ir un número por detrás. Si tu resumen cita un índice, toma el último número de la página original. Usa el post del canal solo como aviso de que hay una cifra nueva.

La segunda: la cotización del transitario (de 9.500 a 10.000 USD por un 40 pies high cube) y la media mensual del canal de índices (9.049 USD) van en la misma dirección. Pero no son lo mismo. Una es un rango de cotización de noviembre y la otra una media de octubre. El resumen debe separar los dos tipos de cifra y no calcular una variación entre ellas.

Otro post de teustat, el 4406 del 2026-11-06, se titula «tarifas mínimas de esta semana». El texto tiene dos líneas cortas y la tabla está en la imagen. En esta prueba no leímos imágenes. Así que el resumen solo puede decir «nueva tabla de tarifas, ver el post». Para automatizarlo, puedes pasar el media_url de la respuesta a un modelo que lea imágenes. No probamos ese paso.

Contraste con Yandex Market: precios de canal frente a anuncios del marketplace

¿Son bajos los precios de los canales? Se pueden contrastar con un gran marketplace ruso. A las 00:38, hora de Singapur, hicimos una llamada a yandex/market con la búsqueda «iPhone 18 Pro 256 ГБ». Devolvió 50 productos y costó 0,001389 USD.

Nos quedamos con los títulos que contienen «18 Pro» y «256», pero no «Pro Max», «ProMax» ni «512». Quedaron 33 anuncios. La mediana fue de 209.990 rublos. El rango intercuartílico fue de 165.353 a 255.441 rublos, el mínimo 115.800 y el máximo 645.990. Nueve anuncios eran solo eSIM, con una mediana de 186.534 rublos.

Frente a los canales, la mediana de Yandex Market estaba un 70,3 % por encima del precio al por menor de Hong Kong de boxb2b del 2026-11-09 (123.300 rublos). Y un 106,2 % por encima del precio mayorista de linktek para la versión de EE. UU. solo eSIM (101.821 rublos). Al tipo del 2026-11-10, el anuncio mediano son unos 2.538 USD.

La diferencia es enorme, así que hay que marcar sus límites. Los precios del marketplace son precios de anuncio. Incluyen muchos vendedores externos y condiciones distintas de garantía y factura. El anuncio más caro, de 645.990 rublos, claramente no es un precio normal. Los precios de canal son cotizaciones mayoristas, que a menudo exigen transferencia, recogida o la logística del propio vendedor.

No llamamos a esta diferencia «margen». Solo decimos una cosa: en este tipo de producto, los anuncios del marketplace y las cotizaciones de canal están en niveles distintos. No se puede usar la mediana del marketplace como precio de mercado. Explicamos este método con más detalle en nuestro artículo sobre compras en 1688 y márgenes en Yandex Market. La API de datos de Yandex y la página de la capacidad yandex/market enumeran los campos.

Costo: cuánto valen 1.000 posts y cuánto un mes

Todos los costos de EveryInfra salen del campo price_usd del catálogo, leído a las 00:13, hora de Singapur, del 2026-11-10. telegram/channel_posts, telegram/profile, telegram/search, telegram/group y telegram/members cuestan 0,000556 USD por llamada. telegram/post_detail cuesta 0,000806 USD por llamada. Las llamadas fallidas, los resultados vacíos y los errores de parámetro no se cobran. De nuestras 24 llamadas, 7 no se cobraron, y las enumeramos en la sección de límites.

CasoCálculoUSD
Una llamada con limit=2000,000556 / 200 x 1.0000,00278 por 1.000 posts
Una llamada con limit=200,000556 / 20 x 1.0000,0278 por 1.000 posts
Las 7 llamadas directas a channel_posts de esta prueba0,003892 / 350 posts únicos x 1.0000,0111 por 1.000 posts
6 búsquedas por palabra clave, 58 resultados0,003336 / 58 x 1.0000,0575 por 1.000 resultados
10 canales una vez al día, más 1 búsqueda11 x 0,000556 x 300,18 al mes
50 canales una vez al día, más 1 búsqueda51 x 0,000556 x 300,85 al mes
100 canales dos veces al día, más 2 búsquedas diarias202 x 0,000556 x 303,35 al mes
Todas las llamadas reales de esta guía17 llamadas cobradas0,010285
Gráfico de barras con el costo de telegram/channel_posts por cada 1.000 posts según el límite. Con 20 cuesta 0,0278 USD, con 50 cuesta 0,01112, con 100 cuesta 0,00556 y con 200 cuesta 0,00278. La búsqueda por palabra clave cuesta 0,0575 USD por cada 1.000 resultados, según los resultados medidos.

La búsqueda cuesta mucho más por resultado que la lectura de un canal, porque devuelve pocos resultados. De nuestras seis búsquedas, la menor devolvió 1 resultado y la mayor 26. La media fue de menos de 10 por llamada. Con precio por llamada, menos resultados significan más costo por resultado. Usa la búsqueda para encontrar canales nuevos, no para recoger precios cada día.

Gráfico de líneas con el costo mensual de la API para 5 a 100 canales, leídos una o dos veces al día. Una vez al día cuesta 0,10 USD con 5 canales, 0,18 con 10, 0,35 con 20, 0,85 con 50 y 1,68 con 100. Dos veces al día cuesta 0,18, 0,35, 0,68, 1,68 y 3,35.

Esta es la factura completa de esta prueba, por capacidad.

CapacidadLlamadasCobradasUSD
telegram/channel_posts (7 directas, 1 por MCP, 3 sin cobro)1180,004448
telegram/search660,003336
telegram/profile220,001112
telegram/post_detail400
yandex/market110,001389
Total24170,010285

Junto al precio del plan de Claude, el costo de la API es casi nada. Diez canales cuestan 0,18 USD al mes, menos del 1 % del precio de Pro. La tabla de la sección siguiente muestra el precio de cada plan. Lo que de verdad hay que controlar es cuánto texto lee el modelo. Por eso primero quitamos repetidos, enviamos al modelo solo los posts nuevos y pasamos la expresión regular antes que el modelo.

Dónde vive la programación: tareas de Cowork, tareas en la nube de Claude Code o /loop

Mucha gente cree que basta con pedirle a Claude en un chat que ejecute un trabajo cada día. Un chat no crea una tarea programada. La programación se crea en otra función. Anthropic tiene ahora tres funciones relacionadas con la programación, y cada una encaja con un tipo de usuario.

Los precios de la tabla salen de la página de precios de claude.com (precios de Claude). Pro cuesta 20 USD al mes con pago mensual, o 17 USD al mes con pago anual. Max empieza en 100 USD al mes y Ultra cuesta 200 USD al mes.

FunciónDónde se creaPlanes y precio mensual mínimoFunciona con el ordenador apagadoUsa conectoresNotas
Tareas programadas de CoworkCowork en Claude Desktop, «Scheduled» en la barra lateralTodos los planes de pago, desde 20 USD (Pro)Sí, se ejecuta en remotoSíArtículo de ayuda actualizado el 2026-11-05
Tareas programadas en la nube de Claude Code (antes routines)claude.ai/code/routines, la pestaña Code de Desktop o /schedule en la CLIPro, Max, Ultra, Team, Enterprise, desde 20 USD (Pro)Sí, en la nube de AnthropicSí, todos los conectores por defectoVista previa de investigación. Como mucho una vez por hora. El cron usa UTC por defecto
/loop en una sesiónDentro de una sesión de Claude Code abiertaDepende de la sesión, sin precio extraNo, se para con la sesiónUsa las herramientas de la sesiónCaduca a los 7 días

Las tareas programadas de Cowork encajan con quien no escribe código. El artículo del centro de ayuda actualizado el 2026-11-05 dice lo siguiente. Las tareas programadas están en todos los planes de pago. Se ejecutan en remoto, incluso con el ordenador en reposo. Pueden usar los conectores que hayas añadido. Se gestionan en «Scheduled», en la barra lateral (guía de tareas programadas de Cowork).

Cowork está disponible en Pro, Max, Ultra, Team y Enterprise. La app de escritorio funciona en macOS, Windows y Linux (beta) (primeros pasos con Cowork). Otro artículo, actualizado el 2026-10-30, dice que Cowork y el chat son ahora un mismo Claude (Cowork y el chat son un solo Claude). Así que un conector añadido en el chat también funciona en Cowork.

Para montarlo, crea una tarea programada en Cowork y activa el conector de EveryInfra. Escribe el prompt con claridad. Por ejemplo: «Cada día a las 10:00 de Moscú, llama a channel_posts con limit 20 para cada canal de mi lista. Lee solo los posts nuevos de hoy. Extrae modelo, versión, precio y condiciones. Compara con ayer y escribe un resumen de una página».

Las tareas programadas en la nube de Claude Code encajan con quien guarda scripts o escribe resultados en un repositorio. La documentación dice que la función es una vista previa de investigación. Está en Pro, Max, Ultra, Team y Enterprise. Se crea en la web, en la pestaña Code de la app de escritorio o con /schedule en la CLI.

El intervalo más corto es de una hora. Las expresiones cron usan UTC salvo que definas CRON_TZ. Las tareas fijadas en punto pueden empezar tarde. Por eso la documentación sugiere un minuto que no sea en punto, como 9:07 en lugar de 9:00 (tareas programadas en la nube de Claude Code).

La sección de uso de esa página fija límites. Cada cuenta puede tener como mucho 100 ejecuciones programadas por hora. Cada tarea admite como mucho 30 ejecuciones por hora con «Run now» o por API. Tres cosas deciden a qué puede llegar una tarea: los repositorios elegidos, la red y las variables del entorno, y los conectores incluidos. Una tarea nueva incluye todos tus conectores por defecto, y la documentación sugiere dejar solo los necesarios. Para los planes con sesiones en la nube, consulta la documentación de sesiones en la nube.

Evita un problema conocido. En el issue 96832 del repositorio anthropics/claude-code, una tarea programada falló con «This tool is unavailable in unattended sessions». La discusión concluyó que el conector tiene que seguir activado por defecto para que una tarea desatendida pueda llamarlo (issue 96832 en GitHub). Por eso, al crear la tarea, lánzala una vez con «Run now» y comprueba que la llamada a la herramienta funciona.

/loop es un bucle dentro de una sesión. Encaja con un caso como «tengo la terminal abierta dos horas y quiero revisar cada 30 minutos». La documentación de Claude Code dice que estas tareas de sesión solo funcionan mientras la sesión está abierta y caducan a los 7 días (programación en sesión de Claude Code). No lo uses para un resumen diario.

Escribimos sobre problemas reales de las dos funciones de programación en otros dos artículos. Uno reúne las quejas de Reddit sobre las tareas programadas de Claude Code. El otro usa tareas programadas de Cowork para seguir precios y reseñas de la competencia. Si prefieres un aviso por cada post nuevo en lugar de un resumen diario, mira nuestra guía de Claude Code channels para avisos de posts de la competencia.

Límites y puntos de atención

Primero, telegram/post_detail no funcionó en esta prueba. La llamamos cinco veces para tres enlaces de posts, entre las 00:20 y las 01:20, hora de Singapur. Todas devolvieron 503 y ninguna se cobró. El resumen no necesita esta capacidad, porque channel_posts ya devuelve los campos principales de cada post. Antes de usarla, revisa la página de la capacidad telegram/post_detail y el estado actual en el endpoint de disponibilidad.

Las otras tres llamadas sin cobro están en esta tabla.

Hora (Singapur)LlamadaResultadoSegundosCobro
00:20:17channel_posts, enlace de invitación privadovacío29,40 USD
00:21:03channel_posts, canal inexistentevacío87,30 USD
00:22:37channel_posts con since4220,50 USD

Segundo, los canales privados quedan fuera. Probamos un enlace de invitación privado con formato válido. Devolvió un resultado vacío a los 29,4 segundos y no se cobró. La nota del catálogo sobre username también dice que no admite enlaces de invitación privados. Para canales privados, usa un parser MTProto propio con una cuenta que pertenezca al canal.

Tercero, la búsqueda por palabra clave tiene mucho ruido. Seis búsquedas en ruso devolvieron 58 resultados en total. La de «карго» desde el 2026-10-27 trajo sobre todo canales ajenos al tema. La de tarifas de contenedor trajo sobre todo canales de empleo.

Palabra clave (significado)Filtro de fechaResultadosSegundos
карго из Китая цена за кг (carga desde China, precio por kg)ninguno413,0
оптом прайс поставщик (lista de precios mayorista, proveedor)ninguno117,6
карго (carga)desde 2026-10-271211,1
ставка контейнер (tarifa de contenedor)desde 2026-10-271414,1
доставка из Китая (envío desde China)desde 2026-10-272616,5
18 Pro 256 опт (al por mayor)desde 2026-10-20114,5

La búsqueda útil fue la sexta. Devolvió 1 resultado, que era la lista diaria de boxb2b, y así encontramos el canal. El resumen en sí tiene que basarse en una lista que mantenga una persona. El método channels.getChannelRecommendations de Telegram devuelve canales públicos de temática parecida (getChannelRecommendations). Si usas MTProto, te ayuda a ampliar la lista.

Cuarto, las condiciones de Telegram tienen un límite concreto para usos de IA. Las condiciones de la API de Telegram remiten a sus condiciones de licencia de contenido. Estas prohíben extraer, indexar, recopilar, agregar o usar datos de Telegram para entrenar, ajustar, validar, evaluar o desplegar inteligencia artificial. Las excepciones requieren un consentimiento explícito para cada contexto (condiciones de la API de Telegram, condiciones de licencia de contenido de Telegram).

No damos asesoramiento legal sobre tu caso. En esta guía leemos precios que los vendedores publican en canales públicos y hacemos un resumen para uso propio. No entrenamos modelos con ellos. ¿Tu uso incluye entrenar modelos o un producto de datos público? Entonces lee tú mismo las condiciones y consulta a un abogado si hace falta.

Quinto, los datos personales. La respuesta de telegram/members tiene un campo phone, y esta guía no lo usa en absoluto. Los posts mayoristas muestran a menudo el usuario y el teléfono personal de un gerente. Quítalos del resumen y deja solo el nombre del canal y el enlace al post.

Sexto, no esquives los límites. Nuestra clave tiene un límite de llamadas por minuto. Ante un 429, espera los segundos que indica la respuesta. Esta guía no cubre ninguna forma de esquivar los límites FLOOD_WAIT de Telegram ni los ajustes de acceso de un canal, y no proponemos ninguna.

Cambios recientes en Telegram y en Claude

En Telegram, la Bot API 10.4 salió el 2026-11-09. Añade widgets HTML, con un nuevo método sendWidget (cambios recientes de la Bot API). Telegram Serverless permite ejecutar el código de servidor de bots y Mini Apps en la infraestructura de Telegram. Su registro de cambios añadió el alojamiento de Mini Apps el 2026-10-06 (documentación de Telegram Serverless). Ninguno de los dos cambia la regla básica: un bot solo lee los canales donde es miembro. En MTProto, Telethon 1.45.0 salió el 2026-09-10 y sigue siendo la librería de Python más activa.

En Claude, tres artículos del centro de ayuda cambiaron entre el 2026-10-30 y el 2026-11-06: conectores personalizados, uso de conectores y tareas programadas de Cowork. Además, routines pasó a llamarse tareas programadas en la nube. Esta guía cita las versiones actualizadas.

Preguntas frecuentes

¿La API de Telegram es gratis?

Telegram no cobra por la Bot API ni por la API MTProto, pero cada una tiene condiciones. La Bot API solo lee canales donde el bot es miembro. MTProto necesita una cuenta con teléfono y un api_id de my.telegram.org. La búsqueda global de posts cuesta Stars después de la cantidad gratuita de Premium.

Una API de datos de pago por llamada cuesta dinero: telegram/channel_posts vale 0,000556 USD por llamada. (Origen de la pregunta: autocompletado «is telegram api free» y «telegram api pricing». Base: Bots FAQ, Obtaining api_id, documentación de búsqueda de Telegram.)

¿Existe un parser gratis de canales de Telegram?

Sí. Telethon es de código abierto con licencia MIT. Unas decenas de líneas de Python leen el historial de un canal público. El costo está en la cuenta, no en el software. Necesitas un teléfono, proteger el archivo de sesión y gestionar FLOOD_WAIT. Telegram vigila más de cerca las cuentas con clientes no oficiales.

Para pocos canales y poco uso, el parser propio es lo más barato. Para muchos canales sin mantener una cuenta, una API de pago por llamada es más cómoda. (Origen de la pregunta: autocompletado ruso «парсер телеграм каналов бесплатно», que significa «parser gratis de canales de Telegram». Base: LonamiWebs/Telethon, Obtaining api_id.)

¿Por dónde empiezo un parser de canales de Telegram en Python?

Empieza por la guía de inicio de sesión de Telethon. Crea una aplicación en my.telegram.org para obtener un api_id y un api_hash. Inicia sesión con TelegramClient. Lee el canal con iter_messages. La documentación del cliente de Telethon explica que el parámetro wait_time de iter_messages fija los segundos entre peticiones de historial para evitar FloodWaitError. Por defecto solo espera 1 segundo si el límite supera 3000. Si no quieres iniciar sesión, puedes hacer un POST a nuestra API desde Python con el JSON de una línea del código anterior. (Origen de la pregunta: autocompletado ruso «парсер телеграм каналов python». Base: guía de inicio de sesión de Telethon, referencia del cliente de Telethon.)

¿Puedo añadir un bot al canal público de otra persona si no soy administrador?

No. Un bot solo entra en un canal como administrador, y solo recibe posts de los canales donde es miembro. Para leer canales públicos ajenos, usa una cuenta de usuario con MTProto o una API de pago por llamada; la sección «Tres vías» las compara. (Origen de la pregunta: Stack Overflow 45002999.)

¿Qué hago con el FloodWaitError de Telethon?

Espera los segundos que indica el error y después envía menos peticiones. Cada cuenta tiene un límite distinto, sin una cifra pública fija. La sección «Tres vías» da el código de error y sus fuentes, y esta guía no da ninguna forma de esquivarlo. (Origen de la pregunta: Stack Overflow 76198570.)

¿Puede una IA resumir cada día un canal de noticias sin añadir un bot?

Sí. En r/n8n de Reddit, un usuario preguntó cómo leer un canal cada día y que una IA escriba un resumen. Un comentarista preguntó si funciona sin añadir un bot.

Con una API de pago por llamada no necesitas bot. Llama a telegram/channel_posts una vez al día y quita los repetidos por ID. Pasa los posts nuevos a Claude para el resumen. Programa el trabajo en Cowork o en las tareas programadas en la nube de Claude Code. (Origen de la pregunta: hilo de r/n8n. Base: nuestra prueba y la guía de tareas programadas de Cowork.)

¿Cómo encuentro canales parecidos?

Con MTProto, llama a channels.getChannelRecommendations, que devuelve canales públicos de temática parecida. Sin MTProto, busca por palabras del sector con telegram/search. El tercer punto de «Límites y puntos de atención» muestra nuestras seis búsquedas y cuánto ruido traen. (Origen de la pregunta: autocompletado ruso «парсер похожих каналов телеграм», que significa «parser de canales parecidos de Telegram». Base: getChannelRecommendations.)

Primeros pasos: un canal, una vez al día

Paso 1: consigue una clave y revisa el precio. Sigue el inicio rápido para crear una clave en la consola y guárdala en una variable de entorno. Los precios están en la página de precios y en el catálogo. Una cuenta nueva puede empezar con un importe muy pequeño. La página de la API de datos de Telegram enumera las 6 capacidades. Las más usadas son telegram/channel_posts, telegram/search y telegram/profile.

Paso 2: usa el comando curl de arriba para llamar a un canal con limit=200. Guarda el resultado como base. Pasa la expresión regular y mira cuántos precios saca el formato de tu canal.

Paso 3: añade el conector en Claude. Ve a Customize, luego Connectors, luego «+ Add» y luego «Add custom connector». Escribe https://api.everyinfra.com/mcp como URL. La página del servidor MCP muestra la dirección y la lista de herramientas. La guía de conexión MCP remota tiene capturas. En un chat, pide a Claude que lea los 20 últimos posts de tu canal y comprueba que la llamada funciona.

Paso 4: crea la programación. Si no escribes código, usa «Scheduled» en Cowork. Si escribes en un repositorio, usa las tareas programadas en la nube de Claude Code. Elige un minuto que no sea en punto y recuerda que el cron usa UTC. Deja el conector activado, deja solo este conector en la tarea y lánzala una vez a mano.

Paso 5: ejecútalo una semana y luego amplía la lista. Mira qué canales no tuvieron posts nuevos en la semana y qué precios costó extraer. Después decide si añades canales y si envías los posts difíciles a las salidas estructuradas de Claude. El mismo proceso sirve en otras plataformas, como la API de datos de VK y la API de datos de YouTube. Para ver herramientas ya hechas por otros desarrolladores, visita el mercado de infraestructura.

Referencias

  1. Bots FAQ: What messages will my bot get?, Telegram, leído el 2026-11-10, https://core.telegram.org/bots/faq
  2. Obtaining api_id, Telegram, leído el 2026-11-10, https://core.telegram.org/api/obtaining_api_id
  3. Telegram API Terms of Service, Telegram, leído el 2026-11-10, https://core.telegram.org/api/terms
  4. Content Licensing Terms, Telegram, leído el 2026-11-10, https://telegram.org/tos/content-licensing
  5. Error handling (420 FLOOD_WAIT), Telegram, leído el 2026-11-10, https://core.telegram.org/api/errors
  6. Telegram Bot API (getUpdates y cambios recientes, Bot API 10.4 del 2026-11-09), Telegram, leído el 2026-11-10, https://core.telegram.org/bots/api
  7. messages.getHistory, Telegram, leído el 2026-11-10, https://core.telegram.org/method/messages.getHistory
  8. Search (las búsquedas globales de posts son de pago), Telegram, leído el 2026-11-10, https://core.telegram.org/api/search
  9. channels.getChannelRecommendations, Telegram, leído el 2026-11-10, https://core.telegram.org/method/channels.getChannelRecommendations
  10. Telegram Serverless (cambios recientes, 2026-10-06), Telegram, leído el 2026-11-10, https://core.telegram.org/bots/serverless
  11. tdlib/telegram-bot-api README, GitHub, leído el 2026-11-10, https://github.com/tdlib/telegram-bot-api
  12. Repositorio de Telethon, LonamiWebs, GitHub, leído el 2026-11-10, https://github.com/LonamiWebs/Telethon
  13. Telethon 1.45.0, PyPI, publicado el 2026-09-10, leído el 2026-11-10, https://pypi.org/project/Telethon/
  14. Telethon: Signing In, documentación de Telethon, leído el 2026-11-10, https://docs.telethon.dev/en/stable/basic/signing-in.html
  15. Telethon: Client reference (iter_messages, wait_time), documentación de Telethon, leído el 2026-11-10, https://docs.telethon.dev/en/stable/modules/client.html
  16. Telethon FAQ, documentación de Telethon, leído el 2026-11-10, https://docs.telethon.dev/en/stable/quick-references/faq.html
  17. pyrogram/pyrogram (archivado el 2024-12-23), GitHub, leído el 2026-11-10, https://github.com/pyrogram/pyrogram
  18. telegram.Update (channel_post), documentación de python-telegram-bot, leído el 2026-11-10, https://docs.python-telegram-bot.org/en/stable/telegram.update.html
  19. Discusión 3047: bots en canales, python-telegram-bot, GitHub, leído el 2026-11-10, https://github.com/python-telegram-bot/python-telegram-bot/discussions/3047
  20. Get started with custom connectors using remote MCP, centro de ayuda de Anthropic, actualizado el 2026-10-30, leído el 2026-11-10, https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
  21. Use connectors to extend Claude's capabilities, centro de ayuda de Anthropic, actualizado el 2026-11-06, leído el 2026-11-10, https://support.claude.com/en/articles/11176164-use-connectors-to-extend-claude-s-capabilities
  22. Schedule recurring tasks in Claude Cowork, centro de ayuda de Anthropic, actualizado el 2026-11-05, leído el 2026-11-10, https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork
  23. Claude Cowork and chat are one Claude, centro de ayuda de Anthropic, actualizado el 2026-10-30, leído el 2026-11-10, https://support.claude.com/en/articles/16761823-claude-cowork-and-chat-are-one-claude
  24. Get started with Claude Cowork, centro de ayuda de Anthropic, leído el 2026-11-10, https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork
  25. Getting Started with Local MCP Servers on Claude Desktop, centro de ayuda de Anthropic, leído el 2026-11-10, https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop
  26. Cloud scheduled tasks (antes routines), documentación de Claude Code, leído el 2026-11-10, https://code.claude.com/docs/en/routines
  27. Connect Claude Code to tools via MCP, documentación de Claude Code, leído el 2026-11-10, https://code.claude.com/docs/en/mcp
  28. Scheduled tasks (/loop), documentación de Claude Code, leído el 2026-11-10, https://code.claude.com/docs/en/scheduled-tasks
  29. Configure cloud environments, documentación de Claude Code, leído el 2026-11-10, https://code.claude.com/docs/en/cloud-environments
  30. Use Claude Code in the cloud, documentación de Claude Code, leído el 2026-11-10, https://code.claude.com/docs/en/claude-code-on-the-web
  31. Issue 96832: tool unavailable in unattended sessions, anthropics/claude-code, GitHub, leído el 2026-11-10, https://github.com/anthropics/claude-code/issues/96832
  32. IP addresses, documentación de Claude Platform, leído el 2026-11-10, https://platform.claude.com/docs/en/api/ip-addresses
  33. Structured outputs, documentación de Claude Platform, leído el 2026-11-10, https://platform.claude.com/docs/en/build-with-claude/structured-outputs
  34. Pricing (Claude Haiku 5.5), documentación de Claude Platform, leído el 2026-11-10, https://platform.claude.com/docs/en/about-claude/pricing
  35. Plans and pricing, Anthropic, leído el 2026-11-10, https://claude.com/pricing
  36. MCP specification 2025-06-18: Transports, Model Context Protocol, leído el 2026-11-10, https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
  37. MCP specification 2025-06-18: Tools, Model Context Protocol, leído el 2026-11-10, https://modelcontextprotocol.io/specification/2025-06-18/server/tools
  38. Catálogo de capacidades de datos (price_usd, response_fields), EveryInfra, leído el 2026-11-10 a las 00:13 de Singapur, https://api.everyinfra.com/api/v1/social/catalog
  39. Disponibilidad de las capacidades de Telegram, EveryInfra, leído el 2026-11-10, https://api.everyinfra.com/api/v1/social/availability?platform=telegram
  40. Tipos de cambio diarios en XML (del 2026-11-04 al 2026-11-10), Banco de Rusia, leído el 2026-11-10, https://www.cbr.ru/scripts/XML_daily.asp
  41. World Container Index (número del 2026-11-05), Drewry, leído el 2026-11-10, https://www.drewry.co.uk/supply-chain-advisors/supply-chain-expertise/world-container-index-assessed-by-drewry
  42. How to add telegram bot to public channel I'm not admin of, Stack Overflow, leído el 2026-11-10, https://stackoverflow.com/questions/45002999/how-to-add-telegram-bot-to-public-channel-im-not-admin-of
  43. Python Telethon: how can you prevent the FloodWaitError, Stack Overflow, leído el 2026-11-10, https://stackoverflow.com/questions/76198570/python-telethon-how-can-you-prevent-the-floodwaiterror-error-or-reduce-its-tim
  44. Can I read Telegram texts from a certain channel, r/n8n, Reddit, leído el 2026-11-10, https://www.reddit.com/r/n8n/comments/1jwpuu5/can_i_read_telegram_texts_from_a_certain_channel/

Referencia BL-122

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