Search Telegram channels and pull audience/engagement stats (subscribers, reach, ER/ERR) via TGStat API. Useful for finding channels to advertise in and researching competitor audiences.
How this skill is triggered — by the user, by Claude, or both
Slash command
/acedatacloud-ai-media:tgstatWhen to use
Trigger when the user wants to discover Telegram channels by keyword / category / country / language, inspect a specific channel's subscriber count, average post reach and engagement (ER / ERR) to judge ad value, or check their TGStat API quota. This is a marketing-research / ad-channel-selection tool — it does NOT post to Telegram (use the `telegram` connector for reading/sending messages).
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Call the **TGStat Stat API** with `curl + jq`. The user's token is in
Call the TGStat Stat API with curl + jq. The user's token is in
$TGSTAT_TOKEN and is passed as the token query parameter on every request.
Base URL: https://api.tgstat.ru.
Responses are JSON shaped {"status":"ok","response": ...}. Errors come back as
{"status":"error","error":"<message>"} — show the error verbatim. An invalid
token or an inactive/expired API plan will surface here; tell the user to check
their token / plan in the TGStat 个人中心 and re-connect the connector.
Always confirm the token + remaining quota first (usage/stat is free and
does not count against tariff quota):
curl -sS "https://api.tgstat.ru/usage/stat?token=$TGSTAT_TOKEN" \
| jq '.status, (.response[]? | {serviceKey, title, spentChannels, spentRequests, expiredAt})'
GET /channels/search — at least one of q (keyword, min 3 chars) or
category is required.
Params: q, category, country, language (default russian),
peer_type (channel | chat | all, default channel),
search_by_description (0/1), limit (max 100).
# Russian-language AI/ChatGPT channels, biggest first.
curl -sS "https://api.tgstat.ru/channels/search" \
--data-urlencode "token=$TGSTAT_TOKEN" \
--data-urlencode "q=нейросети" \
--data-urlencode "language=russian" \
--data-urlencode "peer_type=channel" \
--data-urlencode "limit=50" -G \
| jq '.response.items | sort_by(-.participants_count)
| .[] | {username, title, subs: .participants_count, ci_index, link}'
--data-urlencode ... -G so Cyrillic / spaces in q are encoded correctly.ci_index (индекс цитирования) is TGStat's citation/authority score — higher =
more reposted/mentioned elsewhere, a useful quality signal beyond raw subs.ChatGPT, нейросети, AI, разработка, API) and
merge results; TGStat matches title/username (add search_by_description=1 to
also match the channel description).GET /channels/stat?channelId=<@username | t.me/username | tgstat id> returns
the numbers that actually matter for ad pricing:
curl -sS "https://api.tgstat.ru/channels/stat?token=$TGSTAT_TOKEN&channelId=@durov" \
| jq '.response | {
subs: .participants_count,
avg_post_reach, # средний охват публикации
adv_reach_24h: .adv_post_reach_24h, # рекламный охват за 24ч — key for CPM
er_percent, err_percent, err24_percent,
daily_reach, ci_index, posts_count
}'
adv_post_reach_24h (average advertising reach
of a post over 24h), not raw subscriber count — subs are vanity, reach is what
the ad actually gets seen by.err_percent / err24_percent relative to subs = inflated/dead audience →
skip it.dau/wau/mau and
messages_count_* fields.GET /channels/get?channelId=... returns descriptive info (title, about,
category, country, language, participants_count, ci_index) when you
just need to identify/verify a channel rather than full stats.
GET /database/categories?token=$TGSTAT_TOKEN lists valid category values you
can pass to channels/search. There are also /database/countries and
/database/languages. (See the docs for the full parameter/response shape.)
channels/search needs a Stat API tariff S or higher;
channels/stat / channels/get work on all Stat tariffs. If a call returns an
access error, the user's plan doesn't cover that method.usage/stat). Don't loop over hundreds of channels
blindly — search, shortlist, then stat only the shortlist.q min length is 3 chars → {"error":"param q is too short"}.q via --data-urlencode (or pre-URL-encode) so the
keyword isn't mangled.npx claudepluginhub acedatacloud/skills --plugin acedatacloud-ai-toolsSearch Telegram channels by keywords, read messages, and extract ad contacts from channel descriptions and posts. Useful for channel discovery and ad analysis.
Parses public Telegram channels via t.me/s/ web previews to fetch posts, metrics, analytics, digests, top posts, and schedules. Enables monitoring and competitive analysis using pure bash scripts.
Discovers and ranks influencers by niche, engagement, and authenticity across Twitter, Instagram, and Reddit using Xpoz.