ТЗ на данные — анализ аудитории «Зелёной тропы» — по наборам данных
📄 Что это за документ
Что это:
ТЗ на данные для анализа аудитории Instagram глэмпинга «Зелёная тропа» (@zelenayatropa).
Для кого:
Для Константина и коллег — обсуждать. Для агентов и фрилансера — искать поставщика данных и оценивать стоимость.
Что внутри:
Список задач бизнеса, затем наборы данных — у каждого поля расшифровка, зачем оно и для какой задачи, — затем схемы «поле → задача».
Что дальше:
На основе ТЗ считаем, сколько стоит собрать каждое поле через Apify и другие API, и решаем, что берём.
Второе оформление:
То же ТЗ «по задачам» — SPEC-BY-TASKS-audience-task-003-followers-parsing-data-requirements.md: каждая задача одним блоком, удобно читать задачу целиком.
Карточка задачи:
README-audience-task-003-write-data-requirements-spec-for-followers-parsing.md в этой папке.
📑 Оглавление
- 🎯 Задачи бизнеса
- 📦 Наборы данных и поля
- Набор 110. Список подписчиков «Тропы»
- Набор 120. Профиль каждого подписчика «Тропы»
- Набор 130. На кого подписан каждый подписчик «Тропы»
- Набор 140. Кто подписан на каждого подписчика «Тропы»
- Набор 150. Профили аккаунтов, на которые подписаны подписчики «Тропы»
- Набор 160. Профили тех, кто подписан на подписчиков «Тропы»
- Набор 170. Список постов «Тропы» с числом лайков и комментариев
- Набор 180. Кто лайкнул каждый пост «Тропы»
- Набор 190. Кто и что написал в комментариях к каждому посту «Тропы»
- Во всех наборах
- 🗺️ Схемы: какое поле для какой задачи
- Схема задачи 10. Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок
- Схема задачи 20. Найти подписчиков, которые чаще всех лайкают и комментируют посты «Тропы»
- Схема задачи 30. Найти подписчиков «Тропы», у которых в подписчиках есть известные люди
- Схема задачи 40. Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам
- Схема задачи 50. Найти среди подписчиков трендсеттеров по подпискам на трендовые аккаунты
- Схема задачи 60. Найти подписчиков, которые давно не ведут Instagram, и исключить их из анализа
- Схема: Служебные поля — нужны всем задачам
- 📋 Требования к результату
⚠️ Черновик агента. Номера и названия задач и наборов данных — предложения, ждут ответа в
QUESTIONS-audience-task-003-open-points-in-data-requirements-spec.md.ℹ️ Здесь только «что нужно и зачем». Цена и доступность данных — на этапе оценки.
Аккаунт:
@zelenayatropa, около 70 700 подписчиков.
🎯 Задачи бизнеса
- Задача 10. Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок
Психологи, нутрициологи, массажисты и т.п., на которых подписано много подписчиков «Тропы». Зовём провести заезд-перезагрузку — выездное мероприятие в глэмпинге с ведущим — по бартеру.[1]
💬 Что неясно:
Какие профессии искать — полный список. Какое пересечение считать большим. - Задача 20. Найти подписчиков, которые чаще всех лайкают и комментируют посты «Тропы»
Самые вовлечённые — с ними проще договориться.[1:1]
💬 Что неясно:
Период. Константин 2026-09-26 19:28 по Мадриду, предварительно: «ну с января 2024 можем взять например».
На подумать — Константин 2026-09-26 19:28 по Мадриду: «я подумаю лояльность протухает со временем или нет». - Задача 30. Найти подписчиков «Тропы», у которых в подписчиках есть известные люди
Авторитетность подписчика: и сколько у него подписчиков, и есть ли среди них известные.[2]
💬 Что неясно:
Кого считать известным: порог по числу подписчиков, галочку верификации или и то и другое. - Задача 40. Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам
Интересы ядра аудитории — магазины, бренды, места, — а не всех 70 000.[2:1]
💬 Что неясно:
Как отбирать лидеров мнений: по числу подписчиков, по итогу задачи 30 «Найти подписчиков «Тропы», у которых в подписчиках есть известные люди», или по обоим признакам. - Задача 50. Найти среди подписчиков трендсеттеров по подпискам на трендовые аккаунты
Кто подписан на трендовые аккаунты-маркеры от Ирины — вероятно, трендсеттер. В их подписках ищем новые бренды раньше остальных.[2:2]
💬 Что неясно:
Кто даёт список трендовых аккаунтов-маркеров. Оставляем эту задачу в этом ТЗ или на потом. - Задача 60. Найти подписчиков, которые давно не ведут Instagram, и исключить их из анализа
Такие аккаунты искажают выводы остальных задач.[2:3]
💬 Что неясно:
Признаки: Константин 2026-09-26 около 19:29 по Мадриду: «дата последнего поста, дата последней сторис в хайлайте. дата когда он подписался на кого то если нам известна?»
Какую давность считать неактивностью — не решено. В записи 25.09 звучало: «если они с двадцать второго года не ведут Инстаграм».
📦 Наборы данных и поля
Строка поля:
`имя_поля` — что это значит → зачем; для какой задачи
📦 Набор 110. Список подписчиков «Тропы»
follower_user_id— постоянный номер аккаунта подписчика в Instagram → по нему связываются все наборы; для всех задачfollower_username— имя аккаунта,@…→ найти человека и написать ему; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок» и задачи 20 «Найти подписчиков, которые чаще всех лайкают и комментируют посты «Тропы»»followed_at— дата, когда человек подписался на «Тропу» → давний подписчик или случайный; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок»
📦 Набор 120. Профиль каждого подписчика «Тропы»
full_name— имя, которое человек указал в профиле → узнать человека, найти его вне Instagram; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок»biography— текст «о себе» в профиле → главный источник профессии; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок»category— категория бизнес-профиля, которую выбрал владелец, например «Психолог» → второй источник профессии; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок»external_url— ссылка в профиле: сайт, запись на консультацию → подтверждает, что человек ведёт практику; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок»is_business_account— бизнес-аккаунт или личный → отличить практику от личной страницы; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок»followers_count— сколько подписчиков у человека → признак «количество» и отбор влиятельных; для задачи 30 «Найти подписчиков «Тропы», у которых в подписчиках есть известные люди» и задачи 40 «Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам»is_verified— есть ли галочка верификации, синяя отметка Instagram у подтверждённых аккаунтов → признак известности; для задач 30 «Найти подписчиков «Тропы», у которых в подписчиках есть известные люди» и 40 «Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам»last_post_at— дата последнего поста → давно ли человек не ведёт Instagram; для задачи 60 «Найти подписчиков, которые давно не ведут Instagram, и исключить их из анализа»media_count— сколько всего постов в аккаунте → постов нет вообще; для задачи 60 «Найти подписчиков, которые давно не ведут Instagram, и исключить их из анализа»last_highlight_story_at— дата самой свежей сторис в хайлайтах, закреплённых сторис в профиле → человек ведёт аккаунт, даже если не публикует посты; для задачи 60 «Найти подписчиков, которые давно не ведут Instagram, и исключить их из анализа»is_private— закрыт ли профиль → от этого зависит, что по нему видно; служебное, для всех задачfollowing_count— на сколько аккаунтов подписан человек → проверить, полностью ли собран «Набор 130. На кого подписан каждый подписчик «Тропы»»; служебное
📦 Набор 130. На кого подписан каждый подписчик «Тропы»
follower_user_id— номер аккаунта подписчика «Тропы» → кто подписан; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок», задачи 40 «Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам» и задачи 50 «Найти среди подписчиков трендсеттеров по подпискам на трендовые аккаунты»target_user_id— номер аккаунта, на который он подписан →- посчитать, сколько подписчиков «Тропы» подписаны на кандидата, — пересечение аудиторий; для задачи 10 «Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок»
- список интересов лидеров мнений; для задачи 40 «Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам»
- подписан ли человек на трендовые маркеры, и что ещё у трендсеттеров в подписках; для задачи 50 «Найти среди подписчиков трендсеттеров по подпискам на трендовые аккаунты»
target_followed_at— дата, когда подписчик подписался на этот аккаунт, если источник её отдаёт → самая свежая подписка показывает, что человек пользуется Instagram; для задачи 60 «Найти подписчиков, которые давно не ведут Instagram, и исключить их из анализа»
📦 Набор 140. Кто подписан на каждого подписчика «Тропы»
follower_user_id— номер аккаунта подписчика «Тропы» → на кого подписаны; для задачи 30 «Найти подписчиков «Тропы», у которых в подписчиках есть известные люди»subscriber_user_id— номер аккаунта того, кто подписан на подписчика «Тропы» → кто именно подписан, без этого признак «качество» не посчитать; для задачи 30 «Найти подписчиков «Тропы», у которых в подписчиках есть известные люди»
📦 Набор 150. Профили аккаунтов, на которые подписаны подписчики «Тропы»
Все поля — для задачи 40 «Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам» и задачи 50 «Найти среди подписчиков трендсеттеров по подпискам на трендовые аккаунты».
username— имя аккаунта,@…→ узнать аккаунтfull_name— название или имя в профиле → понять, что это: магазин, бренд, человекbiography— текст «о себе» → понять, чем аккаунт занимаетсяcategory— категория бизнес-профиля, например «Продуктовый магазин» → сгруппировать интересы по темамfollowers_count— сколько подписчиков у аккаунта → массовый он или новый нишевый
📦 Набор 160. Профили тех, кто подписан на подписчиков «Тропы»
Все поля — для задачи 30 «Найти подписчиков «Тропы», у которых в подписчиках есть известные люди».
username— имя аккаунта,@…→ показать, кто именно из известных подписан, и проверить рукамиfollowers_count— сколько подписчиков у этого аккаунта → известен ли онis_verified— есть ли галочка верификации → второй признак известности
📦 Набор 170. Список постов «Тропы» с числом лайков и комментариев
Все поля — для задачи 20 «Найти подписчиков, которые чаще всех лайкают и комментируют посты «Тропы»».
post_id— номер поста → к нему привязаны лайки и комментарииpost_url— ссылка на пост → открыть и проверитьposted_at— дата публикации → видеть активность человека во времениmedia_type— фото, карусель или рилс → на что человек реагируетlikes_count— сколько всего лайков у поста → фон: сравнить активность человека со среднейcomments_count— сколько всего комментариев у поста → тот же фон
📦 Набор 180. Кто лайкнул каждый пост «Тропы»
Все поля — для задачи 20 «Найти подписчиков, которые чаще всех лайкают и комментируют посты «Тропы»».
post_id— номер поста → какой пост лайкнулиliker_user_id— номер аккаунта, который поставил лайк → кто и сколько раз лайкал «Тропу»
📦 Набор 190. Кто и что написал в комментариях к каждому посту «Тропы»
Все поля — для задачи 20 «Найти подписчиков, которые чаще всех лайкают и комментируют посты «Тропы»».
post_id— номер поста → к какому посту комментарийcommenter_user_id— номер аккаунта автора комментария → кто и сколько раз комментировалcommented_at— дата комментария → давно или недавноcomment_text— текст комментария → тон: хвалит, спрашивает, жалуется
📦 Во всех наборах
collected_at— дата сбора строки → на какой день данные верны; служебное
🗺️ Схемы: какое поле для какой задачи
Одна схема — одна задача. Слева набор данных и поля, на стрелке — зачем, справа — задача.
🗺️ Задача 10. Найти среди подписчиков «Тропы» ведущих для заездов-перезагрузок
flowchart LR
a["Набор 110. Список подписчиков «Тропы»<br/>follower_username, followed_at"] -->|"уже подписан — знает «Тропу»; давно ли"| t(["Задача 10. Найти среди подписчиков «Тропы»<br/>ведущих для заездов-перезагрузок"])
b["Набор 120. Профиль каждого подписчика<br/>biography, category"] -->|"профессия: психолог, нутрициолог, массажист"| t
c["Набор 120. Профиль каждого подписчика<br/>external_url, is_business_account"] -->|"ведёт практику, а не просто пишет в био"| t
d["Набор 130. На кого подписан<br/>каждый подписчик «Тропы»"] -->|"сколько подписчиков «Тропы» подписаны на кандидата"| t
🗺️ Задача 20. Найти подписчиков, которые чаще всех лайкают и комментируют посты «Тропы»
flowchart LR
a["Набор 170. Список постов «Тропы»<br/>post_id, posted_at, media_type"] -->|"к чему привязаны лайки и комментарии"| t(["Задача 20. Найти подписчиков, которые чаще всех<br/>лайкают и комментируют посты «Тропы»"])
b["Набор 180. Кто лайкнул<br/>каждый пост «Тропы»"] -->|"сколько раз человек лайкал"| t
c["Набор 190. Комментарии к постам<br/>commenter_user_id, commented_at"] -->|"сколько раз комментировал"| t
d["Набор 190. Комментарии к постам<br/>comment_text"] -->|"тон: хвалит, спрашивает, жалуется"| t
e["Набор 170. Список постов «Тропы»<br/>likes_count, comments_count"] -->|"фон: сравнить со средним"| t
🗺️ Задача 30. Найти подписчиков «Тропы», у которых в подписчиках есть известные люди
flowchart LR
a["Набор 120. Профиль каждого подписчика<br/>followers_count"] -->|"сколько у него подписчиков — количество"| t(["Задача 30. Найти подписчиков «Тропы»,<br/>у которых в подписчиках есть известные люди"])
b["Набор 140. Кто подписан<br/>на каждого подписчика «Тропы»"] -->|"КТО именно подписан — качество"| t
c["Набор 160. Профили тех, кто подписан<br/>на подписчиков «Тропы»<br/>followers_count, is_verified"] -->|"известны ли они"| t
d["Набор 120. Профиль каждого подписчика<br/>is_verified"] -->|"признак известности"| t
🗺️ Задача 40. Выделить среди подписчиков 300–500 лидеров мнений и узнать их интересы по их подпискам
flowchart LR
a["Набор 120. Профиль каждого подписчика<br/>followers_count, is_verified"] -->|"отобрать 300–500 влиятельных"| l["лидеры мнений"]
b(["Итог задачи 30. Найти подписчиков «Тропы»,<br/>у которых в подписчиках есть известные люди"]) -->|"влиятельные — не только по числу подписчиков"| l
l --> t(["Задача 40. Выделить 300–500 лидеров мнений<br/>и узнать их интересы по их подпискам"])
c["Набор 130. На кого подписан<br/>каждый подписчик «Тропы»"] -->|"список их интересов"| t
d["Набор 150. Профили аккаунтов,<br/>на которые подписаны подписчики"] -->|"что это за аккаунт: магазин, бренд, место"| t
🗺️ Задача 50. Найти среди подписчиков трендсеттеров по подпискам на трендовые аккаунты
flowchart LR
m["Список трендовых аккаунтов-маркеров<br/>(от Ирины)"] --> t(["Задача 50. Найти среди подписчиков трендсеттеров<br/>по подпискам на трендовые аккаунты"])
a["Набор 130. На кого подписан<br/>каждый подписчик «Тропы»"] -->|"подписан на маркеры — вероятно, трендсеттер"| t
t --> s["что ещё у трендсеттеров в подписках"]
b["Набор 150. Профили аккаунтов,<br/>на которые подписаны подписчики"] -->|"новые бренды и магазины"| s
🗺️ Задача 60. Найти подписчиков, которые давно не ведут Instagram, и исключить их из анализа
flowchart LR
a["Набор 120. Профиль каждого подписчика<br/>last_post_at"] -->|"давно не постит"| t(["Задача 60. Найти подписчиков, которые давно<br/>не ведут Instagram, и исключить их из анализа"])
b["Набор 120. Профиль каждого подписчика<br/>media_count"] -->|"постов нет вообще"| t
c["Набор 120. Профиль каждого подписчика<br/>last_highlight_story_at"] -->|"свежие сторис в хайлайтах"| t
e["Набор 130. На кого подписан каждый подписчик<br/>target_followed_at"] -->|"свежие подписки на кого-то"| t
t -->|"не искажают выводы"| all["все остальные задачи"]
🗺️ Служебные поля — нужны всем задачам
flowchart LR
a["Набор 110. Список подписчиков «Тропы»<br/>follower_user_id"] -->|"ключ: связывает все наборы"| t(["все задачи"])
b["Набор 120. Профиль каждого подписчика<br/>is_private"] -->|"что по профилю видно"| t
c["Набор 120. Профиль каждого подписчика<br/>following_count"] -->|"полностью ли собран набор 130<br/>«На кого подписан каждый подписчик»"| t
d["collected_at во всех наборах"] -->|"на какой день данные верны"| t
📋 Требования к результату
- Одна таблица на набор, ключ — номер аккаунта
user_id. Формат — CSV или JSON. - Проверяемость: за каждым выводом — реальные строки данных. Требование Ирины.[3]
- API Ивана (
social-api4) не использовать — запрет Ирины.[3:1]