DEV Community

Jals
Jals

Posted on

How to Build an Automated TikTok Ad Spy & Hook Analyzer with Python

In performance marketing and e-commerce, the first 3 seconds of a video ad (the "Hook") determines 80% of its return on ad spend.

If you analyze winning TikTok and Instagram Reels ads, you'll find that most top-performing ads don't rely on voiceover alone: they burn bold, dynamic text overlays directly onto the video screen.

Commercial ad spy platforms (like Foreplay or PiPiADS) charge anywhere from $99 to $299/month for access to their creative databases.

In this tutorial, we will build an automated TikTok Ad Hook Extractor in Python in under 20 lines of code.


🛠️ The Architecture

TikTok / Reels Ad URL
        │
        ▼
[Video OCR Ripper Engine] ──► (Skips static frames, runs GPU OCR)
        │
        ▼
Extracted Hook Text (First 3s) + Discount Codes + Full .SRT Transcript
        │
        ▼
[OpenAI / Claude] ──► Categorizes the Angle (Problem/Solution, Curiosity, Social Proof)
        │
        ▼
Notion Database / Airtable (Ready for Creative Team)
Enter fullscreen mode Exit fullscreen mode

🚀 Step 1: Install the Ripper CLI

We'll use tiktok-subtitle-ripper, a lightweight open-source library that extracts on-screen text overlays and subtitle files directly from video links:

pip install tiktok-subtitle-ripper
Enter fullscreen mode Exit fullscreen mode

💻 Step 2: The 15-Line Python Pipeline

Here is the complete script to extract the visual hook and full transcript from any competitor ad:

import httpx

RAPID_API_KEY = "YOUR_API_KEY"
API_URL = "https://tiktok-reels-subtitle-video-ocr-ripper.p.rapidapi.com"

headers = {
    "X-RapidAPI-Key": RAPID_API_KEY,
    "X-RapidAPI-Host": "tiktok-reels-subtitle-video-ocr-ripper.p.rapidapi.com"
}

def analyze_ad_creative(video_url: str):
    # 1. Ingest Video URL directly
    res = httpx.post(f"{API_URL}/jobs/url", json={"url": video_url, "preset": "tiktok_reels"}, headers=headers)
    job_id = res.json()["job_id"]

    # 2. Fetch OCR Results & Timecodes
    data = httpx.get(f"{API_URL}/jobs/{job_id}", headers=headers).json()

    # 3. Isolate the First 3-Second Hook
    hook_texts = []
    for segment in data.get("segments", []):
        if segment["start"] <= 3.0:
            hook_texts.extend([d["text"] for d in segment.get("detections", [])])

    print(f"🎯 Detected Visual Hook (0-3s): {' | '.join(hook_texts)}")
    return hook_texts

# Example usage on any TikTok / Reels link:
analyze_ad_creative("https://www.tiktok.com/@competitor/video/123456789")
Enter fullscreen mode Exit fullscreen mode

📊 Result: Instant Creative Intelligence

When run against a top dropshipping or brand video ad, the script immediately outputs:

🎯 Detected Visual Hook (0-3s): THE VIRAL 3-STEP ROUTINE | 50% OFF TODAY WITH CODE GLOW50
Enter fullscreen mode Exit fullscreen mode

From here, you can pipe this hook text directly to ChatGPT with a prompt like:

"Analyze this hook angle and write 3 variations for my brand."


🌐 Free Web Demo & Endpoints

If you want to test the video OCR extraction on your own ads without writing code, you can use the free web demo on Hugging Face Spaces.

For developers processing bulk ad libraries, check out the RapidAPI Marketplace Listing (free tier included, with scaling plans starting at $2.99/mo).

Top comments (0)