Технічне заглиблення в tgadsspy: класифікатор і pipeline інгестії даних
Технічна документація pipeline даних tgadsspy — інтеграція API gramesh, архітектура класифікатора ніш (regex + ваги), 3-крокова geo-класифікація, контент-адресоване зберігання SHA256 та кеш агрегації. Для розробників, дослідників і команд відповідності.
Мета та аудиторія#
Цей документ є технічним заглибленням у те, як Telegram Ads Spy збирає, класифікує та подає дані рекламних оголошень Telegram. Він доповнює огляд на /about деталями рівня реалізації. Основна аудиторія: розробники, що будують на базі публічного API, дослідники, яким потрібно розуміти провенанс даних для цитування, та команди відповідності, що оцінюють OSINT-методологію системи.
1. Джерело даних: API gramesh#
Всі рекламні дані в Telegram Ads Spy походять з єдиного джерела: HTTP API gramesh на api.wall.systems/gramesh. gramesh — шар проксі/агрегації над протоколом MTProto Telegram, що надає REST-ендпоінти з відповідями у форматі структурованого JSON. Telegram Ads Spy використовує виключно gramesh — без прямої реалізації MTProto, без скрейпінгу.
Ключові ендпоінти#
POST /channels.getSponsored
- Вхід:
{ channel_id: <int>, dc_id: <int> } - Вихід: масив об'єктів спонсорованих повідомлень для заданого каналу в зазначеному регіоні датацентру Telegram
- Включає:
title,text,ctaUrl,ctaLabel,accentColor,mediaType,mediaUrl,ctaTargetUsername - URL медіа: підписані, TTL 1 год (
/files/photo/<id>?sig=&exp=)
POST /channels.getInfo
- Вхід:
{ username: <string> | id: <int> } - Вихід: метадані каналу —
id,title,username,description,memberCount,avatarUrl
POST /contacts.search
- Вхід:
{ q: <string> } - Вихід: масив об'єктів каналів, що відповідають запиту
POST /channels.getSimilar
- Вхід:
{ channel_id: <int> } - Вихід: схожі канали згідно з внутрішньою моделлю схожості Telegram
2. Пул каналів і рівні#
| Рівень | Кількість учасників | Інтервал інгестії |
|---|---|---|
| S (Супер) | 1M+ | 30 хвилин |
| A | 100k–1M | 2 години |
| B | 10k–100k | 8 годин |
| C | 1k–10k | 72 години |
| Placeholder | Невідомо | Не інгестується |
3. Дедуплікація креативів#
відбиток креативу = sha256(title + text + ctaUrl + ctaLabel + accentColor)
Креатив вважається новим лише якщо його відбиток раніше не зустрічався. Це означає:
- Та сама реклама в 100 каналах створює один запис
AdCreative(не 100) - Кожна поява в каналі створює один запис
SponsoredImpression
4. Класифікація ніш#
Крок 1: Виявлення брендів Пошук у словнику ~400 відомих брендів рекламодавців. Приклади:
binance→crypto1xbet→gamblingexness→forex
Крок 2: Скоринг за ключовими словами Regex-патерни оцінюються для кожної ніші з правилами специфічності, заперечення та мовними варіантами.
Таксономія ніш#
crypto, trading, forex, fintech, gambling, betting, vpn, dating, news, education, gaming, retail, tech, bots, adult, signals, remittance, ai, other
5. Географічна класифікація#
Крок 1: Аналіз TLD URL CTA
.ru → RU, .com.br → BR, .pk → PK тощо.
Крок 2: Виявлення мови в тексті креативу Арабський → AR, кирилиця → RU/CIS, деванагарі → HI, хангул → KR, хірагана/катакана → JP, тайська → TH.
Крок 3: Агрегація geo на рівні каналу
Канал, в якому з'явився креатив, має власний geo-сигнал. Креатив із доменом .com на англійській мові, що з'являється переважно в каналах на російській мові, класифікується як RU.
6. Дзеркалювання медіа#
Cron Telegram Ads Spy-media-mirror (кожні 5 хвилин):
- Fetch: HTTP GET до підписаного gramesh URL медіа
- Hash: SHA-256 сирого бінарного вмісту
- Зберігання: Записує у
/var/www/tgadsspy-media/<префікс>/<sha256-hex>.<ext> - Оновлення:
AdCreative.mediaUrlоновлюється на/m/<префікс>/<sha256-hex>.<ext>
Nginx обслуговує шляхи /m/ з Cache-Control: public, immutable, max-age=31536000.
7. Видобування рекламодавців#
- Рекламодавець-домен: якщо
ctaUrl— зовнішній URL, зареєстрований домен стає записомAdvertiserзtype: domain - Рекламодавець Telegram: якщо
ctaUrl— URLt.me/<username>, ім'я користувача стає записомAdvertiserзtype: telegram
8. Кеш агрегації#
Telegram Ads Spy:home:agg (TTL 120с): загальна кількість креативів, рекламодавців, каналів, топ-ніші, 20 останніх креативів, статистика дня.
Telegram Ads Spy:pool:stats (TTL 600с): кількість каналів за рівнями, кількість придатних для спонсорства, представлені країни.
9. BFS-павук discover-similar#
- Вибір якоря:
Channel.lastSimilarCheckAt IS NULL OR < NOW()-1h - Fan-out: 30 каналів за тік (щохвилини в процесі)
- Cooldown якоря: 1 година, щоб запобігти повторному спайдерингу того самого каналу
10. Повнота даних та відомі прогалини#
Оцінка покриття: Для спонсорованих повідомлень кабінету EUR покриття оцінюється в 65–75% усіх унікальних креативів за цей період.
Відомі прогалини: реклама в групах, повідомлення бот-до-користувача, результати inline-ботів, дуже нові канали, канали з < 1k підписників.
11. Ліцензія даних та цитування#
Всі дані під CC-BY-4.0:
Джерело: tgadsspy.com · tgadsspy.com/blog/tgadsspy-classifier-pipeline-technical-deep-dive · CC-BY-4.0
Also available in:
Cite this article
tgadsspy research (2026). Технічне заглиблення в tgadsspy: класифікатор і pipeline інгестії даних. tgadsspy.com. Retrieved from https://tgadsspy.com/blog/uk-tgadsspy-tekhnichne-zaglyblennia-klasyfikator-pipeline-2026
Licensed CC-BY-4.0 — reuse allowed including commercial, attribution required.