# Lexonia Video Intel — Video Research & Creator Discovery (`lexonia/lexonia-video-intel`) Actor

Find & rank the top creators on any topic across YouTube and China's Bilibili (B站) & Douyin (抖音) — then read what they say, in English. Get a ranked shortlist + contacts, ready to transcribe. For market research, influencer & opinion-leader discovery. Works in Claude & ChatGPT via Apify MCP.

- **URL**: https://apify.com/lexonia/lexonia-video-intel.md
- **Developed by:** [Lexonia Group](https://apify.com/lexonia) (community)
- **Categories:** Automation, Videos, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $60.00 / 1,000 ranked channels

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Lexonia Video Intel — Video Research & Creator Discovery

**Give it a topic. Get back the opinion-leader creators who own it — and everything you need to act on them.**

Lexonia Video Intel finds the **creators driving any topic** across **YouTube, Bilibili (B站),
and Douyin (抖音)**, ranks them, and returns a shortlist you can actually use — whether you're sizing up
their **audience** for a partnership or studying their **content** for research. The only discovery engine
that spans Western and Chinese video in one query, and hands its shortlist straight to the Lexonia
transcriber so you can **read what those creators say, in English.**

**🌐 Languages:** Chinese · English · <details><summary><strong>more…</strong></summary>

Chinese · English · Spanish · Japanese · Korean · Portuguese · Russian · French · German · Arabic · Hindi · Indonesian · Vietnamese — searches each platform in its own market language, results delivered in yours.

**Want a language that's not listed?** Email **info@lexoniagroup.com** with **"add another language"** in the subject — tell us the language and how you'd use it, and we'll add it.

</details>

### Two ways to use it — pick your goal with the `Focus` toggle

The app serves two jobs. The **Focus** setting reconfigures the whole run — how creators are ranked and what you get back.

#### 🎯 Audience focus — *find opinion-leader creators to partner with*

For sponsorships, KOL outreach, and creator deals. You care **who they reach**, not just what they say.
Ranks creators as **partnership targets** — a big, **engaged**, on-topic, **reachable** audience wins.
You get: reach, **engagement rate**, **tier** (Nano → Mega), an **est. sponsored-post range**, **contact details**
(email, website, socials, and China WeChat/QQ/Weibo), and cross-platform presence. Creators with no way to
reach them are dropped — you can't sign a partner you can't contact.

#### 📚 Content focus — *research what those creators are saying*

For market, trend, and competitor research. You care **what's being said and by whom**.
Ranks creators (or individual videos) by **topical relevance** — how richly they match your topic — so a
small, focused channel can outrank a big generic one. Optionally turn on **Deep read** to transcribe and
summarize each top creator's latest video **in English**, so you can read the substance without watching hours of video.

### How it works

1. **You define the topic** with keyword sets — Set A (subject) **AND** Set B (angle) **AND** an optional Set C (refine). Synonyms within a set count as one; the sets combine into an AND-gate so results are on-topic, not just keyword-adjacent.
2. **Localizes your keywords** to each platform's market language (Chinese for Bilibili/Douyin) — technical terms and brand names are kept as-is.
3. **Searches video metadata at scale** (titles, tags, channel, views, dates) — no transcription at this stage, so discovery stays fast and cheap.
4. **Ranks the creators** by the profile your Focus selects — **relevance** for Content, **reach + engagement + reachability** for Audience.
5. **Builds the dossier** — subscribers, engagement, tier, sponsored-post estimate, and best-effort contacts (websites, socials, emails, China WeChat/QQ/Weibo).
6. **Hands off** the shortlisted videos to the **Lexonia Video Transcriber & Translator** for full transcripts, summaries, and translations — or does it inline via **Deep read**.

### Ask your AI assistant (Claude / ChatGPT via Apify MCP)

Natural requests this Actor answers:

- "Find the top creators and channels about \[topic]."
- "Build a ranked influencer shortlist for \[topic] with contact details." *(Audience focus)*
- "Who are the biggest Bilibili / Douyin creators on \[topic] in China?"
- "Research who's driving \[topic] on Chinese video platforms." *(Content focus)*
- "Which YouTube channels own the \[topic] niche?"

### Input

| Field | Description |
|---|---|
| `topic` | Plain-English description of what you're looking for. |
| `keywordSetA` / `keywordSetB` (required) / `keywordSetC` (optional) | **The combined match.** Set A (subject) is combined with Set B (angle) into compound search phrases, and every result must contain **A AND B AND C**. List synonyms within a set — any one counts. Adding facets narrows & refines the funnel. |
| `platforms` | `youtube`, `bilibili`, `douyin`. |
| `marketLanguage` | Language to search in — `auto` matches each platform's market. |
| `localizeKeywords` | Translate keywords to the market language (keeps technical terms). |
| `maxResultsPerKeyword` | How deep to search per keyword. |
| `includePopularityInRanking` | Factor audience size into the ranking (default off — pure topical). |
| `enrichContacts` / `enrichGoogleBusiness` | Optional deeper contact enrichment. |
| `topNContentDigest` | **Deep read** — for your top N creators, transcribe + summarize their latest video in English so you can read what they actually say (adds transcription cost per video). 0 = off. |
| `maxChannels` | Size of the returned shortlist (default 30). You're only billed for channels returned. |
| `outputFormats` | `json`, `csv`, `markdown`. |

> **How search works.** Set A × Set B are combined into compound search phrases, and every result must
> contain **A AND B (AND C)** — so adding facets *narrows and refines*. From the thousands of videos
> scanned, channels are ranked by **cumulative match strength + viewership + recency** and cut to your top-N.

### Example configurations (copy, paste, run)

> The input opens **pre-filled with a working trucking example** — just edit the facets and hit Start.
> Below are common recipes for each use case.

**1 · Discover the top creators on a topic** *(the default)*

```json
{ "topic": "US owner-operator trucking",
  "keywordSetA": ["owner operator", "OTR", "over the road"],
  "keywordSetB": ["dispatch", "load board", "business"],
  "platforms": ["youtube"], "maxChannels": 50 }
```

**2 · China-market research** *(Chinese creators, you type English)*

```json
{ "topic": "China EV reviewers",
  "keywordSetA": ["electric car", "EV", "new energy vehicle"],
  "keywordSetB": ["review", "test drive", "hands-on"],
  "platforms": ["bilibili", "douyin"], "marketLanguage": "auto", "maxChannels": 50 }
```

**3 · Find the relevant videos INSIDE one creator's channel**

```json
{ "topic": "cold calling techniques",
  "keywordSetA": ["cold call", "cold calling"],
  "keywordSetB": ["objection", "script", "prospect", "technique", "tips"],
  "channelUrls": ["https://www.youtube.com/@JeremyMiner"],
  "outputLevel": "videos" }
```

**4 · Same topic across a LIST of creators**

```json
{ "topic": "cold calling techniques",
  "keywordSetA": ["cold call", "cold calling"],
  "keywordSetB": ["objection", "script", "prospect"],
  "channelUrls": ["https://www.youtube.com/@JeremyMiner", "https://www.youtube.com/@channel2"],
  "outputLevel": "videos" }
```

**5 · Filter by size** *(only creators with real reach)*

```json
{ "topic": "home espresso reviewers",
  "keywordSetA": ["espresso", "espresso machine"],
  "keywordSetB": ["review", "unboxing", "setup"],
  "platforms": ["youtube"], "minFollowers": 50000, "minViews": 100000 }
```

### Output

- **Dataset** — the ranked creator shortlist (one row per creator), with the columns defined below.
- **Key-value store** — `results.json` / `results.csv` / `results.md`, plus **`handoff-urls.json`** (the top video URLs, ready to paste into the transcriber).

#### Output fields — what each column means

| Column | What it means | How to read it |
|---|---|---|
| **# / rank** | Position in the ranked shortlist. | 1 = the best fit for your goal (relevance in Content focus, partnership value in Audience focus). |
| **Score** | The overall 0–100 ranking score. | Higher = stronger overall match. It blends the sub-scores below (the mix depends on Content vs Audience focus). |
| **Platform** | Where the creator was found. | `youtube`, `bilibili` (B站), or `douyin` (抖音). |
| **Creator** | Channel / creator name. | — |
| **Subscribers** | Follower / subscriber count. | Reach. Blank for some China creators whose count isn't public (they're kept, not dropped). |
| **Engagement %** | Likes ÷ views on their best on-topic video, as a %. | **Higher = a more active, responsive audience.** Often matters more than raw size — a 5% audience usually beats a 1% one. |
| **Tier** | Audience-size band from subscribers. | Emerging (<5k) · Nano (5k+) · Micro (15k+) · Mid-tier (50k+) · Macro (200k+) · Mega (500k+). Quick way to filter for the size you want. |
| **Est. sponsored post** | Rough USD range for one sponsored video (see note below). | A **budgeting & negotiation starting point, not a quote.** Wide range = engagement is lifting the ceiling; narrow/low = you're paying mainly for size. |
| **On-topic videos** | How many of the creator's videos matched your keywords. | More = the topic is a core part of what they do, not a one-off. |
| **Relevance** | How richly they match your keyword sets (A AND B AND C), title-weighted. | The topical-fit sub-score. Leads the ranking in **Content focus**. |
| **Reach / Engagement / Activity** | Audience sub-scores: size, interaction, posting consistency. | Lead the ranking in **Audience focus** (partnership targeting). |
| **Reachability** | How contactable they are (Audience focus). | Higher = a direct channel exists (email > WeChat/QQ > website > social). In Audience focus, creators with no contact are dropped. |
| **Email / WeChat / Website / Socials / Phone** | Real contact details pulled from the creator's public profile/bio. | Your outreach starting points. China creators surface WeChat/QQ/Weibo instead of email. Availability varies — best-effort. |
| **Also on / onPlatforms** | Other platforms the same creator appears on. | Cross-platform presence — a signal of a bigger, multi-channel operation. |
| **Matched keywords** | Which of your keywords the creator hit. | Shows *why* they ranked — useful for sanity-checking relevance. |
| **Channel URL** | Link to the creator's channel. | — |
| **Sample videos** | The top matching video URLs for this creator. | Paste straight into the **Lexonia Video Transcriber** to read what they actually say, in English. |

