Agent Skills

analyzing-competitor-tiktok-content-strategy

Analyzes a competitor's TikTok content strategy and top-performing videos using apidojo's scrapers on Apify. Triggers when the user asks to: see what content a competitor posts on TikTok, analyze which TikTok videos perform best for a brand, reverse-engineer a competitor's TikTok strategy, find out how often a competitor posts and what gets the most engagement, study a brand's TikTok presence, compare TikTok content strategies across competing brands, or find out what topics a competitor covers

Install

npx skills add https://github.com/apidojo-io/apidojo-skills --skill analyzing-competitor-tiktok-content-strategy
SKILL.md

Analyzing Competitor TikTok Content Strategy

Scrapes a competitor's TikTok profile to pull their recent videos, engagement data, posting patterns, and hashtag usage. Reverse-engineers what's working for them so you can learn from it or differentiate against it.

Prerequisites

  • APIFY_TOKEN environment variable set
  • Optional: Apify MCP server installed

Inputs

Parameter Type Required Default Notes
startUrls array Optional [] TikTok URLs — user profiles, hashtags, music pages, search, locations
keywords array Optional [] Search keywords/terms to find posts
sortType string Optional RELEVANCE Sort order for keyword results: RELEVANCE, MOST_LIKED, DATE_POSTED
location string Optional — ISO 3166-1 alpha-2 country code for regional filtering (e.g. US, GB)
maxItems number Optional Unlimited Maximum posts to return across the run
includeSearchKeywords boolean Optional false Add the matched search keyword field to each post
customMapFunction string Optional — JavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Get competitor TikTok handle(s)
- [ ] Step 2: Pull profile stats with tiktok-profile-scraper
- [ ] Step 3: Pull recent videos with tiktok-scraper
- [ ] Step 4: Identify top-performing content patterns
- [ ] Step 5: Deliver content strategy analysis

Step 1: Clarify Parameters

Ask the user for:

  • Competitor TikTok handle(s) — up to 5 accounts (without @)
  • Number of recent videos to analyze (default: 50 — last 2-3 months of content)
  • Analysis focus — top content, posting cadence, hashtag strategy, or all three

Step 2: Pull Profile Stats

Recommended — run_actor.js (handles waiting, output, and file saving automatically):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~tiktok-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~tiktok-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~tiktok-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

APIFY_TOKEN must be set in environment or .env file.

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~tiktok-profile-scraper"
Input:
{
  "usernames": ["[handle1]", "[handle2]"]
}

REST API fallback:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tiktok-profile-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"usernames": ["[handle1]", "[handle2]"]}'

Extract: fans, heart (total likes), video count, following, bio text.

Step 3: Pull Recent Videos

If Apify MCP is available:

Tool: apify:run-actor
Actor: "apidojo~tiktok-scraper"
Input:
{
  "profiles": ["https://www.tiktok.com/@[handle1]", "https://www.tiktok.com/@[handle2]"]
}

REST API fallback:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~tiktok-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "profiles": ["https://www.tiktok.com/@[handle1]"]
  }'

Step 4: Analyze Content Patterns

From the video dataset, extract:

Top 10 videos by play count:

  • Title/caption, views, likes, comments, shares, date, hashtags

Posting frequency:

dates = [video.createTimeISO for each video]
days_covered = max(dates) - min(dates)
posting_rate = total_videos / days_covered (posts per day)

Hashtag analysis: Extract all hashtags across videos. Count frequency. Top 10 = their core hashtag strategy.

Content format patterns: From captions, classify videos into buckets:

  • Educational/Tutorial (contains: "how to", "tips", "learn", numbers like "5 ways")
  • Entertainment/Humor (reactions, trends, dances)
  • Promotional (product mentions, CTAs, "link in bio")
  • Behind-the-scenes (BTS, day-in-life, founder story)
  • UGC/Response (reply to comment format)

Hook patterns in top videos: Look at the first line of captions in the top 10 videos. What do they have in common?

Step 5: Format Analysis

Output Format

# TikTok Content Strategy Analysis: @[COMPETITOR]
Videos analyzed: [N] | Period: [start]–[end] | Date: [DATE]

## Account Overview
Followers: [N] | Total likes: [N] | Videos posted: [N] | Avg likes per video: [N]
Overall engagement rate: [X.X%]

## Posting Pattern
- Frequency: [X] videos per week
- Best-performing days: [day], [day] (based on publish date of top videos)
- Average video length: [X] seconds (if available)

## Top 5 Videos (by Views)
| # | Caption Excerpt | Views | Likes | Comments | Hashtags | Date |
|---|----------------|-------|-------|----------|----------|------|
| 1 | "[caption]"   | [N]   | [N]   | [N]      | [tags]   | [date] |

## Content Mix
| Format | % of Videos | Avg Views |
|--------|-------------|-----------|
| Educational | [X%] | [N] |
| Entertainment | [X%] | [N] |
| Promotional | [X%] | [N] |
| BTS/Story | [X%] | [N] |

## Top Hashtags Used
1. #[tag] — used in [N] of [total] videos
2. #[tag] — [N] videos
3. #[tag] — [N] videos

## Hook Patterns in Top Content
- Top performing hooks start with: [pattern — e.g., questions, numbers, bold claims]
- Example: "[first line of top video]"

## What's Working for Them
1. [Insight 1 — specific, actionable]
2. [Insight 2]
3. [Insight 3]

## Gap / Differentiation Opportunity
[What they're NOT doing that could be a strategic opening]

Troubleshooting

Profile scraper returns no videos: The account may have few posts or have gone inactive. Check the handle. Top videos all very old: Account may have slowed down. Note this in the analysis. Hashtags missing from results: Some captions don't use hashtags. Analyze caption text for topic signals instead.

Related skills

reddit-automationflowkit-labs682KFind Reddit threads where people are genuinely asking for what you offer, then draft short, genuinely helpful replies — disclosing your affiliation honestly and naming your product only when it truly answers the question. Two moves: discovery — scan the right subreddits for real needs (recommendation asks, expressed pain, competitor mentions) and rank the few threads where you can actually help; drafting — write from real experience, respect each community's self-promo rules, and keep a human intwitter-automation101-skills547KAutomate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automatwitter-automationqu-skills289KAutomate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automaseo-auditcoreyhaines31216KWhen the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Use this even if the user just says something vague like "my SEO is bad" or "help wit

Search skills and MCP servers

Fuzzy search across 23,137 skills and servers