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

Как находить TikTok-видео с рекламными раскрытиями и передавать их на проверку

Python-пайплайн собирает результаты поиска, извлекает доступные подписи и метрики, а затем формирует очередь для ручного аудита

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

Если команде нужно проверить, как авторы раскрывают связь с брендом в публичных TikTok-видео, полезный первый результат — не автоматический вердикт, а компактная очередь роликов с подписью, ссылкой и найденными словами-маркерами. Ниже — рабочая схема: отправить поисковый запрос через TikTok Scraper API jsonscraper, привести два варианта структуры ответа к одному формату и сохранить CSV для проверки специалистом.

Задача: найти ролики, которые стоит проверить

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

Article: Как находить TikTok-видео с рекламными раскрытиями и передавать их на проверку
Summary: Показываем, как искать публичные TikTok-видео по названию бренда, аккуратно обработать оба варианта ответа API и выгрузить найденные ролики с явными маркерами рекламного раскрытия в CSV для проверки специалистом.
Image role: cover — the central idea
Section: Задача: найти ролики, которые стоит проверить
Visual subject: Editorial still life of a printed CSV audit queue beside a phone showing an abstra
Список кандидатов связывает найденный текстовый маркер с конкретной публикацией, которую затем проверяет специалист.© jsonscraper · создано с ИИ

В этом сценарии «кандидат на проверку» означает только ролик из возвращённой поисковой выдачи, в описании которого обнаружено заранее заданное слово или фраза. Например, это может быть «реклама», «партнёрство» или «спонсор». Такой текстовый фильтр помогает направить внимание человека, но не оценивает сам ролик и не устанавливает, выполнены ли применимые требования.

Это различие важно для маркетинговой команды. Рекомендации Федеральной торговой комиссии США описывают раскрытие материальной связи с брендом как обязанность, зависящую от контекста сообщения; для видео FTC рекомендует учитывать видимую и слышимую форму раскрытия. Поиск по подписи способен выявить отдельные текстовые сигналы, а решение требует просмотра публикации и оценки её контекста. Руководство FTC для авторов объясняет эти условия на примерах.

Результат: CSV с основанием отбора

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

Словарь маркеров задаёт редактор или специалист по комплаенсу. Начните с языка и терминов, которые реально используются в вашей кампании, затем пересмотрите выборку и расширьте список при необходимости. В коде ниже значения намеренно простые: их нужно заменить под конкретный бренд, рынок и язык контента.

Подключение к TikTok Scraper API

Документация jsonscraper указывает для поиска видео маршрут GET /searchVideo на базовом адресе https://tiktok.evelode.com. Обязательный параметр — keyword; среди дополнительных параметров есть count, date_posted, sort_by и region. Ключ передаётся как license_key, поэтому храните его в переменной окружения, а не в коде или CSV. Точные имена параметров и маршрут приведены в справочнике endpoint-ов TikTok; сведения о продукте и доступе есть на странице TikTok Scraper API.

Есть важная особенность ответа, влияющая на полноту локального парсера: данные могут находиться в tiktok.aweme_list либо в tiktok.search_item_list[].aweme_info. Поэтому скрипт проверяет оба массива. Если поиск вернул пустой список, он сформирует пустой CSV, а не подменит отсутствие результатов фиктивными строками.

Пример на Python: поиск, фильтр и CSV

Пример использует только стандартную библиотеку Python 3.8+. Перед запуском задайте JSONSCRAPER_TIKTOK_LICENSE_KEY в окружении. В запросе используется keyword, а ключ передаётся в query-параметре license_key, как указано в спецификации.

Article: Как находить TikTok-видео с рекламными раскрытиями и передавать их на проверку
Summary: Показываем, как искать публичные TikTok-видео по названию бренда, аккуратно обработать оба варианта ответа API и выгрузить найденные ролики с явными маркерами рекламного раскрытия в CSV для проверки специалистом.
Image role: supporting illustration 2 — a different specific aspect
Section: Пример на Python: поиск, фильтр и CSV
Visual subject: Simple infographic in Russian showing TikTok API response n
Схема показывает оба поддержанных пути к данным поиска и этапы подготовки очереди проверки.© jsonscraper · создано с ИИ
import csv
import json
import os
import sys
from datetime import datetime, timezone
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
KEYWORD = "Acme"
MARKERS = ["реклама", "партнерство", "партнёрство", "спонсор", "ad", "sponsored"]

