Search TikTok e-commerce trending promotional video leaderboards via Kalodata and query detailed data for specific videos. Supports viewing high-ranking/high-view/hot-selling promotional videos by region, currency, language, and date range, and using videoId to retrieve views, likes, comments, shares, revenue, GPM, and advertising metrics. Trigger when users mention TikTok video search, TikTok video ranking, TikTok viral video chart, TikTok video detail, video analytics, kalodata video search/detail. Even if the user does not explicitly mention "kalodata", trigger this skill whenever their need involves viewing TikTok trending promotional video leaderboards or detailed sales and engagement data for a specific TikTok video.
npx skills add https://github.com/nexscope-ai/nexscope-ecommerce-skills --skill ecommerce.tiktok-video-analytics
This skill supports a two-step TikTok video workflow via the Kalodata data source:
videoId.Use the search endpoint when the user wants rankings, hot videos, viral videos, or video discovery. Use the detail endpoint when the user already has a videoId or has selected one video from a ranking result.
The video ranking endpoint returns a paginated leaderboard filtered by region, dateRange, language, currency, and optional sortField. Each video row includes identity, engagement, revenue, ad-performance, and creator fields. Results are paginated with pageNumber (1-5) and pageSize (5-100).
The video detail endpoint fetches one shoppable TikTok video by videoId. It returns the video's engagement metrics, monetization metrics, advertising metrics, creator identity, region, duration, and linked product count. The videoId usually comes from the ranking response field video_id.
Both endpoints may reflect a statistical delay (T+1). See references/api.md for full request and response details.
Ranking rows include:
| Field | Description |
|-------|-------------|
| video_id | Video unique ID; pass this as videoId for detail lookup |
| video_title | Video title / caption |
| views | Video view count |
| digg_count / comment_count / share_count | Likes, comments, and shares |
| revenue | Total GMV in the requested currency |
| revenue_growth_rate | Revenue growth rate (%) |
| ad / ad_view_ratio / ad_revenue_ratio / ads_roas | Ad and advertising performance fields |
| belonged_creator_id / belonged_creator_handle | Creator identity |
| creator_debut | Creator debut date |
Detail rows additionally include:
| Field | Description |
|-------|-------------|
| video_region | Video region; may be empty |
| sales_volumn | Sales volume; field is spelled volumn |
| video_gpm | GMV per mille (revenue per 1000 views) |
| ads_views / ad_cpa / ads_period | Ad views, CPA, and ad running period |
| duration | Video duration in seconds |
| product_number | Number of products linked in the video |
Video ranking (/kalodata/video/rank)
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| region | string | No | Market region code, e.g. US |
| dateRange | string | No | Time window, e.g. last7Day, last30Day |
| pageNumber | integer | No | Page number, 1-5 |
| pageSize | integer | No | Page size, 5-100 |
| language | string | No | Response language, e.g. zh-CN, en-US |
| currency | string | No | Currency for monetary metrics, e.g. USD |
| category_id | string | No | Category ID filter |
| shop_id | string | No | Shop ID filter |
| creator_id | string | No | Creator ID filter |
| product_id | string | No | Product ID filter |
| revenue_range | string | No | GMV range because response field revenue is total GMV; examples: 1-100, >1000, <100 |
| followers_range | string | No | Creator follower range filter |
| ads_roas | number | No | Advertising ROAS filter |
| sortField | object | No | GMV sorting specification, e.g. {"field":"revenue","type":"DESC"} |
Video detail (/kalodata/video/detail)
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| videoId | string | Yes | TikTok video ID from ranking field video_id or a TikTok video URL |
| region | string | No | Market region code, e.g. US |
| dateRange | string | No | Time window, e.g. last7Day, last30Day |
| language | string | No | Response language, e.g. zh-CN, en-US |
| currency | string | No | Currency for monetary metrics, e.g. USD |
POST /kalodata/video/rank or POST /kalodata/video/detail (see references/api.md for full parameters/response/error codes)python scripts/video_rank.py '<JSON parameters>' [--inline] or python scripts/video_detail.py '<JSON parameters>' [--inline]Output strategy (default script behavior):
<cwd>/nexscope/<YYYY-MM-DD>/<session>/data/nexscope-kalodata-tiktok-video-<timestamp>.json (<cwd> is the working directory at script execution time, i.e., the current project directory in Claude Code; <session> is taken from the SESSION_ID environment variable, auto-grouped by user task; do not write to /tmp, error if the current directory is not writable)total/costToken, length of the largest list field + first 3 samples)--inline to force full output to stdout (still writes to disk)Data reading tip: Check the summary first to see if sufficient; for specific fields, prefer using jq or ConvertFrom-Json to extract from the saved JSON file on demand, avoiding loading the entire JSON into context.
For the research HTTP response, require a numeric outer code equal to 0 before using data. Nonzero codes are platform failures; display outer msg without interpreting its wording as a retry instruction. Nexscope preserves upstream messages and translates Chinese to English; successful responses may have msg: null. HTTP 200 alone and nested business code / status do not replace the platform check. See references/api.md for response paths and task-specific states.
Set NEXSCOPE_API_KEY. Visit https://www.nexscope.ai/help/skills-external-access?co-from=skillNS to manage credits.
1. Browse top TikTok videos in the US
{"region":"US","dateRange":"last7Day","pageSize":10,"pageNumber":1,"currency":"USD"}
2. Fetch one video's detail
{"videoId":"7659161409279806734","region":"US","dateRange":"last7Day","currency":"USD"}
3. Discovery-to-detail workflow
Run `video_rank.py` first, choose a row's `video_id`, then pass that value as `videoId` to `video_detail.py`.
dateRange, region, and currency when showing metrics.sales_volumn.video_gpm is GMV per mille; do not display it as a percentage.sortField.videoId; it cannot find a video by title alone.data.length.pageNumber is limited to 1-5 and pageSize is limited to 5-100.Applicable -- TikTok video ranking or video detail lookup:
| User Says | Scenario |
|-----------|----------|
| "TikTok video ranking", "TikTok video leaderboard" | Video ranking lookup |
| "TikTok trending videos", "TikTok viral videos" | Top or viral video ranking |
| "TikTok promotional video ranking", "top TikTok videos" | Region-specific shoppable video leaderboard |
| "TikTok video detail", "TikTok promotional video data" | Single video detail lookup |
| "Video views", "video engagement data", "video GPM" | Video engagement or monetization metrics |
| "kalodata video search/detail" | Direct data source reference |
Not applicable -- Needs beyond TikTok videos:
Take nexscope-ai/ecommerce.tiktok-video-analytics from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.