jsonscraper
Рынки
К журналу

Сопоставляйте IG-профиль с брифом кампании по проверяемым полям

Как превратить список аккаунтов в воспроизводимую проверку через IG Scraper API и Python

Редакционная политика Сообщить об ошибке

Перед запуском кампании можно автоматически сверить каждый IG-аккаунт из брифа с публичными данными профиля. Такой контроль выявляет несовпадение username, приватный статус, изменение имени или биографии и расхождение числа публикаций с ожидаемым диапазоном. Результат — таблица проверок для маркетолога, а не автоматическое решение о пригодности автора.

Article: Сопоставляйте IG-профиль с брифом кампании по проверяемым полям
Summary: Проверьте публичные IG-профили перед запуском кампании: получите сведения по username, сверьте их с брифом и сформируйте отчёт по расхождениям, не подменяя отсутствующие данные нулями.
Image role: cover — the central idea
Section: 
Visual subject: Editorial photo: printed influencer campaign brief and a compact CSV validation report on a desk, profile data represented with simple neutral cards for use
Проверка сопоставляет требования брифа с конкретными публичными полями профиля.© jsonscraper · создано с ИИ

Проблема: бриф устаревает быстрее таблицы

В списке кампании могут храниться имя аккаунта, ссылка, ориентир по подписчикам и требования к публичному профилю. Эти сведения легко расходятся: аккаунт меняет username, профиль становится приватным, а цифры в брифе остаются прежними. Ручная проверка по одному профилю проста; повторять её для списка аккаунтов перед каждой кампанией уже труднее контролировать и воспроизводить.

Полезный выход — задать для каждой строки явные правила, получить доступные публичные поля на момент проверки и записать рядом исходные и фактические значения. «Совпадает» тогда означает только то, что конкретное поле соответствует конкретному правилу; решение о соответствии аудитории или качестве контента остаётся за специалистом.

Какие данные запрашивать

В справочнике маршрутов IG API описан маршрут GET /v1/user/by/username с обязательным параметром username. В проверенном ответе данные профиля находятся в объекте ig: там указаны username, полное имя, биография, признаки приватности и верификации, число публикаций, подписчиков и подписок. Эти поля описывают доступный снимок профиля.

Для предварительной проверки этого достаточно, чтобы сопоставить имя аккаунта, приватность и числовые пороги. Биографию можно вывести оператору для просмотра или проверять по простому правилу, например наличию обязательного термина. Такой текстовый фильтр находит совпадение строки, но сам по себе не оценивает смысл и не подтверждает выполнение договорных условий.

Как встроить запрос в Python

Сначала сохраните лицензионный ключ в переменной окружения JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Пример использует подтверждённые базовый адрес, маршрут, параметр username и имя ключа license_key. CSV содержит поля username,min_followers,max_followers,require_public; для каждого аккаунта скрипт сверяет ответ с правилами и отмечает строки, требующие проверки.

import csv
import os
import sys
import requests

BASE_URL = "https://ig.jsonscraper.com"
API_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not API_KEY:
    raise SystemExit("Set JSONSCRAPER_INSTAGRAM_LICENSE_KEY")

# brief.csv: username,min_followers,max_followers,require_public
with open("brief.csv", newline="", encoding="utf-8") as source:
    brief = list(csv.DictReader(source))

results = []
for row in brief:
    username = row.get("username", "").strip()
    minimum_text = row.get("min_followers", "").strip()
    if not username or not minimum_text:
        results.append({
            "requested_username": username,
            "needs_review": True,
            "error": "Missing username or min_followers",
        })
        continue

    try:
        response = requests.get(
            f"{BASE_URL}/v1/user/by/username",
            params={"username": username, "license_key": API_KEY},
            timeout=30,
        )
        response.raise_for_status()
        payload = response.json()
        if payload.get("status") != "ok" or not isinstance(payload.get("ig"), dict):
            raise ValueError("Unexpected API response")
        profile = payload["ig"]

        followers = profile.get("follower_count")
        minimum = int(minimum_text)
        maximum_text = row.get("max_followers", "").strip()
        maximum = int(maximum_text) if maximum_text else None
        public_required = row.get("require_public", "").strip().lower() == "true"

        checks = {
            "username_matches": (
                isinstance(profile.get("username"), str)
                and profile["username"].lower() == username.lstrip("@").lower()
            ),
            "followers_in_range": (
                isinstance(followers, int)
                and followers >= minimum
                and (maximum is None or followers 

Запуск: python check_profiles.py. Установите библиотеку requests, задайте переменную окружения в среде запуска и положите рядом brief.csv. Не записывайте ключ в исходный код или итоговый CSV. Скрипт обрабатывает список последовательно, что удобно для проверки и отладки небольших наборов аккаунтов.

Почему пропуски должны оставаться видимыми

В правилах проверки важно различать нулевое значение и поле, которого нет. В примере число подписчиков считается подходящим только при наличии числового поля; если счётчик отсутствует, условие не подтверждено и запись отправляется на ручную проверку. Пустой порог min_followers тоже помечается как ошибка входных данных, а не автоматически превращается в ноль.

Проверку ответа стоит сохранить как часть рабочего процесса. Скрипт сначала убеждается, что внешний статус равен ok, а затем проверяет наличие объекта ig. Ошибка HTTP, неожиданный JSON или некорректное правило попадают в отчёт без текста исключения, которое могло бы раскрыть ключ в URL. Так оператор отличает сбой запроса от несовпадения профиля, не распространяя секрет.

Как читать результат и автоматизировать проверку

Файл profile_check.csv содержит исходный username, возвращённое имя, доступные публичные поля, результаты отдельных условий и общий флаг needs_review. Команда может отфильтровать строки по этому флагу, а разработчик — сохранить отчёт в хранилище или передать в следующий шаг ETL-процесса. Для расписания запускайте скрипт планировщиком и сохраняйте дату запуска отдельно, чтобы сравнивать снимки кампаний.

Article: Сопоставляйте IG-профиль с брифом кампании по проверяемым полям
Summary: Проверьте публичные IG-профили перед запуском кампании: получите сведения по username, сверьте их с брифом и сформируйте отчёт по расхождениям, не подменяя отсутствующие данные нулями.
Image role: supporting illustration 2 — a different specific aspect
Section: Как читать результат и автоматизировать проверку
Visual subject: Infographic diagram in Russian showing workflow: CSV brief rows → GET /v1/use
Схема показывает путь от строки брифа до отчёта, включая ручную проверку отсутствующих данных.© jsonscraper · создано с ИИ

Если правило меняется, храните его в брифе, а не зашивайте в код. Это делает пороги проверяемыми: для каждой строки видно, какой диапазон подписчиков или какой признак публичности ожидался. Для биографии можно добавить проверку наличия заданного текста, но буквальное совпадение не заменяет содержательную оценку специалиста.

На странице IG Scraper API приведены базовый адрес, пример запроса и ссылка на Postman. Сценарий выше использует только подтверждённый lookup профиля по username и не предполагает, что этот запрос возвращает публикации.

Практический результат — воспроизводимый предварительный контроль: вместо ручного просмотра всего списка команда получает перечень совпадений и исключений, связанных с конкретными полями брифа. Это ускоряет проверку перед запуском, сохраняя решение о соответствии кампании за ответственным специалистом.

Персоны

Для этой статьи персоны пока не указаны.

Читайте дальшеСверяйте профиль IG с брифом кампании до запуска: проверка через API
Читать следующую статью

Превратите прочитанное в рабочую интеграцию

Изучайте API социальных данных jsonscraper, тестируйте запросы и создавайте новые процессы.

Смотреть API