params = {
    "license_key": API_KEY,
    "keyword": KEYWORD,
    "count": 30,
    "sort_by": "date-posted",
    "date_posted": "this-month",
    "region": "US",
}
url = "https://tiktok.evelode.com/searchVideo?" + urlencode(params)
request = Request(url, headers={"Accept": "application/json"})

with urlopen(request, timeout=30) as response:
    payload = json.load(response)

if payload.get("status") != "ok":
    raise RuntimeError("API returned a non-ok outer status")

tiktok = payload.get("tiktok") or {}
items = list(tiktok.get("aweme_list") or [])
for entry in tiktok.get("search_item_list") or []:
    info = entry.get("aweme_info") or {}
    if info:
        items.append(info)

seen = set()
rows = []
collected_at = datetime.now(timezone.utc).isoformat()

for item in items:
    video_id = item.get("aweme_id")
    if not video_id or video_id in seen:
        continue
    seen.add(video_id)

    description = item.get("desc") or ""
    lowered = description.casefold()
    matched = [word for word in MARKERS if word.casefold() in lowered]
    if not matched:
        continue

    author = item.get("author") or {}
    stats = item.get("statistics") or {}
    rows.append({
        "collected_at_utc": collected_at,
        "search_keyword": KEYWORD,
        "video_id": video_id,
        "share_url": item.get("share_url") or "",
        "description": description,
        "matched_markers": "; ".join(matched),
        "author_name": author.get("nickname") or "",
        "author_id": author.get("unique_id") or "",
        "play_count": stats.get("play_count", ""),
        "digg_count": stats.get("digg_count", ""),
        "comment_count": stats.get("comment_count", ""),
        "share_count": stats.get("share_count", ""),
    })

fields = [
    "collected_at_utc", "search_keyword", "video_id", "share_url",
    "description", "matched_markers", "author_name", "author_id",
    "play_count", "digg_count", "comment_count", "share_count",
]
with open("tiktok_review_queue.csv", "w", newline="", encoding="utf-8-sig") as output:
    writer = csv.DictWriter(output, fieldnames=fields)
    writer.writeheader()
    writer.writerows(rows)

print(f"Saved {len(rows)} review candidates to tiktok_review_queue.csv")

Скрипт сначала проверяет внешний статус, затем читает объект tiktok и объединяет доступные варианты массива. Дедупликация по aweme_id предотвращает повторные строки, если один ролик появился в обоих путях ответа. Метрики записываются как пришли; отсутствующее значение остаётся пустым, а не превращается в ноль.

Пример использует параметры, документированные для /searchVideo: date_posted допускает значение this-month, sort_by — date-posted, а region принимает код страны. Значение count задаёт размер запрашиваемой выдачи, а не обещание полного перечня публикаций. При дальнейшей пагинации сохраняйте возвращённый курсор как непрозрачное значение и передавайте его в параметр cursor.

Проверка человеком и автоматизация запуска

Передайте CSV ответственному проверяющему вместе с краткой инструкцией: открыть ссылку, посмотреть видео и контекст подписи, зафиксировать вывод и добавить комментарий, если маркер найден в ином смысле. Например, автоматическая фильтрация не различает рекламное раскрытие и обсуждение того, как устроена реклама. Человеческая проверка закрывает этот смысловой разрыв.

Для повторяемого сбора запускайте скрипт по расписанию через cron, планировщик CI или оркестратор задач. Сохраняйте CSV с датой запуска либо загружайте строки в таблицу с уникальным ключом из идентификатора видео и даты наблюдения. Если нужен журнал аудита, храните и исходный JSON-ответ с контролем доступа: он позволяет повторно проверить преобразование и объяснить, откуда взялась каждая строка.

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

Что именно даст такой список

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

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

Чтобы начать, проверьте актуальный доступ и параметры на странице продукта TikTok Scraper API, а форму ответа и варианты интеграции сверяйте с официальной документацией API.

Персоны

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

Читайте дальшеКак найти TikTok-видео с вопросами о вашем продукте и собрать их в отчёт
Читать следующую статью

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

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

Смотреть API