#### Est. sponsored post — how to read it

A rough dollar range for what **one sponsored video** from that creator might cost — a starting point for budgeting and negotiation, **not a quote**. Computed from real data, no AI:

- **Low** = `(subscribers ÷ 1,000) × $8` · **High** = `(subscribers ÷ 1,000) × ($18 + engagement% × 2)`

Two real numbers drive it: **audience size** sets the base, **engagement %** lifts the ceiling (an engaged audience is worth more per view).

**Reading the range:**

- **Wide range** = high engagement — the creator can likely command the top figure.
- **Narrow / low range** = big reach but soft engagement — you're paying for size; negotiate toward the low half.
- **Compare cost per *engaged* viewer, not sticker price** — a Macro creator at 5% often beats a Mega at 1% for the same spend.

**Using it:** sum the low ends to budget a shortlist before you email anyone; sanity-check a creator's rate card (3× the high end? ask what justifies it — below the low end? that's a deal); rank by value using the **Engagement %** and **Tier** columns.

> ⚠️ It's a **YouTube** rule-of-thumb. It does **not** account for platform (YouTube runs 2–5× IG/TikTok/X), format (a 60-sec mention ≠ a dedicated review), niche (finance/tech/B2B charge premiums), actual views, or usage/exclusivity rights (paid ad rights can double the fee). Treat each figure as **"a reasonable opening offer,"** then let those factors move it.

