jsonscraper
Trhy
Zpět do magazínu

Jak ověřit leady z TikToku na IGu před předáním do CRM

Shromážděte veřejné signály nalezené na TikToku a ověřte související instagramové profily před ruční kvalifikací kontaktu

Redakční zásady Nahlásit chybu

Marketér může na TikToku najít video, jehož autor mluví o produktu, který ho zajímá, ale od takového signálu k ověřitelnému kontaktu vede složitější cesta: jméno autora na TikToku se může lišit od jména na IGu a profil může být soukromý nebo nemusí existovat potvrzená vazba na danou osobu. Praktickým výsledkem proto není automatický seznam „hotových leadů“, ale tabulka kontrol: původní video, autor na TikToku, předpokládané uživatelské jméno na IGu, odpověď API a stav pro další posouzení.

Níže najdete základní postup v Pythonu. Vyhledá veřejná videa podle klíčové fráze, vytáhne dostupná pole o autorovi a ověří instagramové profily pouze v případě, že už máte odůvodněné uživatelské jméno k ověření. API může načíst údaje profilu podle uživatelského jména; samo ale neurčí, zda dva účty patří stejné osobě.

Jaký výsledek se vyplatí automatizovat

Představte si tým, který prodává vybavení na domácí přípravu kávy a chce najít autory veřejných videí o přípravě nápojů. Ruční vyhledávání se hodí k prvnímu seznámení s obsahem, ale při opakování je obtížné uchovat informaci o tom, které video vedlo ke kontaktu, odkud pochází jméno profilu a co přesně bylo ověřeno.

Článek: Jak ověřit leady z TikToku na IGu před předáním do CRM
Shrnutí: Postup v Pythonu propojí veřejná videa z TikToku s autory uvedenými v jejich profilech a následně ověří odpovídající instagramové účty pomocí jsonscraper. Výsledkem je tabulka k ruční kontrole, která nemíchá data z různých platforem a chybějící pole ponechává prázdná.
Role obrázku: úvodní obrázek — hlavní myšlenka
Sekce: Jaký výsledek se vyplatí automatizovat
Vizuální motiv: Redakční fotografie pracovního stolu marketéra při průzkumu
Ověřitelný postup propojuje nalezené video se samostatným krokem ruční kontroly instagramového profilu.© jsonscraper · vytvořeno pomocí AI

Postup odděluje tři činnosti: vyhledávání videí na TikToku, ukládání pozorovaných údajů a ověřování předpokládaného instagramového profilu. Analytik tak může otevřít jeden soubor CSV a u každého kandidáta vidět původ údajů. Pole pro IG vyplňujte až poté, co uživatelské jméno najdete ve veřejném popisu, v odkazu autora nebo ho člověk ověří z dalších dostupných materiálů.

Tento přístup se hodí pro agenturu, výzkumný tým nebo interního marketéra, který potřebuje menší opakovatelný seznam k ruční kvalifikaci. Zachovává kontext nálezu a nepovažuje podobnost jmen za potvrzení totožnosti.

Jaká pole lze získat

Dokumentovaná trasa TikToku /searchVideo vyžaduje parametr keyword; k dispozici jsou také parametry count, date_posted, sort_by, region a cursor. V pozorovaných odpovědích se objevují identifikátor videa, popis, datum zveřejnění, odkaz, údaje o autorovi a veřejné statistiky interakcí. Skutečná sada polí se může lišit, proto níže uvedený kód bezpečně načítá hodnoty a chybějící ponechává prázdné.

Pro IG se v tomto postupu používá dokumentovaná trasa GET /v1/user/by/username s parametrem username. Odpověď může obsahovat uživatelské jméno, zobrazované jméno, stav soukromí a ověření, počet příspěvků, sledujících a sledovaných účtů i životopis. Jde o informace k posouzení specialistou, nikoli o hodnocení autora.

Oficiální dokumentace TikTok API popisuje parametry vyhledávání a dokumentace IG API metody a parametry IGu. Vestavěné definice API jsonscraper rovněž uvádějí trasy, názvy parametrů a pozorované podoby odpovědí; datum uvedených kontrol je 25. října 2026.

Nastavte klíče a seznam kandidátů

Klíče API uložte do proměnných prostředí: JSONSCRAPER_TIKTOK_LICENSE_KEY a JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Nevkládejte je do zdrojového kódu, souborů CSV ani protokolů úloh. K instalaci knihovny pro požadavky použijte python -m pip install requests. Následující příklad je určen pro Python 3.8 a novější.

import csv
import os
import sys
from urllib.parse import urlencode

import requests

TIKTOK_KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
INSTAGRAM_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")

