mcpbeat Sign in

Telegram Channel Parser Skill for Claude

| Парсинг публичных Telegram-каналов через веб-превью t.me/s/. Посты, метрики, аналитика, дайджесты, конкурентный анализ. Cache-first подход для гигиены контекстного окна. дайджест каналов, telegram digest, анализ канала, шер-парад, telegram analytics, мониторинг каналов.

14k tokens
context cost
the whole folder, loaded on every use
20
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
175
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/artwist-polyakov/polyakov-claude-skills --skill telegram-channel-parser

What comes with it

44 998 bytes besides the instruction
.gitignore
assets/digest-feed.tsx
config/.env.example
config/README.md
scripts/channel_info.sh
scripts/common.sh
scripts/compare_channels.sh
scripts/digest.sh
scripts/digest_json.sh
scripts/export_csv.sh
scripts/fetch_posts.sh
scripts/parse_tg_posts.awk
scripts/posting_schedule.sh
scripts/prepare_runtime.sh
scripts/sanitize_env.sh
scripts/search_posts.sh
scripts/tests/run.sh
scripts/tests/test_config_loader.sh
scripts/top_posts.sh

The instruction itself

6 sections, as written by the author

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

Алгоритм агента при запросе дайджеста:

  • Прочитать config/.env (если есть)
  • Распарсить TG_CATEGORIES — получить список доступных категорий
  • Для каждой категории: TG_CHANNELS_<ID> = каналы, TG_CHANNELS_<ID>_LABEL = название
  • Определить нужную категорию:
  • Пользователь назвал тему → сопоставить с _LABEL
  • Не уточнил → использовать TG_DEFAULT_CATEGORY
  • Несколько категорий подходят → предложить выбор
  • Передать каналы нужной категории через --channels

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

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

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

Philosophy

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

Workflow

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

  • Получи посты:
   bash scripts/fetch_posts.sh --channel countwithsasha --limit 50

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

  • Инфо о канале:
   bash scripts/channel_info.sh --channel countwithsasha
  • Поиск по постам:
   bash scripts/search_posts.sh --channel countwithsasha --query "скилл"
  • Топ постов (шер-парад):
   bash scripts/top_posts.sh --channel countwithsasha --limit 50 --sort reactions
  • Расписание публикаций:
   bash scripts/posting_schedule.sh --channel countwithsasha --limit 100
  • Экспорт:
   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 шага):

  • Запусти digest_json.sh — он пишет JSON в файл (не stdout!) и возвращает путь:
   bash scripts/digest_json.sh --period today
   # → prints: cache/digest_today.json
  • Прочитай JSON-файл по выведенному пути
  • Прочитай шаблон assets/digest-feed.tsx
  • Замени __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]

| Script | Description | Special 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\|reactions, --limit |

| posting_schedule.sh | Анализ времени публикаций | --limit |

| export_csv.sh | Экспорт в CSV | --csv path |

| digest.sh | Дайджест нескольких каналов | --channels "a,b,c", --period today\|yesterday\|week\|N |

| digest_json.sh | Дайджест → JSON файл (для React-артифакта) | --channels "a,b,c", --period today\|yesterday\|week\|N |

| compare_channels.sh | Сравнительная таблица | --channels "a,b,c" |

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

| Param | Required | Default | Description |

|-------|----------|---------|-------------|

| --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

Other skills for the same job

different authors, same section of the catalogue
Meeting Insights Analyzer
by frostant
×8

Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.

3k tokens
Slack Gif Creator
by JayZeeDesign
×7

Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y".

53k tokens scripts
Developer Growth Analysis
by frostant
×6

Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.

4k tokens
Slack Gif Creator
by anthropics
vendor ×5

Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack.

11k tokens scripts
Skill Share
by frostant
×4

A skill that creates new Claude skills and automatically shares them on Slack using Rube for seamless team collaboration and skill discovery.

728 tokens
Electron
by vercel-labs
vendor ×2

Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.

2k tokens
Notion Meeting Intelligence
by openai
vendor ×2

Prepare meeting materials with Notion context and Codex research; use when gathering context, drafting agendas/pre-reads, and tailoring materials to attendees.

18k tokens
Daily Meeting Update
by softaworks
×2

Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update.

8k tokens scripts

How to use it

Copy the folder

Take artwist-polyakov/telegram-channel-parser from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.