# WeChat Channels Competitor Content Analytics Report (`scrupulous_buckler/wechat-channels-competitor-content-analytics`) Actor

Analyze competitor WeChat Channels videos, creators, engagement, breakout topics, title formats, top-video contribution, growth drivers, and evidence-linked content gaps. Up to 100 videos.

- **URL**: https://apify.com/scrupulous\_buckler/wechat-channels-competitor-content-analytics.md
- **Developed by:** [Peng Lyu](https://apify.com/scrupulous_buckler) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / wechat channels competitor content report

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## WeChat Channels Competitor Content Analytics Report

Analyze competitor WeChat Channels videos and turn raw video rows into creator
performance, winning topics, title formats, top-video contribution, sampled
growth drivers, and evidence-linked content gaps.

**Unofficial tool. This Actor is not affiliated with, sponsored by, or endorsed
by Tencent, WeChat, Weixin, or any upstream data provider.**

### This is not another video scraper

The report includes:

- competitor and creator video counts and available engagement
- sample engagement share and average engagement
- the share of each creator's engagement contributed by its top video
- top topics and title patterns by creator
- topic and title-format performance across the full sample
- top and latest video evidence
- comparison with an uploaded, Dataset, or saved previous snapshot
- deterministic explanations of which sampled videos and topics contributed
  to observed changes
- ranked content opportunities combining demand and relative content scarcity
- explicit data-quality and causality warnings

### Data modes

1. **Static preview** — 12 synthetic videos across three example competitors,
   without triggering the $4.99 custom report event.
2. **Live collection** — search topics and resolve competitor accounts through
   the separate `sian.agency/wechat-channels-scraper`.
3. **Apify Datasets** — analyze one or more existing video datasets.
4. **Uploaded videos** — paste customer-owned records and an optional baseline.

Live upstream collection is billed separately by Apify.

### Pricing

One successful live, Dataset, or uploaded-data report costs **$4.99** and
analyzes up to **100 unique videos**. The built-in static preview does not
trigger the custom report event; Apify may still show the small Actor-start or
platform usage charge.
If no usable videos are collected or supplied, no paid report is created.

### Example

```json
{
  "mode": "liveSearch",
  "searchTerms": ["控糖早餐", "低糖食品"],
  "competitorAccounts": ["竞品视频号A", "竞品视频号B"],
  "relatedKeywords": ["价格", "成分", "副作用", "通勤"],
  "maxTotalVideos": 100
}
````

### Important limits

- Engagement is the sum of available likes, comments, favorites, and shares;
  absent counters are not invented.
- Search and account-video coverage can be incomplete.
- “Growth drivers” describe contribution inside the sample, not the WeChat
  recommendation algorithm or causal effects.
- Content-opportunity scores are directional and confidence-adjusted.
- Account names should be exact or distinctive for reliable competitor labels.

### Local validation

```bash
python3 -m unittest discover -s tests -v
```

# Actor input Schema

## `mode` (type: `string`):

Try the report, collect live public videos, analyze Apify Datasets, or upload video records.

## `searchTerms` (type: `array`):

Up to ten category, brand, campaign, problem, or topic terms.

## `competitorAccounts` (type: `array`):

Up to ten exact or distinctive WeChat Channels creator names to collect or label.

## `relatedKeywords` (type: `array`):

Optional product attributes, concerns, use cases, formats, or decision terms.

## `customTopics` (type: `array`):

JSON objects such as {"name":"diabetes-diet","keywords":\["控糖饮食","升糖","主食"]}.

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

Dataset from a WeChat Channels scraper or another compatible export.

## `sourceDatasetIds` (type: `array`):

Optional additional Apify Datasets containing WeChat Channels video records.

## `priorDatasetId` (type: `string`):

Optional earlier snapshot for creator and engagement deltas.

## `uploadedVideos` (type: `array`):

Current videos with title/description, creator, date, engagement and evidence URL fields.

## `previousVideos` (type: `array`):

Optional earlier sample for immediate change analysis.

## `monitorKey` (type: `string`):

Reuse the same name on scheduled runs to compare with the last successful snapshot.

## `rememberBaseline` (type: `boolean`):

Stores a compact private aggregate snapshot for the next run using the same monitor key.

## `resetBaseline` (type: `boolean`):

Starts a new comparison series and replaces the saved baseline after a successful report.

## `maxVideosPerQuery` (type: `integer`):

Limits live upstream results requested for each topic search or competitor account.

## `maxTotalVideos` (type: `integer`):

One $4.99 report analyzes up to 100 unique videos.

## `includeSourceVideos` (type: `boolean`):

Keeps annotated source videos inside the report for audit and export.

## `upstreamMaxChargeUsd` (type: `number`):

Live mode invokes a separate WeChat Channels scraper. This limit applies to each upstream call and is separate from the $4.99 report.

## Actor input object example

```json
{
  "mode": "demo",
  "searchTerms": [],
  "competitorAccounts": [],
  "relatedKeywords": [],
  "customTopics": [],
  "datasetId": "",
  "sourceDatasetIds": [],
  "priorDatasetId": "",
  "uploadedVideos": [],
  "previousVideos": [],
  "monitorKey": "",
  "rememberBaseline": true,
  "resetBaseline": false,
  "maxVideosPerQuery": 25,
  "maxTotalVideos": 100,
  "includeSourceVideos": true,
  "upstreamMaxChargeUsd": 5
}
```

# Actor output Schema

## `report` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrupulous_buckler/wechat-channels-competitor-content-analytics").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("scrupulous_buckler/wechat-channels-competitor-content-analytics").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call scrupulous_buckler/wechat-channels-competitor-content-analytics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrupulous_buckler/wechat-channels-competitor-content-analytics",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WeChat Channels Competitor Content Analytics Report",
        "description": "Analyze competitor WeChat Channels videos, creators, engagement, breakout topics, title formats, top-video contribution, growth drivers, and evidence-linked content gaps. Up to 100 videos.",
        "version": "0.1",
        "x-build-id": "b15GP0KhKjgogicko"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrupulous_buckler~wechat-channels-competitor-content-analytics/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrupulous_buckler-wechat-channels-competitor-content-analytics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrupulous_buckler~wechat-channels-competitor-content-analytics/runs": {
            "post": {
                "operationId": "runs-sync-scrupulous_buckler-wechat-channels-competitor-content-analytics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrupulous_buckler~wechat-channels-competitor-content-analytics/run-sync": {
            "post": {
                "operationId": "run-sync-scrupulous_buckler-wechat-channels-competitor-content-analytics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Data source",
                        "enum": [
                            "demo",
                            "liveSearch",
                            "datasetVideos",
                            "uploadedVideos"
                        ],
                        "type": "string",
                        "description": "Try the report, collect live public videos, analyze Apify Datasets, or upload video records.",
                        "default": "demo"
                    },
                    "searchTerms": {
                        "title": "Market and topic search terms",
                        "type": "array",
                        "description": "Up to ten category, brand, campaign, problem, or topic terms.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "competitorAccounts": {
                        "title": "Competitor creator/account names",
                        "type": "array",
                        "description": "Up to ten exact or distinctive WeChat Channels creator names to collect or label.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "relatedKeywords": {
                        "title": "Terms to measure",
                        "type": "array",
                        "description": "Optional product attributes, concerns, use cases, formats, or decision terms.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "customTopics": {
                        "title": "Optional custom topic clusters",
                        "type": "array",
                        "description": "JSON objects such as {\"name\":\"diabetes-diet\",\"keywords\":[\"控糖饮食\",\"升糖\",\"主食\"]}.",
                        "default": []
                    },
                    "datasetId": {
                        "title": "Primary video Dataset ID",
                        "type": "string",
                        "description": "Dataset from a WeChat Channels scraper or another compatible export.",
                        "default": ""
                    },
                    "sourceDatasetIds": {
                        "title": "Additional video Dataset IDs",
                        "type": "array",
                        "description": "Optional additional Apify Datasets containing WeChat Channels video records.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "priorDatasetId": {
                        "title": "Previous comparable Dataset ID",
                        "type": "string",
                        "description": "Optional earlier snapshot for creator and engagement deltas.",
                        "default": ""
                    },
                    "uploadedVideos": {
                        "title": "Current video records",
                        "type": "array",
                        "description": "Current videos with title/description, creator, date, engagement and evidence URL fields.",
                        "default": []
                    },
                    "previousVideos": {
                        "title": "Previous comparable video records",
                        "type": "array",
                        "description": "Optional earlier sample for immediate change analysis.",
                        "default": []
                    },
                    "monitorKey": {
                        "title": "Stable monitor name",
                        "type": "string",
                        "description": "Reuse the same name on scheduled runs to compare with the last successful snapshot.",
                        "default": ""
                    },
                    "rememberBaseline": {
                        "title": "Remember this run as the next baseline",
                        "type": "boolean",
                        "description": "Stores a compact private aggregate snapshot for the next run using the same monitor key.",
                        "default": true
                    },
                    "resetBaseline": {
                        "title": "Ignore the saved baseline this time",
                        "type": "boolean",
                        "description": "Starts a new comparison series and replaces the saved baseline after a successful report.",
                        "default": false
                    },
                    "maxVideosPerQuery": {
                        "title": "Videos requested per topic or competitor",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Limits live upstream results requested for each topic search or competitor account.",
                        "default": 25
                    },
                    "maxTotalVideos": {
                        "title": "Total videos to analyze (maximum 100)",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "One $4.99 report analyzes up to 100 unique videos.",
                        "default": 100
                    },
                    "includeSourceVideos": {
                        "title": "Include normalized source-video evidence",
                        "type": "boolean",
                        "description": "Keeps annotated source videos inside the report for audit and export.",
                        "default": true
                    },
                    "upstreamMaxChargeUsd": {
                        "title": "Maximum separate upstream charge per call",
                        "minimum": 0.1,
                        "maximum": 20,
                        "type": "number",
                        "description": "Live mode invokes a separate WeChat Channels scraper. This limit applies to each upstream call and is separate from the $4.99 report.",
                        "default": 5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