if not TIKTOK_KEY or not INSTAGRAM_KEY:
    sys.exit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY and JSONSCRAPER_INSTAGRAM_LICENSE_KEY")


def get_json(base_url, path, params):
    response = requests.get(
        f"{base_url}{path}",
        params=params,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()


def extract_videos(payload):
    """Handle both observed TikTok search result locations."""
    if payload.get("status") != "ok":
        raise RuntimeError(f"TikTok API status: {payload.get('status')}")

    tiktok = payload.get("tiktok") or {}
    videos = list(tiktok.get("aweme_list") or [])
    for item in tiktok.get("search_item_list") or []:
        video = item.get("aweme_info")
        if video:
            videos.append(video)

    unique = {}
    for video in videos:
        video_id = video.get("aweme_id")
        if video_id:
            unique[video_id] = video
    return list(unique.values())


keyword = "домашний кофе"
tiktok_payload = get_json(
    "https://tiktok.evelode.com",
    "/searchVideo",
    {
        "license_key": TIKTOK_KEY,
        "keyword": keyword,
        "count": 20,
        "date_posted": "this-month",
        "sort_by": "relevance",
    },
)

rows = []
for video in extract_videos(tiktok_payload):
    author = video.get("author") or {}
    stats = video.get("statistics") or {}
    rows.append({
        "tiktok_video_id": video.get("aweme_id", ""),
        "tiktok_url": video.get("share_url", ""),
        "video_description": video.get("desc", ""),
        "created_at": video.get("create_time", ""),
        "tiktok_username": author.get("unique_id", ""),
        "tiktok_author_name": author.get("nickname", ""),
        "tiktok_followers": author.get("follower_count", ""),
        "views": stats.get("play_count", ""),
        "likes": stats.get("digg_count", ""),
        "instagram_username": "",
        "instagram_status": "not checked",
        "instagram_followers": "",
        "instagram_is_private": "",
        "manual_match_review": "required",
    })

# Vyplňte tento slovník pouze uživatelskými jmény,
# která jste samostatně našli a po ruční kontrole zdroje ověřili.
verified_instagram_usernames = {
    # "tiktok_video_id": "instagram_username"
}

for row in rows:
    username = verified_instagram_usernames.get(row["tiktok_video_id"])
    if not username:
        continue

    ig_payload = get_json(
        "https://ig.jsonscraper.com",
        "/v1/user/by/username",
        {
            "license_key": INSTAGRAM_KEY,
            "username": username,
        },
    )
    if ig_payload.get("status") != "ok":
        row["instagram_status"] = "api status: " + str(ig_payload.get("status"))
        continue

    profile = ig_payload.get("ig") or {}
    row["instagram_username"] = profile.get("username", username)
    row["instagram_status"] = "profile returned"
    row["instagram_followers"] = profile.get("follower_count", "")
    row["instagram_is_private"] = profile.get("is_private", "")
    row["manual_match_review"] = "check relationship manually"

if rows:
    with open("social_lead_checks.csv", "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=rows[0].keys())
        writer.writeheader()
        writer.writerows(rows)
else:
    print("No video rows returned for this query.")

Proč obsluha zohledňuje dvě struktury odpovědi

Ve výsledcích vyhledávání TikToku se videa mohou nacházet na dvou místech: tiktok.aweme_list a tiktok.search_item_list[].aweme_info. V pozorované odpovědi mohl být první seznam prázdný, zatímco položky se nacházely ve druhém. Příklad proto oba zdroje spojuje a odstraňuje duplicity podle aweme_id. Nejprve ověří vnější status a poté načte objekt tiktok.

Článek: Jak ověřit leady z TikToku na IGu před předáním do CRM
Shrnutí: Postup v Pythonu propojí veřejná videa z TikToku s autory uvedenými v jejich profilech a následně ověří odpovídající instagramové účty pomocí jsonscraper. Výsledkem je tabulka k ruční kontrole, která nemíchá data z různých platforem a chybějící pole ponechává prázdná.
Role obrázku: doprovodná ilustrace 2 — jiný konkrétní aspekt
Sekce: Proč obsluha zohledňuje dvě struktury odpovědi
Vizuální motiv: Clea
Schéma znázorňuje obě místa s výsledky vyhledávání TikToku a samostatný ruční krok před dotazem na IG.© jsonscraper · ilustrace vytvořená pomocí AI

Kód ukládá pouze pole, která jsou v odpovědi skutečně přítomná. Prázdná hodnota znamená, že pole v přijatém objektu chybělo; nelze ji vykládat jako nulový ukazatel. Odkazy a popisy videí je vhodné uchovávat společně s metrikami, jinak tabulka při pozdější kontrole ztrácí původní kontext.

Přidávejte stránkování, jen když je potřeba

Příklad vyžádá jednu stránku a zpracuje pouze vrácené položky. Pokud chcete ve vyhledávání pokračovat, dokumentace uvádí pro vyhledávání videí parametr cursor; jeho hodnota se převezme z předchozí odpovědi. Uchovávejte cursor jako neprůhlednou hodnotu a předávejte jej bez vlastních výpočtů. Smyčku zastavte, když odpověď oznámí, že nejsou k dispozici další výsledky, nebo když dosáhnete limitu stanoveného týmem. Stránkování rozšíří sadu vrácených výsledků, ale neopravňuje k tomu označit ji za úplný přehled všech příspěvků na dané téma.

Před přidáním automatického stahování ověřte skutečnou odpověď pomocí vlastního klíče a zvolte přiměřený počet stránek. Ukládejte původní JSON vedle normalizovaného řádku nebo samostatně podle data spuštění. Snáze pak zjistíte, zda se změnilo některé pole odpovědi, a budete moci sběr zpracovat znovu, pokud se změní schéma.

Jak používat CSV při kvalifikaci

V tabulce můžete filtrovat řádky podle přítomnosti odkazu na video, popisu, autora a vyplněného instagramového profilu. Pro první kolo kontroly se hodí jednoduché stavy: „video nalezeno“, „uživatelské jméno na IGu nalezeno“, „profil vrácen“, „vazbu účtů ověřil člověk“ a „vyřazeno“. Stavy popisují průběh kontroly, nikoli kvalitu nebo záměry autora.

Pokud potřebujete opakovatelný report, spouštějte skript podle plánu a přidejte samostatný sloupec s datem získání údajů. Porovnání snímků pak ukáže, co se mezi spuštěními změnilo v dostupných polích, například počet sledujících profilu. Ukazatele TikToku a IGu uchovávejte odděleně a označte platformu i čas pozorování: jde o odlišné kontexty a různé odpovědi API.

U většího objemu nahraďte CSV databází s primárním klíčem tvořeným platformou a ID videa. Uchovejte původní textový dotaz, čas sběru a nezpracovanou odpověď. Oznámení ve Slacku nebo předání řádku do CRM proveďte až po ručním potvrzení vazby profilů, nikoli hned po shodě jména.

Meze interpretace a bezpečný provoz

Vyhledávání podle klíčové fráze vrací výsledky nalezené API, nikoli úplný seznam příspěvků. Počet zhlédnutí, lajků a sledujících je snímek odpovědi v okamžiku dotazu. Hodí se k řazení pracovního seznamu a následné kontrole, ale sám o sobě nepotvrzuje obchodní záměr, publikum ani souhlas s kontaktováním.

Vazbu profilů potvrzujte na základě jednoznačných veřejných znaků a zaznamenejte, kdo a kdy kontrolu provedl. Pokud uživatelské jméno na IGu pochází z externí tabulky bez ověřitelného zdroje, ponechte stav „vyžaduje kontrolu“. Soukromý profil nebo chybějící údaje zobrazte jako samostatný výsledek kontroly a nedoplňujte mezery domněnkami.

Klíče ukládejte v úložišti tajných údajů pracovního prostředí, omezte přístup k exportům a nastavte dobu uchovávání odpovídající účelu výzkumu. Do CRM předávejte pouze pole potřebná pro další ruční práci a dodržujte příslušná pravidla platforem i požadavky na zpracování údajů.

Co získáte

Po spuštění vznikne soubor CSV se seznamem nalezených videí, jejich autory a dostupnými metrikami i se samostatnými poli pro ověření IGu. Skript lze spouštět ručně, podle plánu v CI nebo prostřednictvím uzlu HTTP požadavku v automatizační platformě. Základní praktická zásada je automatizovat sběr a strukturu údajů, ale propojení účtů ponechat jako ověřitelný krok člověka.

Kontrolu tras a dostupných parametrů začněte na stránkách TikTok Scraper API a IG Scraper API. Stránky produktů obsahují příklady požadavků a odkazy na dokumentaci; než sběr začleníte do trvalého procesu, začněte s malým dotazem.

Lidé

Pro tento článek zatím nejsou uvedeni žádní lidé.

Pokračujte ve čteníJak proměnit profily na IGu v každodenní přehled změn
Přečtěte si další článek

Proměňte přečtené ve funkční integraci

Prozkoumejte API sociálních dat jsonscraper, testujte požadavky a sestavte další workflow.

Prozkoumat API