№27

27 сентября 2026

контент · данные · инструменты · агенты

Какие крючки работают у конкурента: его рилсы в таблице с просмотрами

Таблица по каждому рилсу конкурента: тема, тип крючка (чем ролик цепляет в начале), структура, просмотры и лайки.

5 мин чтения · около $2 за 500 роликов · вечер на настройку

Где подвох
Jev в раннем доступе со списком ожидания, поэтому ключ могут выдать не сразу. Модель читает только речь и не видит надпись поверх видео.

Как повторить

Путь 1. Готовый Creator Lab

  1. Установите Node.js (рекомендуют 24, минимум 22.9) и FFmpeg. ffmpeg и ffprobe должны быть в PATH (это список папок, где система ищет программы). На Mac: brew install ffmpeg, на Windows: winget install --id Gyan.FFmpeg --exact.
  2. Скачайте инструмент и создайте конфиг:
   git clone https://github.com/artemnovitckii/creator-lab.git
   cd creator-lab
   npm run setup

Появится файл .env. В Finder он скрыт, поэтому откройте папку в редакторе кода.

  1. Впишите в .env ключи. APIFY_TOKEN берётся в Apify Console: настройки аккаунта, раздел API и интеграций. TYPESAFE_API_KEY выдают на https://console.typesafe.ai/keys, когда вас пустят из списка ожидания. Ещё нужен ключ одного сервиса расшифровки: GROQ_API_KEY с https://console.groq.com/keys или FIREWORKS_API_KEY с https://app.fireworks.ai/. В TRANSCRIPTION_PROVIDER по умолчанию стоит fireworks. Если выбрали Groq, впишите groq. Ключ второго сервиса оставьте пустым. В каждом кабинете включите оплату и поставьте лимит трат: потолок расходов в самом инструменте ограничивает только Apify.
  2. Проверьте настройки и запустите:
   npm run doctor
   npm start
  1. Нажмите «New analysis» и введите имя аккаунта без @. Для пробного запуска поставьте 20 роликов, concurrency 2 (сколько роликов обрабатывается одновременно) и лимит Apify $1. Для русской речи укажите язык ru: английский Jev понимает лучше остальных языков. После проверки можно запускать до 1 000 роликов за раз. Запуск ставится на паузу, и готовые расшифровки повторно не оплачиваются.
  2. В дашборде выберите тему, потом тип крючка и нажмите «Compare engagement»: появятся медиана просмотров, лайки и комментарии на 1 000. Рядом с цифрами смотрите размер выборки. «Export JSON» сохраняет результат.

Путь 2. Своя сборка на Python

  1. На странице Apify Instagram Reel Scraper укажите аккаунт, а в resultsLimit поставьте около 500. Транскрипт и скачивание видео выключите: обе опции платные. Сохраните результат как reels.json.
  2. Сразу скачайте звук по audioUrl, а если его нет, по videoUrl: ссылки быстро перестают работать. Расшифровать можно у Groq: модель whisper-large-v3-turbo, $0.04 за час звука, минимум 10 секунд на запрос, на бесплатном тарифе файл до 25 МБ. Бесплатный вариант работает на вашем компьютере (brew install whisper-cpp, нужна многоязычная модель без .en):
   ffmpeg -i reel.mp4 -ar 16000 -ac 1 reel.wav
   curl -L -o ggml-small.bin https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin
   mkdir -p transcripts
   whisper-cli -m ggml-small.bin -f reel.wav -l auto -otxt -of transcripts/SHORTCODE

Вместо SHORTCODE подставьте shortCode ролика.

  1. Получите ключ Jev на https://console.typesafe.ai/keys, затем выполните pip install typesafe-sdk (нужен Python 3.10 или новее) и export TYPESAFE_API_KEY=....
  2. Запустите скрипт. Описания категорий в нём примерные. Описания, которые использует Creator Lab, лежат в lib/schema.mjs его репозитория.
import csv, json
from pathlib import Path
from typesafe_sdk import Choice, TypeSafeClient

client = TypeSafeClient()  # ключ берёт из TYPESAFE_API_KEY

QUESTIONS = {
    "topic": Choice(
        instructions="What is the main topic of this reel script?",
        criteria={
            "business": "Running or growing a company",
            "marketing": "Ads, leads, offers, funnels",
            "mindset": "Habits, discipline, motivation",
            "technology": "Tools, AI, software",
            "other": "None of the above",
        },
    ),
    "hook": Choice(
        instructions="What kind of hook does the opening of this script use?",
        criteria={
            "curiosity": "Opens a question or gap the viewer wants closed",
            "recognition": "Describes a situation the viewer sees themselves in",
            "result": "Opens with a concrete outcome or number",
            "direct": "Addresses the viewer or states the offer at once",
            "mistake": "Opens with an error or a warning",
            "contradiction": "Attacks a common belief",
            "other": "None of the above",
        },
    ),
    "structure": Choice(
        instructions="How is this script structured?",
        criteria={
            "problem_solution": "A problem, then the fix",
            "steps": "A numbered or sequential how-to",
            "comparison": "Two things set against each other",
            "opinion": "A stated position with support",
            "explanation": "Explains how something works",
            "qa": "A question and its answer",
            "other": "None of the above",
        },
    ),
}

reels = json.load(open("reels.json"))
rows = []
for r in reels:
    f = Path("transcripts") / f"{r.get('shortCode')}.txt"  # текст от whisper из шага 2
    text = f.read_text().strip() if f.exists() else (r.get("transcript") or "").strip()
    if not text:
        continue
    a = client.system_one(state=text, questions=QUESTIONS, model="jev-1.13.0").answers
    rows.append({
        "url": r.get("url"),
        "plays": r.get("videoPlayCount"),
        "likes": r.get("likesCount"),
        "topic": a["topic"].choice,
        "hook": a["hook"].choice,
        "structure": a["structure"].choice,
    })

with open("labeled.csv", "w", newline="") as f:
    w = csv.DictWriter(f, fieldnames=rows[0].keys())
    w.writeheader()
    w.writerows(rows)
  1. Сначала прогоните 20 роликов. Если ярлык расходится с вашей оценкой чаще чем в одном ролике из пяти, уточните описания в criteria.
  2. Посчитайте медиану просмотров по типам крючка: groupby("hook")["plays"].median() в pandas.

Как проверить результат

В Creator Lab пробный запуск на 20 роликах проходит без красных ошибок и стоит около 5 центов у Apify и около цента у Jev. Откройте пять роликов через «Original Reel» и сверьте их ярлыки со своим ощущением. Ярлыки с уверенностью ниже 0.65 или unclear инструмент сам помечает для ручной проверки. В своей сборке у каждой строки labeled.csv должны быть заполнены topic, hook и structure, а «other» не должен набирать больше пары десятков процентов. Если один тип крючка забрал 80–90 % роликов, описания слишком широкие.

Ссылки

Источник: artem.novitckii, Instagram Reels.

Больше подобного

Разбираю по находке в день и складываю сюда. Свежее и то, что до сайта не доехало, выходит в канале «Евдокимов как обычно».