#### Tier — how it's derived

Subscriber bands, from real counts: Emerging (<5k) · Nano (5k+) · Micro (15k+) · Mid-tier (50k+) · Macro (200k+) · Mega (500k+).

### Use cases

- **Market & trend research** — find who's driving a topic on China's platforms, in Chinese.
- **Opinion-leader / influencer discovery** — a ranked, contactable shortlist (turn on popularity for reach-weighted ranking).
- **Competitor & content mapping** — see the channels that own a niche.
- **Pipeline** — feed the shortlist into the Lexonia transcriber for full content intelligence.

> Augmented contact data availability varies by platform and country; some markets (notably China)
> expose limited or no public contact information — augmentation is best-effort.

***

Built by **Lexonia Group LLC**. Companion to the **Lexonia Video Transcriber & Translator**.

# Actor input Schema

## `estimateOnly` (type: `boolean`):

ON (default): the Actor calculates the expected cost range and time, saves ONE 'estimate' record, and exits in seconds — nothing is searched or charged. Review the cost, then set this OFF to fetch real results. NOTE FOR AI ASSISTANTS (Claude/ChatGPT via MCP): ALWAYS run this Actor with estimateOnly=true FIRST, show the user the returned estimatedCostUsd range, and only run again with estimateOnly=false after the user approves — so they never run over budget.

