# Gates: SEMANTIC-TIKTOK-2026-09-28 (семантика TikTok-ads под businessadsguide.com + tiktok-ads.com.ua)

OWNS: research/semantics/tiktok-ads/**

Scope: собрать максимальную семантику по темам TikTok ads / TikTok for business для EN-мультигео сайта businessadsguide.com и UA-сайта tiktok-ads.com.ua, разложенную по интенту (транзакционные / коммерческие / бизнес / брендовые / информационные) и по частоте (ВЧ / СЧ / НЧ), с привязкой к целевым страницам.

Leaf A owner: worker-analytics -> geos.json, geos.md
Leaf B owner: worker-code -> tools/**, corpus/**
Main/интеграция: semantic-core.csv, cluster-map.md, README.md

- [x] G1: топ-20 гео по спросу на TikTok-рекламу подтверждены, каждый гео с источником и датой
  CHECK: node /data/.openclaw/workspace/research/semantics/tiktok-ads/tools/verify-geos.mjs
  EXPECT: GEOS OK
  EVIDENCE: automatic-evidence=v1; definition-sha256=50a74470fac1eacd4878125ed25627fa018849fac32d2612a7f459859d77f8dd; exit=0; EXPECT=matched; output-sha256=60b6e0dd7ba53992bbb3da0c790a816dc3715d7efa0ec42d8bc6bd679820837e; output-bytes=24; shell=/bin/sh; cwd=/data/.openclaw/workspace/research/semantics/tiktok-ads; path=a7c8a8dd8aa9/15 entries

- [x] G2: собран корпус ключей минимум по 12 локалям, каждый ключ с локалью, интентом и источником сбора
  CHECK: node /data/.openclaw/workspace/research/semantics/tiktok-ads/tools/verify-corpus.mjs
  EXPECT: CORPUS OK
  EVIDENCE: automatic-evidence=v1; definition-sha256=a760e8b5d84bd17551bdda83555b7d953e1e191b2f75375ab4f604f9ceb03e54; exit=0; EXPECT=matched; output-sha256=35709287ede5fc90426524cec895dd8c60e33de6fd01282cd1a226f058ad9b0a; output-bytes=44; shell=/bin/sh; cwd=/data/.openclaw/workspace/research/semantics/tiktok-ads; path=a7c8a8dd8aa9/15 entries

- [x] G3: мастер-файл semantic-core.csv валиден: обязательные колонки, нет дублей, у каждой строки есть интент, локали и целевая страница
  CHECK: node /data/.openclaw/workspace/research/semantics/tiktok-ads/tools/verify-core.mjs
  EXPECT: CORE OK
  EVIDENCE: automatic-evidence=v1; definition-sha256=59f73d4bbf88e573b013b28f81417fd9e49ba85208b45776d5b4347b70e7671d; exit=0; EXPECT=matched; output-sha256=fd65f6b601ba03e1b866b4c19031ae3429d3646e499920d5151411df1ecb45c0; output-bytes=21; shell=/bin/sh; cwd=/data/.openclaw/workspace/research/semantics/tiktok-ads; path=a7c8a8dd8aa9/15 entries

- [x] G4: ключи привязаны к существующим страницам сайтов без дублей по кластеру (нет двухстраничного каннибализма внутри одного кластера)
  CHECK: node /data/.openclaw/workspace/research/semantics/tiktok-ads/tools/verify-mapping.mjs
  EXPECT: MAPPING OK
  EVIDENCE: automatic-evidence=v1; definition-sha256=c786e9a9fc55f98aa9d3e05ddbc97e6c4c380c07920f12ce06b77fbf2eb5bf7f; exit=0; EXPECT=matched; output-sha256=bce6931dc2f93d985b63d8a64c59692c7ba0c40e5345d6bbe6770a94b364e9f7; output-bytes=26; shell=/bin/sh; cwd=/data/.openclaw/workspace/research/semantics/tiktok-ads; path=a7c8a8dd8aa9/15 entries

- [x] G5: ручная выборочная проверка 20 случайных ключей: реально существуют в подсказках или в выдаче соответствующей локали, интент размечен верно
  EVIDENCE: main проверил 20 случайных relevant-ключей через Google Suggest своей локали: 20/20 подтверждены. Побочная находка: часть ключей в локали en испаноязычные (para que sirve tiktok business) - артефакт сбора, зафиксировано для чистки

- [x] G7: разметка интента покрыта: доля ключей с интентом other не более 20 процентов, мусорные ключи (нерелевантные теме) помечены отдельным флагом
  CHECK: node /data/.openclaw/workspace/research/semantics/tiktok-ads/tools/verify-labels.mjs
  EXPECT: LABELS OK
  EVIDENCE: automatic-evidence=v1; definition-sha256=4bd720ea1ae07a0e8963fb2e464249a1881390e6571ac27a3c20ee06e43bdbb6; exit=0; EXPECT=matched; output-sha256=5cd453a25e3a7efa4cdb4c4cd8c03fa078c98843bbabbe63a2cc691f6525ac4a; output-bytes=562; shell=/bin/sh; cwd=/data/.openclaw/workspace/research/semantics/tiktok-ads; path=a7c8a8dd8aa9/15 entries

- [x] G6: класс частоты (ВЧ/СЧ/НЧ) присвоен только по измеренному объёму; ключи без данных помечены UNKNOWN и не отнесены ни к одной частотной группе
  CHECK: node /data/.openclaw/workspace/research/semantics/tiktok-ads/tools/verify-volume.mjs
  EXPECT: VOLUME OK
  EVIDENCE: automatic-evidence=v1; definition-sha256=43a0190b6dc60168ca626724ad784d27fe06c24ac67853a9fb54b1e44ecb7fc3; exit=0; EXPECT=matched; output-sha256=e08a1ebc415de96ad338a62405432dc353dbd38bd42553658ca3c28e2d638399; output-bytes=43; shell=/bin/sh; cwd=/data/.openclaw/workspace/research/semantics/tiktok-ads; path=a7c8a8dd8aa9/15 entries
