Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
artwist-polyakov avatar

Telegram Channel Parser

  • 19 installs
  • 177 repo stars
  • Updated May 10, 2026
  • artwist-polyakov/polyakov-claude-skills

telegram-channel-parser is a Claude skill that parses public Telegram channels via the t.me/s web preview to extract posts, metrics, digests, and competitive analysis without API keys.

About

This skill parses public Telegram channels through the t.me/s web preview, needing no API keys or MTProto. A developer uses it to pull posts with views and reactions, build multi-channel digests, rank top posts, analyze posting schedules, and compare channels. Output goes to TSV or CSV files and can render as a React digest artifact.

  • Parses public Telegram channels through the t.me/s web preview with no API keys or MTProto
  • Extracts posts, views, reactions, digests, posting schedules, and competitor comparisons
  • Pure POSIX sh with only curl, sed, awk, and grep, plus a React digest artifact template

Telegram Channel Parser by the numbers

  • 19 all-time installs (skills.sh)
  • Ranked #1,308 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

telegram-channel-parser capabilities & compatibility

Free and zero-config; no tokens or API keys required, only curl/sed/awk/grep.

Capabilities
web scraping · data analysis
Use cases
web scraping · data analysis
Pricing
Free
From the docs

What telegram-channel-parser says it does

Парсинг публичных Telegram-каналов через веб-превью (t.me/s/). Без API-ключей, без MTProto, zero config.
SKILL.md
Чистый POSIX sh** — никаких зависимостей кроме curl, sed, awk, grep.
SKILL.md
npx skills add https://github.com/artwist-polyakov/polyakov-claude-skills --skill telegram-channel-parser

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs19
repo stars177
Last updatedMay 10, 2026
Repositoryartwist-polyakov/polyakov-claude-skills

What it does

Parse public Telegram channels to collect posts and metrics, build digests, or run competitive channel analysis.

Who is it for?

Pulling posts, metrics, and digests from public Telegram channels with zero config.

When should I use this skill?

You need to parse a Telegram channel, build a channel digest, or run analytics or competitive comparison on public channels.

What you get

Posts, metrics, digests, and comparisons are produced as compact TSV/CSV files or a React digest artifact.

By the numbers

  • 9 bundled scripts for parsing and digests
  • 1.5s pause between t.me requests
  • stdout capped at 30 lines

Files

SKILL.mdMarkdownGitHub ↗

telegram-channel-parser

Парсинг публичных Telegram-каналов через веб-превью (t.me/s/). Без API-ключей, без MTProto, zero config.

Перед запуском

Перед любым запуском скриптов создай рабочую копию скилла в /home/claude/telegram-channel-parser и работай уже из неё:

bash scripts/prepare_runtime.sh
cd /home/claude/telegram-channel-parser

prepare_runtime.sh копирует скилл и, если есть config/.env, нормализует его через sed -i: некавыченные значения с пробелами или кириллицей оборачиваются в кавычки в рабочей копии.

Config

Никаких токенов не требуется. Для дайджестов — скопировать .env.example:

cp config/.env.example config/.env

Без `.env`: скилл работает, но каналы нужно передавать явно через --channel / --channels.

С `.env`: дайджест AI-каналов готов из коробки. Пользователь может добавить свои категории.

Структура `.env` (категории дайджестов):

TG_CATEGORIES=ai,crypto         # реестр доступных категорий
TG_DEFAULT_CATEGORY=ai           # дефолтная при запросе "дайджест"

TG_CHANNELS_AI_LABEL="AI и технологии"
TG_CHANNELS_AI=countwithsasha,evilfreelancer,...

TG_CHANNELS_CRYPTO_LABEL="Криптовалюты"
TG_CHANNELS_CRYPTO=channel1,channel2

Алгоритм агента при запросе дайджеста: 1. Прочитать config/.env (если есть) 2. Распарсить TG_CATEGORIES — получить список доступных категорий 3. Для каждой категории: TG_CHANNELS_<ID> = каналы, TG_CHANNELS_<ID>_LABEL = название 4. Определить нужную категорию:

  • Пользователь назвал тему → сопоставить с _LABEL
  • Не уточнил → использовать TG_DEFAULT_CATEGORY
  • Несколько категорий подходят → предложить выбор

5. Передать каналы нужной категории через --channels

Если `.env` нет → спросить какие каналы парсить, предложить cp config/.env.example config/.env.

Приоритет: --channels явно > категория из .env > агент спрашивает.

Подробности: config/README.md.

Philosophy