## `focus` (type: `string`):

'Content' (default) ranks by topical relevance — best for research and 'what are they saying'. 'Audience' ranks creators as PARTNERSHIP targets — a big, ENGAGED, on-topic, reachable audience (reach + engagement lead; contacts prioritized) — best for sponsorships & creator agreements.

## `topic` (type: `string`):

Plain-English description of the creators you want to find (e.g. 'US owner-operator trucking', 'home espresso reviewers', 'China EV unboxers'). Used to guide content-relevance scoring.

## `keywordSetA` (type: `array`):

Facet 1 of 3 — WHAT the content is about. Put each phrase as its OWN entry (click + Add). Entries in a set are SYNONYMS — a video needs just ONE of them (Set A = 'owner operator' OR 'OTR' OR 'over the road'). The rule across sets is AND: a result must match Set A AND Set B (AND Set C). ▶ Example: Set A = owner operator | OTR | over the road.

## `keywordSetB` (type: `array`):

Facet 2 of 3 — the ANGLE / kind of content. Each phrase its own entry; entries are SYNONYMS (any ONE counts). A result must contain a Set A term AND a Set B term. ▶ Example: Set B = dispatch | load board | business → so 'owner operator' AND 'dispatch' must both appear.

## `keywordSetC` (type: `array`):

Facet 3 of 3 — an OPTIONAL extra requirement. Each phrase its own entry; any ONE counts. If filled, a result must ALSO contain one of these (A AND B AND C). Leave empty for A AND B only. ▶ Example: Set C = beginner | profit → keeps only beginner/profit-focused owner-operator-dispatch videos.

## `platforms` (type: `array`):

Which platforms to search: YouTube (Western) and China's Bilibili & Douyin. Discovered videos hand straight over to the Lexonia Video Scrape transcriber.

## `marketLanguage` (type: `string`):

The language to actually search in. Keywords are rendered into this language so the search hits the target market's local content — e.g. Chinese for Bilibili/Douyin. 'auto' picks the natural language of each selected platform's market.

## `channelUrls` (type: `array`):

Optional. Paste channel/creator URLs (YouTube, Bilibili space, or Douyin user) to search WITHIN those channels instead of discovering across a platform — e.g. pull only the cold-calling videos on one creator's channel, or across a list of creators. Leave empty for normal topic discovery. The A AND B AND C match still applies.

## `outputLevel` (type: `string`):

CONTENT FOCUS. 'Channels' (default) = a ranked shortlist of CREATORS (ranked on key-phrase match + recency + consistency + reach). 'Videos' = the individual matching CLIPS (ranked on key-phrase match + recency + views — same key phrases, minus the per-creator consistency). In AUDIENCE focus this is ignored — you always get creators.

## `maxChannels` (type: `integer`):

The curated shortlist — the top-N ranked creators the engine refines the whole search down to (e.g. top 50 out of thousands scanned). Lower = tighter & cheaper; higher = broader. Set 0 to return all.

## `outputFormats` (type: `array`):

Files to save. The dataset always holds the full person-centric records. CSV & Markdown carry the full dossier (reach, engagement, contacts incl. WeChat, cross-platform presence).

## `minFollowers` (type: `integer`):

Drop channels below this subscriber count. Channels with unknown counts (e.g. some China creators) are kept.

## `minViews` (type: `integer`):

Drop channels whose best on-topic video has fewer than this many views. Leave 0 for no view filter.

## `excludeKeywords` (type: `array`):

Hard-drop creators whose content matches these (e.g. 'box truck', 'hotshot').

## `includePopularityInRanking` (type: `boolean`):

Content focus only. OFF (default): ranking is purely topical, so a small focused channel can outrank a big generic one. ON: also weight audience size. (In Audience focus, reach is already a lead factor, so this is not needed.)

## `requireContact` (type: `boolean`):

