# Shot-by-Shot Video Analysis Pro – Storyboard & Director Notes (`tubetext/shot-by-shot-video-analysis`) Actor

Analyze any public video shot by shot: YouTube, TikTok, Reels, Bilibili or .mp4 links. Returns one row per shot (framing, camera move, emotion, why it was shot this way), edit rhythm, director notes and audience signals tied to shots. $0.20/min, $0.60 min; bad links are free. · by TubeText

- **URL**: https://apify.com/tubetext/shot-by-shot-video-analysis.md
- **Developed by:** [TubeText Labs](https://apify.com/tubetext) (community)
- **Categories:** Videos, AI
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $150.00 / 1,000 video minute analyseds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Shot-by-Shot Video Analysis Pro – Storyboard, Camera Moves & Director Notes

> **TubeText** · Video & ad analysis · Pay per result. No login. Ready for AI agents. [All tools](https://apify.com/tubetext)

### Quick start (no coding)

1. Click **Try for free** at the top of this page. A free Apify account is enough – it includes monthly credit.
2. In **Video URLs**, paste one public video link per line – TikTok, YouTube video or Short, Instagram Reel, Facebook, X, Bilibili or a direct .mp4.
3. Click **Start**. A 30-s clip takes 1–2 minutes; longer videos about 1.1–1.3× their length.
4. When it says **Succeeded**, open the **Output** tab and click **Export** → **Excel** (or CSV). One row per measured shot (framing, camera move, emotion, why this shot, what to steal) and one summary row per video (structure, edit rhythm, director's synthesis, audience signals).

**Cost:** $0.20 per started minute, $0.60 minimum per video – a 30-s TikTok = $0.60, a 10-minute YouTube video = $2.00.

**Common mistakes**

- A long video was skipped → raise **Max video length (minutes)** (default 15, up to 60).
- The run stopped before finishing → long videos need time: set the run timeout to about 1.5× the total video length.
- Just need the hook and a quick shot list for many videos → use [Video Breakdown AI](https://apify.com/tubetext/video-breakdown-ai) at $0.03 per video.

**Questions or problems?** [Open an issue](https://apify.com/tubetext/shot-by-shot-video-analysis/issues) (we read every one). **Need a custom version?** Ask in an issue or [email us](mailto:tubettext@gmail.com) – we build it as a private Actor on Apify.

### Use from Claude, Cursor or any MCP client

Add `https://mcp.apify.com?tools=tubetext/shot-by-shot-video-analysis` as a remote MCP server and sign in to Apify (Claude: **Settings → Connectors → Add custom connector**). Claude Code:

```bash
claude mcp add --transport http tubetext "https://mcp.apify.com?tools=tubetext/shot-by-shot-video-analysis"
```

Then ask, for example: *"Break down this ad shot by shot and show where viewers replayed or commented: \[link]"* or *"Analyze the top 3 videos on this YouTube channel like a director: what should I steal for my next video?"*

🆓 **Free to try:** Apify's free plan includes $5 of usage every month, no credit card needed – enough for about 8 short-video breakdowns (30-s videos at $0.60) with this tool.

**What you get** – real output from a test run, shortened. One row per shot (plus composition, on-screen text, spoken line, performance, sound and transitions in more columns), and one summary row per video:

| # | Time | Framing · angle · camera | Purpose | Why this shot |
|---|---|---|---|---|
| 1 | 00:00-00:02 | WS · top-down · static | hook | Starting with a 2-second top-down 'hero shot' of the finished meal establishes immediate… |
| 2 | 00:02-00:03 | WS · top-down · static | hook | This 1.07-second action shot emphasizes the creaminess of the dish by lifting the pasta,… |
| 3 | 00:03-00:04 | MCU · top-down · static | hook | The tighter 1.33-second framing focuses exclusively on the 'cheese pull' and texture, whi… |

Analyze any public video **shot by shot**, the way a director or editor would. For every shot you get the framing, camera movement, composition, on-screen text, spoken line, performance, emotion, sound cue and edit transition, plus **why it was shot this way**. For the whole video you get the emotion curve, the structure, edit-rhythm stats and a director's synthesis: what works, what to steal, what to avoid. It also ties **audience signals** to the shots that caused them: YouTube replay peaks, Bilibili danmaku bursts and comments. Works on YouTube, TikTok, Instagram Reels, Facebook, X, Bilibili and direct video files, including your competitors' videos. **Pay per video minute, not per seat.**

### What you get

- 🎬 **One row per shot**: `start`/`end` from measured cuts (scene detection, not guessed), `framing` (ECU, CU, MCU, MS, WS…), `angle`, `cameraMove` (static, pan, tilt, push-in, pull-out, handheld…), `composition`, `onScreenText`, `spoken`, `speaker`, `performance` (gesture, energy, delivery), `emotionLabel` + `emotionScore`, `sound`, `transitionIn`/`transitionOut`, `purpose` (hook, setup, demo, pitch, payoff…), `whyThisShot` and `stealThis` (the one thing to copy from this shot).
- 📈 **Emotion curve and structure**: emotion per shot, the curve's shape in one line (e.g. "anticipation → curiosity build → spike at 15.8 s → dip → satisfaction"), and the beats with shot ranges.
- ✂️ **Edit rhythm and coverage**: cuts, average/median/shortest/longest shot, cuts per minute, the rhythm pattern in words, and how many camera setups were used.
- 🧠 **Director's synthesis + production read**: what the film-making does well, what to steal, what to avoid, and how it was probably shot (rig, lighting, crew).
- 🔥 **Audience overlays where the data exists**: YouTube "most replayed" peaks mapped to shots, Bilibili danmaku (弹幕) density per shot, and top comments summarized. Each overlay row is labeled `alignment: timestamp | text_mention | semantic | none`, so you know how solid the link to a shot is.
- 🧩 **Everything from Video Breakdown AI too**: hook, transcript, products shown and commercial intent, so you don't need to run both.

### Analysis plus audience signals

Pro doesn't stop at describing shots. It ties what the audience did to the exact shot where it happened, wherever the platform exposes that data:

- **YouTube replay peaks:** in a 9-minute Casey Neistat video, the "most replayed" peak at 2:57 (the strongest point on the curve) lines up with a meme overlay on shot 43. That's the moment viewers rewound.
- **Bilibili danmaku bursts:** on a Bilibili story video, a burst of 95 bullet comments in 11 seconds landed on one specific story beat, so you can see exactly which line made the audience react.
- **Comments that point at a shot:** on a MrBeast Short, the top comment (218 likes) compared the build to "SimCity in real life", and Pro matched it to the scale-model shot #2.

Peak shots carry an `audiencePeak` note, and the video row lists the top signals under `directorSynthesis.audienceSignals`. Every signal says how it was linked (`alignment: timestamp | text_mention | semantic | none`). When a platform has no such data (TikTok has no replay heatmap, danmaku exist only on Bilibili), the row says so instead of guessing.

### Who it's for

- **UGC and performance teams**: understand why a competitor's ad holds attention, shot by shot, before you brief creators.
- **Directors, editors and film students**: a storyboard plus "why" notes for any reference video.
- **Agencies and MCNs**: review client and competitor content with a consistent, exportable shot table.
- **AI agents**: one call returns a structured storyboard that an LLM can reason over (see "Use from Claude" below).

### Storyboard from video

Paste a link and get the shot list as a storyboard: timecodes, keyframe description, framing and camera move per shot, ready for Excel, Notion or a brief. In our test, a 31-second TikTok recipe ad came back as **26 measured shots** from 21 camera setups (47.9 cuts per minute).

### Shot-by-shot analysis of ads and UGC

Real output for a 31-second TikTok recipe ad (an app promotion), first 3 of 26 shots, shortened:

| # | Time | Framing · angle · camera | Purpose | Why this shot |
|---|---|---|---|---|
| 1 | 0:00–0:02 | WS · top-down · static | hook | A 2-second "hero shot" of the finished meal sets appeal and trust before the cooking starts. |
| 2 | 0:02–0:03 | WS · top-down · static | hook | A spoon lift shows the creaminess and repeats shot 1's setup, which builds a visual identity. |
| 3 | 0:03–0:04 | MCU · top-down · static | hook | A tighter 1.3-second frame on the cheese pull: a proven food-engagement trope and the payoff of the hook. |

Per video, the same run returned the director's synthesis. What works: "the result-first food hook… before starting the instructions". What to steal: "sub-second cuts for repetitive tasks to compress time". Plus the production read: "a single overhead rig… hands only… low crew effort".

### Input

- **Video links**: one per line. YouTube videos and Shorts, TikTok, Instagram Reels, Facebook, X, Bilibili, direct .mp4.
- **Or discover videos**: a channel or profile (newest or most popular), a YouTube search, or another Actor's dataset (`datasetId`). Set `maxVideosPerSource`.
- **Maximum cost per run**: set by default, so a big channel can't run up a surprise bill.
- **Max video length (minutes)**: default 15, up to 60. Longer videos are skipped, free. A 15-minute video costs $3.00.
- **Output language**: default English. Quotes (on-screen text, spoken lines) stay in the video's original language.
- **Audience overlays**: on by default and free, where the data exists. YouTube "most replayed" peaks and Bilibili danmaku density are mapped to shots by timestamp, plus top comments.

### Output example

```json
{
  "rowType": "shot", "index": 1, "timecode": "00:00-00:02", "duration": 2,
  "framing": "WS", "angle": "top-down", "cameraMove": "static",
  "onScreenText": "cheap & delicious dinners: Chipotle Chicken Mac & Cheese",
  "speaker": "voice-over", "emotionLabel": "anticipation", "emotionScore": 0.8,
  "transitionIn": "start", "transitionOut": "hard cut", "purpose": "hook",
  "whyThisShot": "Starting with a 2-second top-down 'hero shot' of the finished meal establishes immediate visual appeal…",
  "stealThis": "Start with a high-contrast top-down 'hero shot' of the final product…",
  "charged": false
}
```

One `"rowType": "video"` row per video adds `hook`, `structure`, `editRhythm`, `emotionCurveShape`, `directorSynthesis`, `productionRead`, `coverage`, `overlays` (with `overlaysAvailable` and the reason when an overlay doesn't exist for that platform), `billedMinutes` and `priceUsd`.

### Pricing

**$0.20 per started minute of video, $0.60 minimum per video (3 started minutes)** at the Apify free-plan price (lower on paid plans). For example, a 30-second TikTok costs $0.60 and a 10-minute YouTube video $2.00. Every row has a `charged` field, and the run's status line shows the total.

**When you're not charged at all**

- The link is wrong, private, deleted or can't be downloaded. We find this out before any AI runs.
- Something fails on our side: our AI provider is overloaded or rate-limited, or our code crashes.

**The one partial charge: `processing-fee`, at our cost, $0.03 per started minute processed**
It applies only when the AI analysis already ran on your video and no full breakdown came out:

- your **Maximum cost per run** or timeout stopped the run partway through that video,
- you aborted the run while that video was being analyzed,
- or the video gave the model nothing usable (for example a blank or corrupted stream).

The fee covers exactly what we spent on AI for that video, with no margin, and the row says why it was charged. If the per-shot analysis finishes but the director pass fails, you still get every shot row at the normal price, and the row notes the missing synthesis. Every row has `costCase` (for example `free`, `processing-fee`, `cache-free` or a normal charge), so you can see which rule applied. We never charge for work we didn't do.

Just need the hook, shot list and script fast? [Video Breakdown AI](https://apify.com/tubetext/video-breakdown-ai) does a quick one-pass breakdown for $0.03 per video.

### Ready-made examples

- [UGC Ad Shot-by-Shot Analysis](https://apify.com/tubetext/shot-by-shot-video-analysis/examples/ugc-ad-shot-by-shot-analysis)
- [YouTube Short Storyboard + Replay Peaks](https://apify.com/tubetext/shot-by-shot-video-analysis/examples/youtube-short-storyboard-replay-peaks)

### TubeText Labs tools

**TubeText Labs** builds 31 pay-per-result Apify Actors for video, social and e-commerce data – no login, JSON/CSV/Excel output, and ready for ChatGPT and Claude (Apify MCP), n8n, Make and Zapier. All tools: [apify.com/tubetext](https://apify.com/tubetext)

**Transcripts**

- [YouTube Transcript Scraper](https://apify.com/tubetext/youtube-transcript-fast) – videos, Shorts, playlists and whole channels to text; Whisper AI when there are no captions
- [TikTok Transcript Scraper](https://apify.com/tubetext/tiktok-transcript) – TikTok captions plus Whisper AI, SRT and timestamps
- [Instagram Reels Transcript](https://apify.com/tubetext/instagram-reels-transcript) – reel links or @usernames to text with Whisper AI
- [Podcast & Video Transcript](https://apify.com/tubetext/any-video-podcast-transcript) – podcast RSS / Apple Podcasts, X, Facebook, Loom, Twitch and audio files to text
- [Facebook Video Transcript](https://apify.com/tubetext/facebook-video-transcript) – public Facebook videos and Reels to text with Whisper AI
- [X (Twitter) Video Transcript](https://apify.com/tubetext/twitter-x-video-transcript) – X/Twitter video posts to text with Whisper AI
- [Reddit Video Transcript](https://apify.com/tubetext/reddit-video-transcript) – videos in public Reddit posts (v.redd.it) to text with Whisper AI, with SRT and timestamps
- [Bilibili Video Transcript](https://apify.com/tubetext/bilibili-video-transcript) – Bilibili (B站) videos to text with Whisper AI, plus optional English summaries
- [Podcast Transcript](https://apify.com/tubetext/podcast-transcript) – podcast RSS feeds and Apple Podcasts episodes to text with Whisper AI

**Video & ad analysis**

- [Video Breakdown AI](https://apify.com/tubetext/video-breakdown-ai) – hook analysis, shot list, cut pacing, products shown and script of any TikTok, Reel or YouTube video
- [Shot-by-Shot Video Analysis Pro](https://apify.com/tubetext/shot-by-shot-video-analysis) *(this tool)* – director-level storyboard of any video: framing, camera move, emotion and why each shot works, plus replay peaks, danmaku and comments tied to shots
- [Video Ad Analyzer](https://apify.com/tubetext/video-ad-analyzer) – competitors' YouTube video ads by brand or domain (Google Ads Transparency), torn down by AI
- [Meta Ad Library Scraper](https://apify.com/tubetext/meta-ad-library-videos) – Facebook and Instagram ads by brand or keyword: video URLs, images, ad copy, CTA and landing page

**Social, apps & trends**

- [YouTube Channel Analytics](https://apify.com/tubetext/youtube-channel-analytics) – subscribers, recent video performance, Social Blade grade, ranks and estimated earnings
- [Bilibili Scraper](https://apify.com/tubetext/bilibili-scraper) – Bilibili (B站) keyword search, popular board, top-100 ranking, video stats, danmaku text and creator (UP主) followers – no login
- [China Trending Topics](https://apify.com/tubetext/china-trending-topics) – Douyin, Weibo, Baidu, Toutiao and Bilibili hot-search boards in one run, in English – plus an optional AI briefing on why topics trend
- [WeChat Article Scraper](https://apify.com/tubetext/wechat-articles-scraper) – WeChat 公众号 articles by keyword or link: full text, English titles and optional English summaries
- [Google Play Reviews + AI Insights](https://apify.com/tubetext/google-play-reviews-ai) – Android app reviews by star rating, country and language, plus an AI report of complaints and praise
- [Steam Reviews Scraper + AI Insights](https://apify.com/tubetext/steam-reviews-scraper) – Steam game reviews with hours played and votes, review score and current players, plus an AI report of top complaints, praise and feature requests
- [Social Blade Scraper](https://apify.com/tubetext/socialblade-scraper) – Social Blade stats for YouTube, TikTok, Instagram and Twitch creators – grade, ranks, 2-week growth, daily history, earnings estimates and top-100 lists
- [Spotify Play Count Scraper](https://apify.com/tubetext/spotify-play-count-scraper) – play counts for every track of an album, artist or playlist (incl. Top 50 charts), plus monthly listeners, followers, world rank and top cities

**E-commerce & travel**

- [TikTok Shop Product Scraper](https://apify.com/tubetext/tiktok-shop-product-scraper) – US TikTok Shop prices, items sold, stock per SKU and shop stats
- [AliExpress Search Scraper](https://apify.com/tubetext/aliexpress-search-scraper) – AliExpress search results by keyword: price, items sold, rating, shipping, badges
- [Google Hotels Scraper](https://apify.com/tubetext/google-hotels-scraper) – hotel prices for any destination and dates, per booking site and as a 90-day price calendar
- [Taobao & Tmall Product Scraper](https://apify.com/tubetext/taobao-tmall-scraper) – Taobao/Tmall products by Chinese or English keyword, category or URL: CNY prices, shops and seller scores
- [Alibaba & Yiwu Supplier Finder by Image](https://apify.com/tubetext/alibaba-yiwu-image-search) – product photo in, similar Alibaba.com and Yiwu wholesale listings out: price, MOQ, supplier, country and rating
- [Amazon Product Search Scraper](https://apify.com/tubetext/amazon-product-search-scraper) – Amazon search results, Best Sellers lists and product pages: price, rating, reviews, monthly sales signal, badges and specs
- [Google Flights Scraper](https://apify.com/tubetext/google-flights-scraper) – flight prices for any route or multi-city trip, a cheapest-day calendar, price insights and booking options per site
- [Agoda & Booking.com Hotel Reviews + AI](https://apify.com/tubetext/agoda-reviews-scraper) – Agoda hotel reviews plus verified Booking.com reviews shown on Agoda, hotel scores and sub-scores, and an AI report of complaints, praise and action items
- [Gas Prices Scraper (US & Canada)](https://apify.com/tubetext/gas-prices-scraper) – live gas station prices by ZIP, city or coordinates – regular, premium, diesel, E85 – with an area summary of the cheapest stations
- [Idealo Price Scraper](https://apify.com/tubetext/idealo-price-scraper) – every shop offer for a product on idealo – price, shipping, delivery, shop rating – in Germany, Austria, France, Italy, Spain and the UK, with a summary per market

**Questions or problems?** [Open an issue](https://apify.com/tubetext/shot-by-shot-video-analysis/issues) (we read every one). **Need a custom version?** Ask in an issue or [email us](mailto:tubettext@gmail.com) – we build it as a private Actor on Apify.

Found it useful? A short review on this page helps others find it.

Built by **TubeText Labs** · Pay per result. No login. Ready for AI agents.

### FAQ

**How is this different from Video Breakdown AI?** Breakdown is a fast, cheap overview: hook, shot list, pacing, script. Pro measures every cut, analyzes each shot in depth with a stronger model, and adds director notes, the emotion curve, edit rhythm and audience overlays. Use Breakdown to scan many videos, and Pro on the ones worth studying.

**Are shot boundaries accurate?** Cuts are measured with scene detection on the actual video, and the AI describes each measured shot. It never invents its own cut points. Flash frames are dropped and shots under 0.4 s are merged (the video row's `cutDetection` says what was adjusted). Slow dissolves and one-take animations can come out as a single long shot.

**Which videos work best?** Public videos up to 60 minutes (set **Max video length**; the default is 15). Long videos are analyzed in chunks. Live streams aren't supported yet.

**How long does it take?** Analysis takes about 1.1–1.3× the video's length for longer videos: a 9-minute YouTube video took 10–12 minutes in our tests, a 3-minute Bilibili video about 3 minutes, and a 20–40 s clip 1–2 minutes. Instagram downloads can add a few minutes. The run's status message shows progress (downloading → measuring cuts → shots analyzed → director pass). For long videos, set a run timeout of at least 1.5× the total video length.

**Can I re-run a video?** Yes. Results are cached for 24 hours in a key-value store in your own account (`director-pro-cache`). Re-running the same video with the same settings returns the saved result in seconds, rows marked `fromCache`. It's **free**: you already paid for that video, so cached results are not charged (`costCase: cache-free`).

**Can I analyze a competitor's videos?** Yes, any public video. No login is used.

### 中文说明

**分镜脚本 / 视频拆解（导演级）**：粘贴任意公开视频链接（YouTube、TikTok、Instagram Reels、B站、Facebook、X 或 .mp4；暂不支持抖音），逐个镜头输出景别、运镜、构图、画面文字、台词、表演、情绪、音效与转场，并说明"为什么这样拍"（钩子、铺垫、反转、证明、行动号召）。整条视频另有情绪曲线、结构、剪辑节奏和导演点评（值得学的、该避免的）。B站视频可叠加每个镜头的弹幕密度，YouTube 热门视频可叠加"最多重播"高峰。按视频分钟计费（$0.20/分钟，每条最低 $0.60），下载或分析失败不收费。适合短视频团队、广告投放、MCN 和导演/剪辑做爆款视频拆解与分镜脚本参考。

# Actor input Schema

## `urls` (type: `array`):

Public videos to break down shot by shot: TikTok, YouTube (videos, Shorts, channels, playlists), Instagram Reels, Facebook, X, Bilibili, direct .mp4 links. Also TikTok/Instagram profile links (their latest videos). One per line. The example input (one ~40-s TikTok) costs $0.60. Price: $0.20 per started minute of video, $0.60 minimum per video (3 minutes); videos that fail are free. Set Maximum cost per run to at least $1 (one video costs at least $0.60).

## `searchQueries` (type: `array`):

Optional: break down the most viewed YouTube videos of the past year for each search term (up to 'Max videos per source' each).

## `datasetId` (type: `string`):

Optional: a dataset (e.g. a TikTok or YouTube scraper's output) whose items contain video links; the most viewed are taken first.

## `maxVideosPerSource` (type: `integer`):

For channels, profiles, playlists, search terms and datasets: how many videos to break down from each.

## `maxVideoMinutes` (type: `integer`):

Longer videos are skipped (free). Each started minute costs $0.20 ($0.60 minimum per video), so a 15-minute video costs $3.00. The example input (one ~40-s TikTok) costs $0.60.

## `outputLanguage` (type: `string`):

Language of the analysis. Quotes (on-screen text, spoken lines) stay in the video's original language.

## `includeOverlays` (type: `boolean`):

Free, where the data exists: YouTube 'most replayed' peaks and Bilibili danmaku density mapped to shots by timestamp, plus top comments (YouTube, TikTok, Bilibili) summarised into themes with sentiment. A comment is linked to a shot only when it names a timestamp or an explicit moment. 'overlays_available' says why any overlay is missing.

## Actor input object example

```json
{
  "urls": [
    "https://www.tiktok.com/@okc.dad/video/7682492258666515726"
  ],
  "maxVideosPerSource": 3,
  "maxVideoMinutes": 15,
  "outputLanguage": "English",
  "includeOverlays": true
}
```

# Actor output Schema

## `shots` (type: `string`):

No description

## `videos` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.tiktok.com/@okc.dad/video/7682492258666515726"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tubetext/shot-by-shot-video-analysis").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "urls": ["https://www.tiktok.com/@okc.dad/video/7682492258666515726"] }

# Run the Actor and wait for it to finish
run = client.actor("tubetext/shot-by-shot-video-analysis").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.tiktok.com/@okc.dad/video/7682492258666515726"
  ]
}' |
apify call tubetext/shot-by-shot-video-analysis --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tubetext/shot-by-shot-video-analysis"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gebJoR1UKRAgkgsbA/builds/TyXldE28Bmj35yZTK/openapi.json