1. Always fresh — данные запрашиваются в реальном времени при каждом вызове. Никогда не пропустишь свежий пост. 2. Context window hygiene — stdout ограничен 30 строками. Полные данные в TSV/CSV. LLM работает с компактным форматом, а не с сырым HTML. 3. Rate limit — между запросами к t.me пауза 1.5с. Не жадничаем. 4. Чистый POSIX sh — никаких зависимостей кроме curl, sed, awk, grep.

Workflow

Парсинг одного канала

1. Получи посты:

   bash scripts/fetch_posts.sh --channel countwithsasha --limit 50

Выведет последние 50 постов в TSV (id, date, views, reactions, fwd_from, fwd_link, text, media_url).

2. Инфо о канале:

   bash scripts/channel_info.sh --channel countwithsasha

3. Поиск по постам:

   bash scripts/search_posts.sh --channel countwithsasha --query "скилл"

4. Топ постов (шер-парад):

   bash scripts/top_posts.sh --channel countwithsasha --limit 50 --sort reactions

5. Расписание публикаций:

   bash scripts/posting_schedule.sh --channel countwithsasha --limit 100

6. Экспорт:

   bash scripts/export_csv.sh --channel countwithsasha --limit 100 --csv cache/export.csv

Дайджест по нескольким каналам

# Явный список каналов
bash scripts/digest.sh --channels "countwithsasha,evilfreelancer,aostrikov_ai_agents" --period today

# Дефолтный набор (без --channels)
bash scripts/digest.sh --period today

Периоды: today, yesterday, week, N (последние N дней).

Сравнение каналов

bash scripts/compare_channels.sh --channels "channel1,channel2,channel3" --limit 30

Таблица: подписчики, средние просмотры, частота публикаций, engagement.

React-артифакт для дайджеста

При запросе дайджеста — отображай результаты как React-артифакт (лента карточек).

Алгоритм (4 шага): 1. Запусти digest_json.sh — он пишет JSON в файл (не stdout!) и возвращает путь:

   bash scripts/digest_json.sh --period today
   # → prints: cache/digest_today.json

2. Прочитай JSON-файл по выведенному пути 3. Прочитай шаблон assets/digest-feed.tsx 4. Замени __DIGEST_DATA__ в шаблоне на содержимое JSON, отрендери как React-артифакт

Важно: скрипт пишет в файл, а не в stdout, чтобы обойти лимит буфера sandbox (~200KB). Для 30-дневного дайджеста 15 каналов JSON может быть 500KB+.

Посты автоматически сортируются по дате (новые сверху), перемешаны между каналами. Пользователь фильтрует по периоду и каналу через UI.

Scripts

Общий паттерн вызова:

bash scripts/<script>.sh --channel <username> [--limit N] [--before <post_id>] [--csv path]
ScriptDescriptionSpecial params
fetch_posts.shПосты канала → TSV--limit, --before, --after-date YYYY-MM-DD
channel_info.shНазвание, описание, подписчики
search_posts.shПолнотекстовый поиск--query "text"
top_posts.shРанжирование постов`--sort views\
posting_schedule.shАнализ времени публикаций--limit
export_csv.shЭкспорт в CSV--csv path
digest.shДайджест нескольких каналов--channels "a,b,c", `--period today\
digest_json.shДайджест → JSON файл (для React-артифакта)--channels "a,b,c", `--period today\
compare_channels.shСравнительная таблица--channels "a,b,c"

Общие параметры

ParamRequiredDefaultDescription
--channelда*Username канала (без @)
--channelsнетиз .envНесколько каналов через запятую
--limitнет20Сколько постов загрузить
--beforeнетID поста для пагинации
--after-dateнетНе загружать посты старше даты (YYYY-MM-DD)
--csvнетПуть для экспорта

*--channel для одного канала, --channels для мультиканальных команд.

Ввод канала

Скилл принимает канал в любом формате:

  • countwithsasha — просто username
  • @countwithsasha — с собакой
  • https://t.me/countwithsasha — прямая ссылка
  • https://t.me/s/countwithsasha — ссылка на веб-превью
  • t.me/countwithsasha?before=500 — с параметрами

Всё автоматически нормализуется до голого username.

Ограничения

  • Только публичные каналы (у которых есть t.me/s/ превью)
  • Счётчик пересылок (shares) недоступен — t.me/s/ его не отдаёт, только MTProto API
  • Зато парсится откуда переслан пост (fwd_from + ссылка на оригинал)
  • Реакции парсятся суммарно (общее количество по всем эмодзи)
  • Пагинация: ~20 постов на страницу, для 100 постов = 5 запросов
  • Rate limit: 1.5с между запросами к t.me

Related skills

Automation & Workflowscontentdistribution

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.