Audience focus only. ON (default): a creator we can't reach (no email, WeChat/QQ/Weibo, website, or social) is nixed — you can't sign a partner you can't contact. Turn OFF to keep uncontactable creators (flagged) — useful for China where contacts are hard and you'll hunt them manually.

## `enrichContacts` (type: `boolean`):

Optional. Crawl the discovered websites of top channels for emails/phones. Adds time and can pull sponsor/reference contacts, so it's off by default in Content focus (Audience focus runs it automatically).

## `enrichGoogleBusiness` (type: `boolean`):

Optional. For owners that are LOCAL BUSINESSES, look them up on Google Maps to attach phone, address, website, and email. Best for local-business verticals (med spa, salon, dojo…); name→listing matching is fuzzy for pure influencers. No China (Bilibili/Douyin) coverage.

## `topNContentDigest` (type: `integer`):

CONTENT FOCUS ONLY (ignored in Audience focus — there you want who they REACH, not what they say). For the top N creators, transcribe + summarize their latest video in English so you see what they're actually saying. Transcription cost per video (YouTube ~cents; a 1-hour China video ~a few $). 0 = off.

## `digestSummaryLanguages` (type: `array`):

If deep read is on, summarize each creator's videos in these languages.

## `digestTranslateLanguages` (type: `array`):

If deep read is on, also produce a full translation of each creator's recent video in these languages (useful for Bilibili/Douyin creators).

## `localizeKeywords` (type: `boolean`):

ON (default): your English/source keywords are translated into the search language above, while non-translatable technical and brand terms are kept as-is (Docker, API, LLM, GitHub, DeepSeek…). OFF: keywords are used exactly as typed (use this if you've already entered them in the target language, or they're pure technical terms).

## `preserveTerms` (type: `array`):

Optional. Technical/brand terms to leave in their original form during keyword translation (common ones like API, LLM, Docker are auto-preserved). Add product names or acronyms specific to your topic.

## `maxResultsPerKeyword` (type: `integer`):

How many raw results to pull per keyword/phrase before filtering. Higher = wider net + more coverage, but more scraping cost. Lower = leaner & cheaper.

## `maxSubActorSpendUsd` (type: `number`):

Optional safety cap in USD (decimals allowed, e.g. 0.5). If the estimated scraping cost for a run exceeds this, the run stops adding platforms. Leave blank for no cap.

## Actor input object example

```json
{
  "estimateOnly": true,
  "focus": "content",
  "topic": "US owner-operator trucking",
  "keywordSetA": [
    "owner operator",
    "OTR",
    "over the road"
  ],
  "keywordSetB": [
    "dispatch",
    "load board",
    "business"
  ],
  "keywordSetC": [],
  "platforms": [
    "youtube"
  ],
  "marketLanguage": "auto",
  "channelUrls": [],
  "outputLevel": "channels",
  "maxChannels": 50,
  "outputFormats": [
    "json",
    "csv"
  ],
  "minFollowers": 5000,
  "minViews": 0,
  "excludeKeywords": [],
  "includePopularityInRanking": false,
  "requireContact": true,
  "enrichContacts": false,
  "enrichGoogleBusiness": false,
  "topNContentDigest": 0,
  "digestSummaryLanguages": [
    "English"
  ],
  "digestTranslateLanguages": [],
  "localizeKeywords": true,
  "preserveTerms": [],
  "maxResultsPerKeyword": 50
}
```

# 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 = {
    "topic": "US owner-operator trucking",
    "keywordSetA": [
        "owner operator",
        "OTR",
        "over the road"
    ],
    "keywordSetB": [
        "dispatch",
        "load board",
        "business"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lexonia/lexonia-video-intel").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 = {
    "topic": "US owner-operator trucking",
    "keywordSetA": [
        "owner operator",
        "OTR",
        "over the road",
    ],
    "keywordSetB": [
        "dispatch",
        "load board",
        "business",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("lexonia/lexonia-video-intel").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 '{
  "topic": "US owner-operator trucking",
  "keywordSetA": [
    "owner operator",
    "OTR",
    "over the road"
  ],
  "keywordSetB": [
    "dispatch",
    "load board",
    "business"
  ]
}' |
apify call lexonia/lexonia-video-intel --silent --output-dataset

```

## MCP server setup

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

```

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/6HPl3UI9t5bcTN1ud/builds/udbO7WO9qWbg5GKoH/openapi.json
