TikTok/Reels/Shorts Format Analyzer: hook, structure, score avatar

TikTok/Reels/Shorts Format Analyzer: hook, structure, score

Pricing

from $40.00 / 1,000 video analyzeds

Go to Apify Store
TikTok/Reels/Shorts Format Analyzer: hook, structure, score

TikTok/Reels/Shorts Format Analyzer: hook, structure, score

TikTok and Reels video analyzer for direct video file links, not page links, or a TikTok, Instagram or YouTube scraper dataset. No key: scenes and cuts for up to 3 videos, $0.01 a run plus any scraper run. Your Anthropic key: up to 100 videos, how each opens, on-screen text, a score, $0.04 a video.

Pricing

from $40.00 / 1,000 video analyzeds

Rating

0.0

(0)

Developer

FrameProbe

FrameProbe

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

9

Monthly active users

a day ago

Last modified

Share

The API key is optional. With no key, a preview run measures each video's scene count, cut timings, duration and resolution, up to 3 videos, for the $0.01 start fee only. Give it direct video file URLs, or a scraper's dataset. Add your own Anthropic key and each record also says how the video opens, how it is built, its on-screen text and a 0 to 10 rating.

A tiktok.com, instagram.com or youtube.com page link is not a video file and will not work. Run a scraper for that platform first and pass its dataset, which is the recommended input anyway; the Actor names the scraper to chain when it sees a page link.

Actor idframeprobe/reel-teardown
Minimal input{"videoUrls": ["https://api.apify.com/v2/key-value-stores/Bfr82R8zp35dJRkcL/records/autotest-clip.mp4"]}
Cost$0.01 per run, plus $0.04 per video that produced a full record. A run with no Anthropic key costs the $0.01 start only: the free preview measures up to 3 videos and charges nothing per video. Videos that fail to download or analyze are never charged. Your own Anthropic account bills you separately for the model calls.
OutputOne row per video: sceneCount, cutCadenceSeconds, cutTimestampsSeconds, durationSeconds, width, height, then with a key productionStack, hookStyle, hookNotes, structureStyle, onScreenText, captionTreatment, visualSystem, assets, formatScore, whyItWorked and confidence.

Click Try for free. The input form arrives with a demo clip already filled in, and no key is needed for the first run: you get real scene counts and cut timings back before you pay any model provider anything. Without a key a run is capped at 3 videos and calls no model.

  • Measure scene counts and cut timings on up to 3 videos with no API key: the keyless preview.
  • Work out why a competitor's TikTok or Reel performs, shot by shot.
  • Measure the pacing of a set of ads or organic posts and compare them on the same scale.
  • Read the on-screen text off a batch of videos without watching any of them.

AI reads each video for hook style, scenes, pacing, and on-screen text as structured JSON. No-key preview: scenes + metrics on 3 videos. Add your Anthropic key for the full AI teardown.

Feed it a scraper's dataset ID (chain it after any TikTok, Instagram, or YouTube scraper) or direct video file URLs. Page links alone will not work; the Actor tells you which scraper to chain.

What it does

The Anthropic key is optional. With no key the run is a keyless preview: measured scene count, cut timings, duration and resolution on up to 3 videos, and no model is called. With your key, it adds the rest.

Point it at short-form videos and get one structured record per video: the production stack, the hook style, the structure and pacing, scene count and cut cadence, the on-screen text read straight off the frames, an asset list, a plain-language explanation of why the video worked, and a 0 to 10 "worth copying" score. Built for creators, agencies, and growth teams who reverse-engineer what performs instead of guessing.

Output is a full structured record per video, ready to export or feed into your own tools.

How it works: two inputs

This Actor analyzes videos. It does not scrape social sites. Feed it one of two ways.

1. Chain a scraper's dataset (recommended). Run a TikTok, Instagram, or YouTube scraper, then pick its dataset. This Actor reads the media URLs the scraper already collected and analyzes each one. This is the reliable path for all three platforms, because they block video fetching from cloud servers.

2. Direct media URLs. Already have direct video file URLs? Pass them in videoUrls and it analyzes them right away.

Pasting a tiktok.com, instagram.com, or youtube.com page link will not work. Those need a scraper first, and the Actor tells you exactly which one to chain when it sees a page link.

Try it with no key

Run it with no API key and it still downloads each video and measures it: duration, resolution, scene count, cut cadence, plus the sampled frames in the key-value store. You get real records and pay nothing per video. The model-read fields (hook, structure, on-screen text, score) come back empty and status is preview, so a preview row is never mistaken for an analysis. Keyless runs process up to 3 videos.

Add a key to get the full teardown.

Bring your own vision key

Analysis runs on your own Anthropic API key, so you control the model and the cost. Default model is claude-sonnet-5; set claude-opus-5 for the most capable read or claude-haiku-4-5 to spend less. Your key is used for the run and never stored or logged. More providers are coming; v1 supports Anthropic.

Your key and model id are checked against your own account before the run starts, so a wrong key or a mistyped model fails immediately and costs you nothing.

