tracking-competitor-social-media-growth

Tracks and compares competitor follower growth across social platforms using apidojo's scrapers on Apify. Triggers when the user asks to: compare competitor social media growth, tr…

API Dojo

@apidojo-io

Install

$ openclaw skills install @apidojo-io/tracking-competitor-social-media-growth

Tracking Competitor Social Media Growth

Pulls current follower counts and engagement metrics for competitor accounts across Twitter/X, TikTok, and Instagram. Creates a side-by-side competitive snapshot. Designed to be run on a schedule for ongoing tracking.

Prerequisites

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

Inputs

ParameterTypeRequiredDefaultNotes
startUrlsarrayOptional[]Twitter profile or tweet URLs
twitterHandlesarrayOptional[]Twitter usernames (without @)
twitterUserIdsarrayOptional[]Twitter user IDs
getFollowersbooleanOptionalfalseExtract follower lists
getFollowingbooleanOptionalfalseExtract following lists
getRetweetersbooleanOptionalfalseExtract retweeters of a tweet URL
includeUnavailableUsersbooleanOptionalfalseInclude unavailable/suspended users
maxItemsnumberOptionalUnlimitedMaximum users to return
customMapFunctionstringOptional—JavaScript function to transform each output object

Workflow

Progress:
- [ ] Step 1: Define competitors and target platforms
- [ ] Step 2: Scrape Twitter/X profiles
- [ ] Step 3: Scrape TikTok profiles
- [ ] Step 4: Scrape Instagram profiles
- [ ] Step 5: Compile cross-platform comparison

Step 1: Clarify Parameters

Ask the user for:

  • Competitor handles per platform — e.g.:
    • Twitter: @competitorA, @competitorB
    • TikTok: @competitorA, @competitorB
    • Instagram: @competitorA, @competitorB
  • Platforms to analyze (Twitter, TikTok, Instagram — one or all)
  • Include your own account? (default: yes — for direct benchmarking)

Step 2: Scrape Twitter/X Profiles

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

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

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

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~twitter-user-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~twitter-user-scraper"
Input:
{
  "usernames": ["[handle1]", "[handle2]", "[handle3]", "[your_handle]"]
}

REST API fallback:

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

Key fields to extract: followersCount, followingCount, statusesCount, createdAt, verified.

Step 3: Scrape TikTok Profiles

If Apify MCP is available:

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

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]"]}'

Key fields: fans (followers), heart (total likes), video (video count), diggCount.

Step 4: Scrape Instagram Profiles

If Apify MCP is available:

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

REST API fallback:

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

Key fields: followersCount, followsCount, postsCount, biography.

Step 5: Compile Report

Calculate engagement rate per account per platform. Compare all on one view.

Output Format

# Competitive Social Media Analysis
Competitors: [N] | Platforms: [list] | Date: [DATE]

## Cross-Platform Follower Summary

| Competitor | Twitter Followers | TikTok Followers | Instagram Followers | Total Reach |
|------------|-------------------|------------------|---------------------|-------------|
| [Your Brand] | [N]             | [N]              | [N]                 | [N]         |
| Competitor A | [N]             | [N]              | [N]                 | [N]         |
| Competitor B | [N]             | [N]              | [N]                 | [N]         |

## Platform-by-Platform Analysis

### Twitter/X
| Account | Followers | Following | Tweets | Eng. Rate | Verified |
|---------|-----------|-----------|--------|-----------|----------|
| @[handle] | [N]     | [N]       | [N]    | [X.X%]    | [Y/N]    |
**Leader:** [handle] with [N] followers | **Most engaged:** [handle] at [X.X%]

### TikTok
| Account | Followers | Total Likes | Videos | Avg Views |
|---------|-----------|-------------|--------|-----------|
| @[handle] | [N]     | [N]         | [N]    | [N]       |
**Leader:** [handle] | **Most viral:** [handle]

### Instagram
| Account | Followers | Posts | Avg Likes | Eng. Rate |
|---------|-----------|-------|-----------|-----------|
| @[handle] | [N]     | [N]   | [N]       | [X.X%]    |

## Key Takeaways
1. [Competitor] is winning on [platform] — [brief insight]
2. [Your brand] has [strength/gap] on [platform]
3. Biggest opportunity: [specific platform + action]

Setting Up Recurring Tracking

To track growth over time, run this skill weekly and store the output. The delta between runs shows growth velocity. For automated weekly tracking, use a scheduled task to run this skill every Monday at 9am.

Troubleshooting

Missing platform handles: Ask the user to provide handles per platform — they often differ from brand name. One platform returns no data: Private accounts or accounts that don't exist on that platform. Confirm handle accuracy.

Top skills in this category

Free Ride - Unlimited free AI

@shaivpidadi

Manages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates opencla...

49172k

SuperDesign

@mpociot

Expert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.

19442k

Video Frames

@steipete

Extract frames or short clips from videos using ffmpeg.

13359k

Playwright (Automation + MCP + Scraper)

@ivangdavila

Automates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).

13043k

YouTube

@byungkyu

YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a YouTube connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a YouTube action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with YouTube examples; they add no YouTube capability - YouTube is not an event source, a trigger cannot read YouTube data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).

14529k