1. Introduction
One-sentence positioning: A recommendation tool for viral articles with 10w+ reads on official accounts. It continuously collects over 1,000 official account articles with 10w+ reads across the entire network every day, and supports category-based queries by field, intelligent analysis of viral patterns, and HTML report export.
Core value:
- Massive collection: Collects over 1,000 articles with 10w+ reads every day, covering 22 standard categories
- Intelligent analysis: Content analysis based on four dimensions (content overview, hot topic utilization, dissemination effect, achieved results)
- Visual reports: Automatically generates HTML pages in official account style, supports PDF export
Target users: Official account operators, content creators, self-media editors, marketing operators, viral article researchers.
2. Features
Core functions
| Function module | Capability description | Core value |
|---|---|---|
| 📊 Viral article ranking push | Get the TOP 50 articles with 10w+ reads across all fields | Quickly understand the trends of viral official account articles |
| 🏷️ Field category query | Independent queries for 22 standard categories | Precisely locate viral articles in vertical fields |
| 📝 Four-dimensional content analysis | Content overview/hot topic utilization/dissemination effect/achieved results | In-depth analysis of the success factors of viral articles |
| 📈 Viral pattern analysis | Title characteristics/content themes/publishing time/account characteristics | Extract reusable methodologies for viral hits |
| 🎨 HTML visual reports | WeChat green theme design, supports PDF export | Convenient for sharing, archiving, and data reporting |
| ⏰ Subscription push | Scheduled push every day at 19:30 | Continuous tracking, never miss a viral article |
Special highlights
- Intelligent time judgment: Automatically calculates the correct query interval based on the data update time (18:30)
- Pagination preview mechanism: First displays the first 10 items, and displays the full 50 items on demand
- Four-dimensional analysis: Each article is deeply analyzed from four aspects: content overview, hot topic utilization, dissemination effect, and achieved results
- HTML pagination prevention: PDF export uses an adaptive single-page mode, fully displaying all content
3. One-click installation
Authentication
Get API Key
Please go to Redfox Hub to get the API KEY
Configure API Key
Option 1: Taking OpenClaw as an example, add REDFOX_API_KEY to ~/.openclaw/openclaw.json. Part of the content is as follows:
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
Option 2: Terminal configuration:
export REDFOX_API_KEY="ak_xxxx..."
Dependency installation
No additional installation is required; the script uses the Python standard library (urllib.request).
Environment variable configuration
| Variable name | Description | Required |
|---|---|---|
REDFOX_API_KEY |
Redfox API Key | Yes |
4. Usage guide
Basic Usage
Query all-domain 100k+ articles (overall ranking)
After startup, prompt the user: "The skill has loaded successfully. Would you like me to send you the latest 100k+ read articles?"
For overall ranking requests, directly push the latest 100k+ read articles TOP50 (the first preview displays the first 10 items).
Domain keyword query
Enter a specific domain keyword (such as "AI programming", "finance", "healthy eating"), and the system automatically matches 22 standard categories and outputs the TOP10 for that domain.
22 standard categories: Humanities News, Knowledge Encyclopedia, Health and Wellness, Fashion Trends, Food and Dining, LOHAS Living, Travel and Transportation, Humor and Fun, Emotion and Psychology, Sports and Entertainment, Beauty and Body Care, Digest Selections, Wealth and Financial Management, Technology and Digital, Venture Capital and Business, Automotive and Transportation, Real Estate and Housing Market, Career Development, Education and Exams, Academic Research, Corporate Brands, Overall Ranking.
For detailed category generalization mapping rules, see references/category-mapping.md。
Advanced Usage
Standard Execution Process
- User intent recognition: the agent identifies overall ranking requests/domain queries/vague input
- Fetch viral article data: call the
scripts/fetch_hot_articles.pyscript (must be called; generating it yourself is prohibited) - Viral pattern analysis: perform four-dimensional analysis based on actual article data
- Ask about subscription: proactively ask the user whether they need to subscribe to a specific domain
- Generate HTML page: call
scripts/generate_hot_html.pyto generate a visual report - Handle user subscription choice: execute subscription logic according to the user's reply
Script parameter description
python scripts/fetch_hot_articles.py --type "分类名称" --start_date YYYY-MM-DD --end_date YYYY-MM-DD --mode preview --limit 10 --source "公众号10w+阅读文章推荐"
| Parameter | Description | Example |
|---|---|---|
--type |
Standard category name, default "Overall Ranking" | --type "科技数码" |
--start_date |
Start date (required), YYYY-MM-DD | --start_date 2026-05-13 |
--end_date |
End date (required), YYYY-MM-DD | --end_date 2026-05-14 |
--source |
Data source (fixed value) | --source "公众号10w+阅读文章推荐" |
--mode |
Output mode: preview (first 10 items) / full (all) | --mode preview |
--limit |
Number displayed in preview mode | --limit 10 |
--temp_file |
Temporary data file path | --temp_file temp_articles.json |
Time parameter calculation rules (important)
Data update time: every day 18:30 syncs the previous day's data.
Time judgment logic: the agent must automatically calculate the correct query date based on the current time.
| Current time | User asks about | Actual query interval | Reason |
|---|---|---|---|
| < 18:30 | Today's articles | T-2 ~ T-1 | Yesterday's data has not been updated, so query the day-before-yesterday interval |
| >= 18:30 | Today's articles | T-1 ~ T | Yesterday's data has been updated, so query yesterday's interval |
| < 18:30 | Yesterday's articles | T-2 ~ T-1 | Yesterday's data has not been updated, so query the day-before-yesterday interval |
| >= 18:30 | Yesterday's articles | T-1 ~ T | Yesterday's data has been updated |
Default time rule: when the user mentions "recent", "latest", etc. without a clear time, query the past 7 days by default.
Subscription push time parameter: subscription push (every day at 19:30) queries yesterday's (T-1) data.
Typical scenario examples(assuming today is 2026-05-14):
| User asks about | Current time | Actual query interval | Reason |
|---|---|---|---|
| Today's Articles | 11:19 | start_date=2026-05-12, end_date=2026-05-13 | Yesterday's data has not been updated; query the day-before-yesterday range |
| Today's Articles | 19:30 | start_date=2026-05-13, end_date=2026-05-14 | Yesterday's data has been updated; query yesterday's range |
| Yesterday's Articles | 11:19 | start_date=2026-05-12, end_date=2026-05-13 | Yesterday's data has not been updated, but the day-before-yesterday's data has been updated |
| Yesterday's Articles | 19:30 | start_date=2026-05-13, end_date=2026-05-14 | Yesterday's data has been updated |
Time Inconsistency Prompt Rules
Whenever the time the user asks about differs from the time actually queried, a prompt is required:
- User asks about "today's data" but the actual query is yesterday: "We're very sorry 🙏, today's data will only be updated tomorrow. I will query yesterday's 10W+ articles for you, dated xx month xx day."
- User asks about "yesterday's data" but the actual query is the day before yesterday: "We're very sorry 🙏, yesterday's data has not been updated yet. I will query the day-before-yesterday's 10W+ articles for you, dated xx month xx day."
- User asks about a time earlier than the backtracking date: "We're very sorry 🙏, currently we support backtracking up to the past 30 days at most. I will query the time range closest to your needs for you~"
Pagination Display Strategy
- Initial display:
--mode preview --limit 10, show the first 10 items - User requests expansion:
--mode full, show all data - Data does not exceed 10 items: display all directly, no need to ask
- When there are more than 10 items, prompt at the bottom: "There are still X items of data not displayed. Do you need to display all of them?"
Few Articles Prompt Rules
When a certain track has fewer than 10 10w+ articles on a certain day, prompt: "💡 There are relatively few 10w+ articles in the xx track on xx day. You can expand to the past 30 days or take a look at the comprehensive 10w+ articles~"
Output Format
Script output follows this order: data description → article overview table → article details → statistical information.
Article Overview Table:
| 序号 | 标题 | 作者 | 阅读数 |
|------|------|------|--------|
| 1 | [标题](文章链接) | [作者名称](公众号名片链接) | 5w+ |
Article Details Format:
**序号、[标题](文章链接)**
📄 作者:[作者名称](公众号名片链接)
👀 阅读数:阅读数
⏰ 发布时间:发布时间
🔍 内容分析:基于四维度规则的分析内容
---
Four-Dimension Content Analysis Rules
Each article must be analyzed from the following four dimensions:
- Content Overview: concisely summarize the core content of the article
- Hot Topic Utilization: analyze which hot topics or trends the article draws on
- Communication Role: explain the role the content plays (satisfying user needs, triggering emotional resonance, providing practical value)
- Achieved Effect: explain the effect the content achieves (enhancing brand awareness, completing user conversion, promoting information dissemination)
Viral Hit Pattern Analysis
Execute after fully displaying the ranking data, and conduct analysis in four aspects based on the actual article data:
- Title Characteristics: summarize commonalities and highlights of the titles
- Content Themes: analyze topic types and communication value
- Publishing Time: analyze patterns in publishing time periods
- Official Account Characteristics: analyze account types and content positioning characteristics
HTML Page Generation
python scripts/generate_hot_html.py --temp_file temp_articles.json --output "热门文章_榜单.html" --display_count 10
| Parameter | Description |
|---|---|
--temp_file |
Temporary JSON file path (default:temp_articles.json) |
--output |
Output file path |
--display_count |
Number of articles to display, which must match the number displayed in the conversation |
HTML Visual Specifications:
- Primary color:
rgb(0, 179, 84)(WeChat green) - Secondary color:
#0088ff(read count, user name) - For numbers 1-3 use 🥇🥈🥉, for 4 onwards use digits
- The user name can be clicked to jump to the official account card (
https://open.weixin.qq.com/qr/code?username={accountId}) - PDF export: adaptive single-page mode,
pagebreak: { mode: 'none' }
Subscription service
After pattern analysis, proactively ask the user whether they need a subscription:
📬 订阅服务
是否需要订阅具体赛道的账号表现?我们支持:
人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究、企业品牌、总排名
订阅推送 - 每天19点30分推送最新10w+公众号爆文
暂不需要 - 仅本次查询
Command quick reference table
| Scenario | Command example |
|---|---|
| Overall ranking preview | python scripts/fetch_hot_articles.py --type "总排名" --start_date 2026-05-12 --end_date 2026-05-13 --mode preview --limit 10 |
| Overall ranking complete | python scripts/fetch_hot_articles.py --type "总排名" --start_date 2026-05-12 --end_date 2026-05-13 --mode full |
| Domain query | python scripts/fetch_hot_articles.py --type "科技数码" --start_date 2026-05-13 --end_date 2026-05-14 --mode preview --limit 10 |
| Generate HTML | python scripts/generate_hot_html.py --temp_file temp_articles.json --output "榜单.html" --display_count 10 |
5. Usage scenarios
Scenario one: Official account operators getting writing inspiration
Role: Official account editor/operator Need: Check the previous day's 100k+ viral articles every morning, extract viral topics and headline patterns How to use: Enter "Today's Viral Articles" to get TOP50 across all domains + viral pattern analysis Expected benefit: Quickly grasp the day's viral article trends and obtain reusable headline and topic methodologies
Scenario two: Deep content cultivation in a vertical domain
Role: Vertical domain content creator (such as health and wellness, tech and digital) Need: Continuously track viral articles in this domain and understand peers' content strategies How to use: Query the TOP50 in a specific domain, analyze viral patterns, and subscribe to daily push notifications Expected benefit: Precisely benchmark against top content in the same domain and improve your own content competitiveness
Scenario three: Brand marketing content planning
Role: Brand marketing planner Need: Study the spread patterns of official account viral articles and provide reference for brand content production How to use: Query viral article rankings across domains and analyze headline characteristics and spread effects Expected benefit: Master the password to official account content spread and formulate efficient brand content strategies
Scenario four: Research on self-media entrepreneurship directions
Role: Self-media entrepreneur Need: Understand the traffic distribution and viral article characteristics of official accounts in various domains, and choose a suitable entry direction How to use: Continuously query the past 7 days of data in multiple domains, and compare the quantity and quality of viral articles across domains Expected benefit: Make domain choice decisions based on data, and be on the right path from the account startup stage
6. Project architecture
Directory structure
wechat-10w-hot/
├── SKILL.md # 技能描述文件
├── scripts/
│ ├── fetch_hot_articles.py # 爆文数据获取脚本
│ └── generate_hot_html.py # HTML页面生成脚本
└── references/
├── api-spec.md # API接口规范
└── category-mapping.md # 分类泛化映射规则
Tech stack
| Component | Technology | Description |
|---|---|---|
| Scripting language | Python 3 | Use the standard library (urllib.request) |
| Data interface | Redfox API (GET) | https://redfox.hk/story/api/cozeSkill/getWxDataByCategoryAndTime |
| Authentication method | X-API-KEY | Request header authentication |
| Report template | HTML/CSS/JS | WeChat green themed style |
| PDF export | html2pdf.js | Adaptive single-page mode |
Core module description
| Module | Function |
|---|---|
fetch_hot_articles.py |
Retrieve 100k+ popular article data based on category and time, generate a summary table and detail list, and save to a temporary JSON file |
generate_hot_html.py |
Read data from the temporary JSON file, generate an official account-style HTML page, and support PDF export |
api-spec.md |
API Interface Specification Reference |
category-mapping.md |
Category Generalization Mapping Rules Reference |
Resource Index
- Script: see scripts/fetch_hot_articles.py(Purpose: Retrieve 100k+ popular article data by category and time)
- Script: see scripts/generate_hot_html.py(Purpose: Read data from a temporary JSON file and generate a WeChat Official Account style HTML page)
- Reference: see references/api-spec.md(When to read: used when viewing the API interface specification)
- Reference: see references/category-mapping.md(When to read: used when viewing the category generalization mapping rules)
7. FAQ
Installation-related
Q: The script reports the error "REDFOX_API_KEY not found"
A: Please ensure the environment variable has been configured REDFOX_API_KEY, refer to the authentication section above for configuration.
Q: Are Python dependencies required? A: No, the script uses the Python standard library (urllib.request), no additional installation is required.
Usage-related
Q: Why does querying articles for "today" return yesterday's? A: Data syncs the previous day's data every day at 18:30. If you query after 18:30, you can get yesterday's data; if you query before 18:30, you need to use the day-before-yesterday's data. The system will automatically calculate and prompt.
Q: How do I view the complete 50 records of data?
A: After the first preview shows the first 10 records, reply "Show all" or "Yes", and the system will use --mode full to display all 50 records.
Q: How are the user-entered domain keywords matched?
A: The system automatically matches through the category generalization mapping rules, such as "AI" → "Technology & Digital", "weight loss" → "Health & Wellness". See references/category-mapping.md。
Q: The number of articles in the HTML is inconsistent with that in the conversation?
A: Use the --display_count parameter to control the number of items displayed in the HTML, which must match the number actually displayed in the conversation.
Troubleshooting
Q: The query returns empty data? A: Possible reasons: 1) There are no 100k+ articles in that domain within the query time period; 2) The API Key is invalid or expired. The system will suggest viewing the comprehensive rankings or other categories.
Q: Pagination occurs in PDF export?
A: When generating the HTML, pagebreak: { mode: 'none' } and page-break-inside: avoidhave already been configured. If pagination still occurs, please check the html2pdf.js configuration.
Q: The script output is truncated?
A: Make sure to use preview mode for the first display, outputting only 10 records to avoid truncation. When the user needs it, then use full mode to display all.