Quickstart

  1. Optional: hit Start with the default input first. No key needed, and you get a measured record plus frames back in seconds.
  2. Run a scraper Actor for the platform you care about.
  3. Get an Anthropic key at console.anthropic.com and paste it into Your vision model API key.
  4. Pick the scraper's dataset in Dataset from a scraper run.
  5. Set Maximum videos to cap your spend.
  6. Run it. Records land in the dataset; sampled frames land in the key-value store.
{
"datasetId": "aBcDeFgHiJkLmNoP",
"maxVideos": 25,
"framesPerVideo": 6,
"includeOnScreenText": true,
"language": "en",
"visionProvider": "anthropic",
"visionApiKey": "sk-ant-..."
}

What you get per video

{
"url": "https://cdn.example.com/clip.mp4",
"platform": "tiktok",
"status": "ok",
"durationSeconds": 52.21,
"width": 854,
"height": 480,
"sceneCount": 6,
"cutCadenceSeconds": 4.96,
"cutTimestampsSeconds": [1.53, 6.49, 11.02, 34.7, 47.18],
"productionStack": "motion-graphics",
"hookStyle": "story-frame",
"hookNotes": "Opens on black then a dark foggy shot to build atmosphere before revealing characters.",
"structureStyle": "story-arc",
"onScreenText": ["http://jell.yfish.us"],
"captionTreatment": "Burned in, word timed, white with a yellow accent word, lower third.",
"visualSystem": "Consistent dark frame with a torn-paper title card between steps.",
"assets": ["torn-paper title card", "warm cinematic grade"],
"formatScore": 5,
"whyItWorked": "Moody open with a slow reveal, relying on visual spectacle and curiosity rather than a spoken claim.",
"confidence": "med",
"likelyTools": "3D animation software, video editor",
"frameKeys": ["frame-9f2a1c7d4e6b8a03-00.jpg"],
"analysisStatus": "ok"
}

Measured from the file by ffprobe and ffmpeg, never by the model: durationSeconds, width, height, sceneCount, cutCadenceSeconds, cutTimestampsSeconds. The scene detector fires on hard cuts, overlays and kinetic text alike, so read the cadence as a measured proxy for pace.

cutTimestampsSeconds is where each detected change falls, in seconds from the start: the raw measurement that the count and the median are derived from. It is in the keyless preview too. null means scene detection did not run; [] means it ran and found no cuts. The list is capped at 500 entries and sceneCount is not, so if sceneCount - 1 is larger than the number of entries the list was truncated and the count is still the true one.

Read from the frames, pinned to these exact values:

FieldValues
productionStackreal-camera, generated-avatar, screen-recording, motion-graphics, mixed
hookStylecontrarian-claim, problem-promise, demo-first, list-tease, data-shock, story-frame, identity-call
structureStyledemo-walkthrough, numbered-list, problem-solution, before-after, tutorial-steps, commentary-overlay, story-arc, rapid-tips, reframe-explainer, statement-psa, unclassified
confidencelow, med, high
formatScoreInteger 0 to 10, how strong the format is as a model to copy

Free text in your chosen language: hookNotes, captionTreatment, visualSystem, whyItWorked, likelyTools. Lists: onScreenText (max 12), assets (max 8).

Pricing

WhatPrice
Actor start$0.01 per run, charged after your input validates
Preview (no key)$0.04 events never fire. Measured fields only, up to 3 videos
Video analyzed$0.04 per video that produced a record
Videos that failedFree. They appear in the dataset with a reason and are not charged
Vision model tokensBilled by Anthropic, directly to your account, at their rates

A keyless preview run costs one $0.01 start event and nothing else. If a link is dead or a platform blocks it, you pay nothing for that video. maxVideos is your hard ceiling: at 100 videos a run cannot cost more than $4.01 from us.

Limits

  • Social page URLs need a scraper chain. See "How it works" above.
  • Direct URLs must be publicly fetchable from a cloud server.
  • Links to private or internal addresses are refused, with a gap. A link that is not https, or whose host is or looks up to localhost, a private network, a cloud metadata address or 100.64.x.x, is refused before anything connects to it. Two cases get past that check. A host can give a public address when we check it and a private one when we connect (DNS rebinding). And for page links, the page-to-video lookup can follow a redirect, or fetch a link found in the page, without the check seeing it. Downloads re-check every redirect. The exposure is highest when you feed in a dataset scraped from pages you do not control, because whoever wrote the page wrote those links.
  • Instagram and TikTok media links are short-lived signed URLs. Pass a fresh dataset rather than stored links, or expect download-403.
  • Videos are capped at 60 MB, 180 seconds, and 2160px on the long edge. Anything larger is reported as failed rather than silently truncated.
  • Frames, not audio. The analysis reads what is on screen. It does not transcribe speech, so a video whose whole point is spoken gets its visual format scored, not its script.
  • Analysis depth scales with framesPerVideo (default 6).

Maintained

Actively maintained. Broken inputs get diagnosed with a specific reason and a fix, not a stack trace: a deleted video, an age-gated one, and a platform blocking our IP each say so and each tell you what to do next.

See CHANGELOG.md.