📝 Overview
Douyin Account Diagnosis helps you quickly understand the operational baseline of a Douyin account. Just provide the account nickname or Douyin ID to obtain the account profile and recent work data with one click, complete a quantitative diagnosis across six dimensions, and output a 100-point comprehensive score, score details, risk warnings, and optimization directions.
Whether you are self-checking account health, evaluating competitor strength, or screening the true quality of partner accounts, you can get a clearly structured diagnostic report within minutes.
✨ Features
Core Features
| Feature Module | Capability Description | Core Value |
|---|---|---|
| One-click Data Retrieval | Enter a nickname or Douyin ID to automatically obtain the account profile and recent work data | No need to manually collect data; check and diagnose instantly |
| Six-dimensional Quantitative Diagnosis | Covers account profile, productivity, interaction, quality, trends, and follower quality | Comprehensive checkup with no blind spots |
| 100-point Comprehensive Score | Calculates a weighted comprehensive score and provides a four-level rating | Understand account performance with one number |
| Risk Warnings | Automatically identifies six types of risks: zombie followers, fake traffic, decline, throttling, posting gaps, and single-post dependence | Discover problems early and avoid pitfalls |
| Recent Work Details | By default, outputs interaction data for all recent works; titles can be clicked to jump directly to the work | Diagnostic conclusions are evidence-based |
Highlights
- Scale-adaptive Benchmark: Scoring benchmarks are tiered by account scale (S super top-tier/A top-tier/B mid-tier/C tail-tier). The same 1.5% interaction rate is considered low for a 50,000-follower account and good for a 6.7 million-follower account, avoiding misjudging large accounts with a single set of absolute thresholds
- Transparent Scoring System: Each score has clear rules and explanations, and the report includes the benchmark line applicable to this account, making the diagnostic process explainable and reviewable
- Automatic Warning Triggers: Abnormal signals are automatically identified and displayed by risk level; thresholds and scoring benchmarks come from the same source and will not contradict each other
- Ready-to-use Report: Output in a standard format, directly usable for team reporting, competitor analysis, or partnership evaluation
🔧 One-click Installation
This skill requires configuration of
REDFOX_API_KEYbefore use (go to Honghu Hub to register and obtain it).
This skill is a standard Skill package and is compatible with all AI Agent platforms that support the Skill mechanism. Choose the platform you use and install it accordingly:
Qoder
- Ensure the Qoder client is installed
- Place the
douyin-account-diagnosisdirectory into your Skills folder - Restart Qoder to use it
OpenClaw / WorkBuddy
- Place the
douyin-account-diagnosisPlace the directory into the Skills directory of OpenClaw or WorkBuddy (usually~/.openclaw/skills/or~/.workbuddy/skills/) - Restart the corresponding client to take effect
Codex / Claude Code
- Place the
douyin-account-diagnosisdirectory into the corresponding Skills directory - Codex default path: under the project root directory
.codex/skills/ - Claude Code default path: under the project root directory
.claude/skills/ - Restart the Agent session to load
Other platforms that support Skills
As long as the platform supports the standard Skill file format (SKILL.md + accompanying resources), place the douyin-account-diagnosis directory into its Skills directory to use it.
📖 Usage Guide
🔑 Authentication
Please configure the API Key before use; you can go to Red Fox Hub to obtain it (format
ak_xxxxxxxx), and configure it through any of the following methods:
- Set the environment variable
REDFOX_API_KEY- Use the command-line parameter
--api-key
Basic Usage
1. Start a diagnosis
Just directly say the account you want to diagnose:
User: Help me diagnose the Douyin account "Juju's Tea Garden Small Animals"
Assistant: Got it! Retrieving the account's data and performing a six-dimension diagnosis, please wait a moment~
2. View the diagnosis report
After the diagnosis is complete, a structured Markdown report is output, including:
- Opening summary sentence (nickname + overall score + rating, understand the conclusion at a glance)
- Basic information table (nickname, Douyin ID, UID, follower count, work count, etc.)
- Six-dimension score table (dimension, score, full score, one-sentence evaluation, highlighting core weaknesses)
- Risk warnings (zombie followers, fake traffic, decline, throttling, posting gaps, single-post dependency, with specific data interpretation)
- Key findings (two groups of points: strengths and weaknesses, each with data evidence)
- Recent works table (publish time, title, likes/comments/shares/total interactions, title as a clickable link)
- Optimization suggestions (arranged by priority, with specific directions based on diagnosis data)
3. Supplementary analysis (optional)
If you need to further understand a certain dimension, you can continue to ask:
User: The interaction health is low, how can it be improved?
Assistant: Based on the weak dimensions and warning information in the diagnosis report, provide targeted optimization suggestions.
Common phrasing quick reference
| Intent | Example phrasing | Effect |
|---|---|---|
| Diagnose by nickname | "Diagnose the Douyin account XX" | Fuzzy-match the nickname and output a complete report |
| Diagnose by Douyin ID | "Analyze this Douyin ID 66456544107" | Exactly match the Douyin ID and output a complete report |
| Account checkup | "Give XX a Douyin checkup" | Output a six-dimension diagnosis report |
| View data | "View XX's Douyin data" | Output the account profile and recent works data |
| Evaluate the account | "Evaluate whether this Douyin account is worth collaborating with" | Output score, rating, and risk warnings |
🔄 Workflow
- Provide the account: enter the Douyin nickname or Douyin ID
- Data retrieval: One-click access to account profile and recent work data
- Six-dimension diagnosis: Calculate scores item by item according to the scoring system
- Output report: Comprehensive score + rating + risk warning + recent work details
- Supplementary analysis: Provide optimization suggestions for weak dimensions (optional)
For the complete execution process, see
references/core_workflow.md, and for detailed scoring rules, seereferences/diagnosis_rules.md
📐 Scoring System
Six-dimension weights
| Dimension | Full score | Weight | Core indicators |
|---|---|---|---|
| Basic account profile | 8 | 10% | Completeness of avatar, bio, regional information, and Douyin ID (gender/age are display-only and not scored) |
| Content productivity | 15 | 15% | Total works, average likes per person, posting frequency |
| Interaction health | 30 | 30% | Follower-to-like ratio, follower interaction rate, interaction structure ratio, average interaction per work |
| Content quality | 20 | 20% | Viral hit rate, median/mean deviation, interaction stability (CV), zero-interaction proportion |
| Content trend | 15 | 15% | Recent trend, concentration of viral hits, latest activity |
| Follower quality | 10 | 10% | Follower scale, follower interaction ratio, likes/followers divergence |
Scale-adaptive benchmark (first determine tier, then score)
| Scale | Number of followers | Interaction rate excellent/good/low line | Viral hit line (likes per post/followers) | Average interaction strong spread line | Total works high-output line | Average likes per person high-efficiency line |
|---|---|---|---|---|---|---|
| S Super head | ≥1 million | 2.0% / 1.2% / 0.6% | 1.0% | 100,000 | 150 posts | 200,000 |
| A Head | 100,000–1 million | 4.0% / 2.5% / 1.2% | 2.0% | 20,000 | 600 posts | 15,000 |
| B Mid-tier | 10,000–100,000 | 6.0% / 4.0% / 2.0% | 5.0% | 5000 | 300 posts | 3,000 |
| C Tail | <10,000 | 8.0% / 5.0% / 2.5% | 10.0% | 1000 | 100 posts | 1,000 |
Why tiering is necessary: Douyin interaction indicators are strongly negatively correlated with follower volume. The same "100,000 interactions per post" is a 200% viral hit for an account with 50,000 followers, but only 1.5% of daily performance for an account with 6.7 million followers. If a single set of absolute thresholds is used to evaluate all scales, super-head accounts will be systematically underestimated.
The reverse is also true:absolute-scale indicators must also scale with the scale. The same 4,852 interactions is 2.16 times the follower count for a tail account with 2,251 followers (above expectations), while for a super-head account with 6.76 million followers it is merely a small fraction. All sub-items that judge high or low by "absolute numerical value" (viral hit rate, average interaction per work, total works, average likes per person) are tiered according to this table, to avoid self-contradictions such as "viral hit rate 100% but interaction judged weak" or "average likes per person 478,631 and 5,114 receiving the same score".
The particularity of total works and average likes per person: the former isabsolute count, while the latter isabsolute scale. High-scale accounts mainly focus on celebrity/premium production, where the cost per post is high and output is naturally low; average likes per person is positively correlated with scale, and the benchmarkincreases. Empirical measurements show that "number of works / number of followers" decreases monotonically with scale (C 0.711% → A 0.24–1.0% → S 0.002–0.003%), confirming the necessity of stratification.
Effective full score and sample sufficiency
There is only one decision principle:When a sub-item is mathematically incalculable, it is not counted in the denominator (neither rewarded nor penalized); when an account truly has no content to evaluate, it is scored at the lowest tier (deducted as usual). The two cannot be conflated.
① Insufficient sample / mathematical degeneracy → exclude from the denominator
| Sub-item | Reason for degeneracy | Threshold |
|---|---|---|
| Median/mean deviation | When n=2, the median always equals the mean, and the deviation is always 0 → necessarily a full score | n ≥ 3 |
| Viral hit concentration | Concentration = max/avg always ∈ [1, n]; when n=2 it is always < 3x → necessarily a full score | n ≥ 5 |
| Interaction stability CV | When n<5, dispersion has no statistical significance and may give conclusions opposite to concentration | n ≥ 5 |
| Posting frequency | "Number of items returned / sample time window"; when the window is only a few days, it is completely unrepresentative | n ≥ 5 |
| Recent trend / decline warning | In a snapshot, newer works have less cumulative interaction, so "recently posted" is read as "declining" | Works at least 3 days old ≥ 4 |
② Ratio is 0/0 (all interactions are 0) → likewise exclude
"Interaction structure ratio" (likes/comments/shares all 0), "median/mean deviation" (deviation 0/0), "viral hit concentration" (max/avg 0/0), and "interaction stability" (CV 0/0) are all mathematically nonexistent. In this case, the related sub-items are not counted in the denominator — this fact is already fully reflected by "zero-interaction share" and "viral hit rate"; recording another 0 score would be double-deducting for the same fact.
⚠️ There is an implementation pitfall:
_cv()returns when the mean is 00.0, which is the same value as "truly completely stable", causing accounts with all-zero interactions to be misjudged as "stable output 5/5". It must be intercepted before calling.
③ No work data / missing fields
- No work data(works is empty): the account has no content performance to evaluate, and all sub-items that depend on works are scored at thelowest tier (0 points),not excluded from the denominator. If excluded, an account with "cleared works" would be inflated because the denominator becomes smaller, masking the real risk; the report will additionally output
ⓘ 无近期作品数据as a reminder to verify. - Missing fields(works missing
createTime, or follower count is 0 causing the ratio denominator to be missing): this is incalculable → not counted in the denominator.
Excluded sub-items are normalized byeffective full score, and the report marks [有效满分X,满分Y] and renders it as (不计入); when the sample is < 5 items, it additionally outputs ⓘ 数据置信度 as a reminder.
Why trends must exclude immature works: the API provides a snapshot of "cumulative interactions as of the collection time", and interaction accumulation is sublinear and concentrated in the first few hours after posting, so newer works necessarily have less cumulative volume. In an empirical test, an account's newest item (0.3 days) had 18,062 cumulative interactions vs. the oldest item (6.3 days) with 38,513 cumulative interactions. By cumulative volume this looks like a "53% plunge", but by daily average it isan increase of about 10x — the conclusions are completely opposite. Therefore trend-type indicators only compareat least 3 days oldworks by the account; when there are insufficient mature samples, they are not counted in the denominator; The decline / traffic-boosting warnings share the same sample, so there will not be a situation where "the score says stable, but the warning says declining".
Why doesn't the "audience label" participate in scoring?: it checks whether the interface returns gender/age. Once the field is returned, it is necessarily valid, so this sub-item always gets full marks and has no discriminating power, and it alsodilutes the deductions for other missing items— two accounts with the same data quality end up with different scores simply because "the interface happened to return gender". Therefore it has been changed todisplay only, not scored, and the account basic profile score has been adjusted from 10 to 8.
Overall score
综合评分 = Σ(维度得分 / 维度有效满分 × 100 × 权重),四舍五入取整
Rounding uses
ROUND_HALF_UP. Python's built-inround()is banker's rounding (round half to even), which is low at .5 boundaries and does not match the "round half up" convention.
Rating standard:
- 85-100: 🟢 High-quality account
- 70-84: 🟡 Normal account
- 50-69: 🟠 Needs optimization
- <50: 🔴 Risky account
⚠️ Risk warnings
| Warning type | Trigger condition | Risk level |
|---|---|---|
| 🚨 Zombie follower warning | Follower interaction rate < the low threshold for this tier and follower count > 50,000 | High risk |
| 🚨 Traffic-boosting warning | Likes/followers ratio > 100 and recent interaction has dropped sharply | High risk |
| ⚠️ Decline warning | Average interaction of recent works < 50% of earlier works | Medium risk |
| ⚠️ Reach-limitation warning | Zero-interaction ratio > 30% | Medium risk |
| ⚠️ Inactivity warning | Latest work is more than 14 days before the collection time | Medium risk |
| ℹ️ Single-work dependency warning | Interaction of the biggest hit > 10 times the average | Low risk |
The zombie follower warning threshold comes from the same source as the "follower interaction rate" scoring benchmark, so there will not be a contradiction where "the interaction rate is judged as good, but the zombie follower warning is also triggered." When there is no warning, output "None".
🔗 API documentation
For API details, see
references/api_reference.md
❓ FAQ
Usage-related
Q: Can both nickname and Douyin ID be searched? A: Yes. Input containing Chinese is fuzzy-matched by nickname, while input that is purely numeric/English is exactly matched by Douyin ID.
Q: Will the report include details of recent works? A: Yes. Recent work details are output by default, including each work's publish time, likes/comments/shares/total interactions, and the title is a clickable link that takes you directly to the corresponding work.
Q: How is the score calculated?
A: First, the account tier (S/A/B/C) is determined by follower count, the six dimensions are scored separately, and then each dimension'svalid full scoreis normalized to a 100-point scale and weighted-summed by weight. For detailed rules for each item, see references/diagnosis_rules.md。
Q: Why does the same interaction rate give a higher score to a large account? A: Because the engagement rate benchmark is tiered. Douyin engagement rates naturally decay with follower size. For an account with 6.7 million followers, 1.55% corresponds to an average of 100K+ interactions per post, which is a good performance; whereas for an account with 50K followers, 1.55% means only a few hundred interactions per post, which is on the low side. The report will list the applicable benchmark for that account at the end, so you can verify it yourself.
Q: Why does a certain dimension show a full score of 10/10 instead of 15? A: It means that dimension has sub-items excluded because the data could not be calculated, and has been normalized byeffective full score, so the account will not be penalized for missing data. There are three exclusion categories: mathematical degeneracy due to insufficient sample size, a ratio of 0/0, and missing fields.
Note: This is different from "the account indeed has no post data" — for the latter, the relevant sub-items are scored at the lowest tier (penalized as usual),not excluded, otherwise it would inflate the score of accounts with "cleared posts."
Q: A certain sub-item shows (不计入) What does it mean?
A: It means the sub-item cannot be calculated under the current data and has been removed from that dimension's denominator (neither rewarded nor penalized). The report will mark it on the dimension title [有效满分X,满分Y]。
Q: Can I diagnose only one dimension? A: The diagnosis outputs all six dimensions by default. If you are only interested in one item, you can follow up on that dimension after receiving the report.
Troubleshooting
Q: What should I do if it says "No information found for this Douyin account"? A: The output will list 4 possible reasons: ① The Douyin ID does not exist or has been deactivated; ② The Douyin ID was entered incorrectly (please check whether it is case-sensitive, whether it is the correct Douyin ID, not a UID or nickname); ③ Not yet indexed (currently only accounts with ≧10K followers are indexed); ④ Apply for indexing (send an email to redfoxdata@proton.me, and after approval you can perform daily scheduled data tracking and analysis).
Q: What should I do if it says insufficient points? A: Go to Red Fox Hub and retry after recharging.
Q: Is it an anomaly if some fields show "Unknown"? A: No. Fields not returned by the platform are treated as "Unknown," handled in two ways:Fields that count toward scoring(province, city, bio, avatar, Douyin ID) will be truthfully reflected in the "Account Basic Profile" score if missing;Display-only fields(gender, age) do not affect any score if missing.
Q: If the report shows "ⓘ No recent post data," does that mean the score is inaccurate? A: It means the API did not return any posts. In this case, the sub-items in Engagement Health / Content Quality / Content Trends that depend on posts are all scored at the lowest tier, so a lower score is expected. Please first check whether the account has cleared its posts, been deactivated, or stopped updating for a long time; if you confirm the account is normal, you can retry later (it may be missing data on the API side).
📚 Reference Documentation
- Detailed execution workflow:
references/core_workflow.md - Detailed scoring rules:
references/diagnosis_rules.md - API documentation:
references/api_reference.md
📂 Directory Structure
douyin-account-diagnosis/
├── SKILL.md # 技能定义(本文件)
├── README.md / README.en.md # 使用说明(中 / 英)
├── references/
│ ├── core_workflow.md # 完整执行流程
│ ├── diagnosis_rules.md # 六维度评分规则 + 量级基准表
│ └── api_reference.md # 接口文档
├── scripts/
│ ├── douyin_diagnosis.py # 主入口:取数 + 六维度评分 + 文本报告
│ └── regression_test.py # 评分模型离线回归测试(不耗 API 额度)
└── tests/
└── fixtures/ # 回归测试用真实抓取数据
├── kaisoso.json # S 超头部 · 少量作品(n=3,期望 ≥90)
├── papijiang.json # S 超头部 · 极少作品(n=2,期望 ≥92)
├── juju.json # A 头部 · 真实低互动 0.07%(须触发僵尸粉预警)
├── xiaobianbian.json # A 头部 · 快照年龄偏差(不得判为衰退)
└── zhongguoyiwei.json # C 尾部 · 均互动为粉丝数 2 倍(不得判互动偏弱)
After changing the scoring rules, be sure to run regression tests(does not consume API quota):
python3 scripts/regression_test.py