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

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

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

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

Чтобы отобрать публичные TikTok-видео с упоминаниями бренда и явными рекламными формулировками, соберите результаты по нескольким поисковым запросам, извлеките подписи и отметьте слова-маркеры. Итог — CSV со ссылками и доступными показателями, то есть очередь для проверки человеком, а не автоматическое заключение о соблюдении правил.

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

Что именно искать в видео?

Для рекламной проверки важны связь автора с брендом и то, как она раскрыта рядом с рекомендацией. Руководство FTC для инфлюенсеров объясняет, что существенная связь может быть финансовой, рабочей, личной или семейной, а раскрытие должно быть заметным и понятным. Для видеорекомендации FTC указывает, что раскрытие следует поместить в само видео, а не только в описание. Поэтому подпись полезна для сортировки, но сама по себе не показывает, что зритель увидел в кадре или услышал в аудио.

Задача этого сценария уже: найти в возвращённых поисковых результатах видео, подписи которых содержат брендовые фразы и возможные маркеры вроде «реклама», «спонсор» или «партнёрство». Словарь нужно настроить под язык и терминологию кампании. Если маркер не встретился в подписи, откройте ролик и проверьте его содержимое: текстовое совпадение не устанавливает, есть ли раскрытие в самом видео.

Как превратить поисковую выдачу в очередь проверки?

Составьте небольшой список запросов: название бренда, кампании и распространённое написание продукта. Запускайте запросы отдельно и сохраняйте их формулировки рядом с результатами. Так команда сможет увидеть, по какому запросу найден ролик, и повторить сбор при необходимости.

Article: Как проверить рекламные раскрытия в TikTok по публичным видео
Summary: Маркетинговой команде часто нужно отобрать публичные TikTok-видео с упоминаниями бренда и возможными рекламными раскрытиями. Показываем, как собрать возвращённые API результаты, извлечь подписи и доступные метрики и пометить явные слова вроде «реклама» и «партнёрство» для последующей проверки.
Image role: supporting illustration 2 — a different specific aspect
Section: Как превратить поисковую выдачу в очередь провер
Схема показывает путь от поисковой выдачи до CSV-очереди и ручной проверки раскрытия непосредственно в видео.© jsonscraper · создано с ИИ
Article: Как проверить рекламные раскрытия в TikTok по публичным видео
Summary: Маркетинговой команде часто нужно отобрать публичные TikTok-видео с упоминаниями бренда и возможными рекламными раскрытиями. Показываем, как собрать возвращённые API результаты, извлечь подписи и доступные метрики и пометить явные слова вроде «реклама» и «партнёрство» для последующей проверки.
Image role: cover — the central idea
Section: Как превратить поисковую выдачу в очередь проверки?
Visual subject: Russian inf
Схема показывает путь от поисковой выдачи до CSV-очереди и ручной проверки раскрытия непосредственно в видео.© jsonscraper · создано с ИИ

Для сбора подойдёт TikTok Scraper API jsonscraper. Документированный маршрут GET /searchVideo расположен по адресу https://tiktok.evelode.com и принимает параметры keyword, count, date_posted, sort_by, region и cursor. В наблюдавшемся ответе TikTok-данные содержали ролики в search_item_list[].aweme_info; aweme_list мог быть пустым. Парсер ниже проверяет оба расположения.

Ключ передаётся в параметре license_key. Храните его в переменной окружения, а не в скрипте или репозитории. Документация маршрутов TikTok содержит имена параметров поиска; для следующей страницы используйте возвращённый cursor. Сохраняйте число обработанных объектов и сам поисковый запрос: пагинация позволяет продолжать выдачу, но сама по себе не устанавливает полноту набора.

Минимальный пример на Python

Скрипт делает по одному запросу для каждой фразы, собирает обе документированные формы результата, удаляет повторы по ID видео, отмечает слова в описании и записывает CSV. Установите requests командой python -m pip install requests, задайте JSONSCRAPER_TIKTOK_LICENSE_KEY в окружении и запустите файл. Пример совместим с Python 3.8 и новее.

import csv
import os
import sys
import requests

BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not KEY:
    raise SystemExit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY first")

QUERIES = ["Example Brand", "Example Product", "Example Campaign"]
MARKERS = ("#реклама", "реклама", "спонсор", "партнерство", "партнёрство", "#ad", "sponsored")


def videos_from(payload):
    data = payload.get("tiktok") or {}
    videos = data.get("aweme_list") or []
    if not videos:
        videos = [
            item.get("aweme_info")
            for item in (data.get("search_item_list") or [])
            if isinstance(item, dict) and isinstance(item.get("aweme_info"), dict)
        ]
    return [video for video in videos if isinstance(video, dict)]


rows = {}
for query in QUERIES:
    response = requests.get(
        BASE_URL,
        params={"keyword": query, "count": 20, "date_posted": "this-month", "license_key": KEY},
        timeout=30,
    )
    response.raise_for_status()
    payload = response.json()
    if payload.get("status") != "ok":
        print("Unexpected API status for query:", query, file=sys.stderr)
        continue

    for video in videos_from(payload):
        video_id = video.get("aweme_id")
        if not video_id:
            continue
        author = video.get("author") or {}
        stats = video.get("statistics") or {}
        caption = video.get("desc") or ""
        matched = [word for word in MARKERS if word in caption.casefold()]
        row = rows.setdefault(str(video_id), {
            "video_id": str(video_id),
            "url": video.get("share_url") or "",
            "author": author.get("unique_id") or author.get("nickname") or "",
            "caption": caption,
            "queries": set(),
            "disclosure_markers": set(),
            "play_count": stats.get("play_count"),
            "digg_count": stats.get("digg_count"),
            "comment_count": stats.get("comment_count"),
            "review_status": "manual_review",
        })
        row["queries"].add(query)
        row["disclosure_markers"].update(matched)

with open("tiktok_disclosure_review.csv", "w", newline="", encoding="utf-8-sig") as file:
    fields = ["video_id", "url", "author", "caption", "queries", "disclosure_markers",
              "play_count", "digg_count", "comment_count", "review_status"]
    writer = csv.DictWriter(file, fieldnames=fields)
    writer.writeheader()
    for row in rows.values():
        row["queries"] = " | ".join(sorted(row["queries"]))
        row["disclosure_markers"] = " | ".join(sorted(row["disclosure_markers"]))
        writer.writerow(row)

print("Saved", len(rows), "unique returned videos")

Перед сохранением кода проверьте статус внешнего ответа, затем данные в tiktok. Нормализатор читает оба расположения роликов. Для следующей страницы можно передать полученный cursor в следующий запрос без преобразования; этот минимальный пример намеренно ограничен одной страницей на запрос.

Что покажет CSV?

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

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

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

Результат — воспроизводимая очередь публичных видео для ручной проверки рекламных раскрытий: поисковые совпадения и доступные метрики помогают определить, что открыть первым, а оценка самого ролика остаётся за проверяющим. Имена параметров можно сверить в документации TikTok API, а сведения о продукте — на странице TikTok Scraper API.

Персоны

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

Читайте дальшеTikTok: превратите поисковую выдачу в еженедельный список тем для поддержки
Читать следующую статью

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

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

Смотреть API