1. Introduction
One-sentence positioning: A recommendation tool for original viral articles from official accounts, continuously collecting daily original popular articles from official accounts across the entire network, supporting filtering by category and date, and providing HTML visual reports and daily subscription pushes.
Core value:
- Focus on originality: Focuses on collecting original viral articles from official accounts, distinguishing them from reposted/rewritten content
- Flexible querying: Supports multiple methods such as category query, date query, and time range query
- Complete data output: Displays all articles one by one in the conversation, truncation and omission are prohibited
Target users: Official account content creators, original writers, viral article researchers, and self-media operators.
Important note: This Skill must call scripts to obtain data; AI is prohibited from generating any content on its own.
2. Features
Core functions
| Function module | Capability description | Core value |
|---|---|---|
| 📊 Original viral article rankings | Obtain the TOP50 original popular articles from official accounts | Focus on original content and gain insight into creation trends |
| 🏷️ Category filtering | Independent queries for 22 standard categories | Precisely locate original viral articles in vertical fields |
| 📅 Date backtracking | Supports querying by specified date, defaults to backtracking 30 days | Flexibly query historical data |
| 🎨 HTML visual report | WeChat green theme design, supports PDF export | Convenient for sharing, archiving, and data reporting |
| ⏰ Subscription push | Scheduled push every day at 19:30 | Continuously track the dynamics of original viral articles |
Special highlights
- Mandatory script invocation: AI is prohibited from generating content on its own to ensure data authenticity
- Complete item-by-item display: If limit=20, all 20 items must be output one by one; truncation or omission is strictly prohibited
- Intelligent time judgment: Automatically calculates the correct query interval based on the data synchronization time (19:30)
- Category generalization matching: Supports automatic matching of fuzzy keywords to 22 standard categories
3. One-click installation
Authentication
Get API Key
Please go to Red Fox Hub to get the API KEY
Configure API Key
Option 1: Taking OpenClaw as an example, add REDFOX_API_KEY to ~/.openclaw/openclaw.json. Some 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 (json, argparse, os, sys, urllib, ssl).
Environment variable configuration
| Variable name | Description | Required |
|---|---|---|
REDFOX_API_KEY |
Red Fox API Key | Yes |
4. Usage guide
Basic usage
Startup prompt
After the Skill is loaded, prompt the user: "The skill has been loaded. Would you like me to push the latest original viral articles to you?"
Query the overall ranking of original viral articles
python scripts/fetch_articles.py --type "总排名" --limit 20
or do not pass --type, which defaults to "overall ranking". Output the latest top 20 original viral articles.
Category query
python scripts/fetch_articles.py --type "科技数码" --limit 20
The category name is matched from the user input, refer to category mapping table。
Date query
python scripts/fetch_articles.py --type "总排名" --start_date "2026-05-03" --limit 20
The script will automatically calculate endDate = startDate + 1 day.
Advanced usage
User intent recognition
The agent first identifies the user's intent type:
| Intent type | Trigger words | Processing method |
|---|---|---|
| Direct query | "today's viral articles", "original viral articles", "latest viral articles" | Output the latest top 20 original viral articles |
| Category query | "technology", "health and wellness", "finance" | Match the category and output the top 20 of that category |
| Date query | "original viral articles from May 3", "yesterday's viral articles" | Output the top 20 viral articles for the specified date |
| Time range | "recent", "latest" (no explicit time) | By default, query the past 7 days and output the top 20 |
| Vague input | Input is unclear | Directly push today's popular original articles |
Data time explanation
- Data synchronization time: synchronized daily at 19:30
- Synchronized data range: the previous day's (T-1) data
- Query data range:
- Current time < 19:30: query T-2 data (the day before yesterday)
- Current time >= 19:30: query T-1 data (yesterday)
- Default query time: when the user mentions "recent", "latest", or other expressions without an explicit time, query the past 7 days by default
Interface information
- Interface URL:
https://redfox.hk/story/api/cozeSkill/getWxDataByCategoryAndTime - Request method: POST (JSON body)
- Authentication method: X-API-KEY header, with the value obtained from the
REDFOX_API_KEYenvironment variable - Parameters:
type: category name (such as "technology and digital", "overall ranking", etc.)startDate: start date (YYYY-MM-DD format)endDate: end date (YYYY-MM-DD format)source: "king of original WeChat public account articles" (fixed value)
Core output rules (must be followed)
- The script must be called: the agent must call the
fetch_articles.pyscript and cannot generate article content on its own - It is forbidden to output the script path or code: the agent must not show the user any script path, code content, or execution command
- The script output must be displayed as-is: the content output by the script to stdout must be displayed as-is, and must not be omitted, modified, or reformatted
- Truncation or omission is forbidden:
limit=20, then all 20 items must be output one by one; it is strictly forbidden to use "..." to show only the first N items - Modifying data is forbidden: no part of the script output may be modified, reformatted, beautified, or hidden
- The script output is the final output: the content output by the script is the final content shown to the user
- The query part cannot be omitted: The script output "Retrieved XX items in total..." and the subscription service must be displayed in full
Output format
Article overview table:
| 序号 | 作者 | 标题 | 阅读数 |
|------|------|------|--------|
| 1 | [夜听](https://open.weixin.qq.com/qr/code?username=yetingfm) | [【夜听】有一种感情,叫不再联系](https://mp.weixin.qq.com/s?...) | 10w+ |
Output example (latest issue data; prompt if the time is inconsistent):
💡 数据说明
公众号原创文章推荐将在每日19点30分准时更新昨日文章数据,以下数据为获取时间时的快照,和实时数据有所差别。
非常抱歉🙏,最新的是前天的数据,我将为您查询最接近您需求的2026年05月12日原创文章。
📊 原创爆文推荐
最近30天的原创爆款文章
| 序号 | 作者 | 标题 | 阅读数 |
|------|------|------|--------|
| 1 | [作者A](链接) | [文章标题](链接) | 10w+ |
...
导出功能:输出生成HTML榜单页面,表格内容支持导出 PDF 格式,自动生成并打开
共获取到50条爆款原创热门文章,当前展示前20条。
📬 订阅服务
是否需要订阅具体赛道的账号表现?我们支持:
人文资讯、知识百科、健康养生、时尚潮流、美食餐饮、乐活生活、旅游出行、搞笑幽默、情感心理、体育娱乐、美容美体、文摘精选、财富理财、科技数码、创投商业、汽车交通、房产楼市、职场发展、教育考试、学术研究、企业品牌、总排名
订阅推送 — 每天19点30分推送最新公众号原创文章
暂不需要 — 仅本次查询
Time inconsistency prompt rules
As long as the data query date and the user's query date are inconsistent, prompt information must be displayed after the data description:
- Query date > latest date:
非常抱歉🙏,最新的是{查询日期}的数据,我将为您查询最接近您需求的{查询日期}原创文章。 - Query date < backtracking date:
非常抱歉🙏,目前最多支持回溯「过去30天」(最早至{回溯日期}),我将为您查询最接近您需求的时间范围~
Query "last 7 days" (query range exceeds the latest data)
💡 数据说明
公众号原创文章推荐将在每日19点30分准时更新昨日文章数据,以下数据为获取时间时的快照,和实时数据有所差别。
非常抱歉🙏,最新的是前天的数据,我将为您查询最接近您需求的时间范围。
📊 原创爆文推荐
2026年05月06日至2026年05月12日的原创爆款文章
HTML page generation
After fully outputting all article data in the conversation, automatically generate an HTML page:
python scripts/generate_hot_html.py --temp_file temp_articles.json --output "原创爆文_榜单.html" --display_count 20
HTML visual specifications:
- Primary color:
rgb(0, 179, 84)(WeChat green) - Auxiliary color:
#0088ff(read count, user name) - Use 🥇🥈🥉 for rankings 1-3, and numbers from 4 onward
- User names can be clicked to jump to the official account profile (
https://open.weixin.qq.com/qr/code?username={accountId}) - PDF export: adaptive single-page mode,
pagebreak: { mode: 'none' }
Pre-generation conditions: Before generating HTML, you must self-check whether the conversation reply has already displayed one by one the --limit specified number of articles.
Subscription service
Proactively ask the user whether they need to subscribe to a specific category. After the user chooses to subscribe, the latest issue of original viral article data will be pushed every day at 19:30.
Command quick reference table
| Scenario | Command example |
|---|---|
| Overall ranking query | python scripts/fetch_articles.py --type "总排名" --limit 20 |
| Category query | python scripts/fetch_articles.py --type "科技数码" --limit 20 |
| Date query | python scripts/fetch_articles.py --type "总排名" --start_date "2026-05-03" --limit 20 |
| Generate HTML | python scripts/generate_hot_html.py --temp_file temp_articles.json --output "原创爆文_榜单.html" --display_count 20 |
5. Use cases
Scenario 1: Original authors learning how to write viral articles
Role: Official account original writer Need: Study the titles, topics, and structures of recent original viral articles to improve writing skills How to use: Query the Top 20 original viral articles across all fields or a specific field, and read and analyze them one by one Expected benefit: Learn the success patterns of top original articles and improve your own content originality and appeal
Scenario 2: Vertical field content benchmarking
Role: Vertical field official account operator Need: Understand the latest trends and competitive landscape of original viral articles in this field How to use: Query by category, such as "Health and Wellness", and output the Top 20 original viral articles in that field Expected benefit: Accurately benchmark against top content in the same field and grasp the field's content trends
Scenario 3: Historical viral article retrospective research
Role: Content strategy analyst Need: Study the characteristics of original viral articles in a specific time period (such as holidays) How to use: Use the date query function to specify a specific date and obtain that day's original viral articles Expected benefit: Discover periodic patterns in viral articles over time and create a more precise content calendar
Scenario 4: Daily subscription for continuous tracking
Role: Self-media entrepreneur Need: Continuously track original viral article trends and not miss any content trend changes Usage: Subscribe to daily push notifications to automatically get the latest original viral articles every day at 19:30 Expected Benefits: Maintain continuous awareness of the original content ecosystem of Official Accounts and adjust creative direction in a timely manner
6. Project Architecture
Directory Structure
wechat-original-hot/
├── SKILL.md # 技能描述文件
├── scripts/
│ ├── fetch_articles.py # 原创爆文数据获取脚本
│ └── generate_hot_html.py # HTML页面生成脚本
└── references/
└── category_mapping.md # 分类映射表
Tech Stack
| Component | Technology | Description |
|---|---|---|
| Scripting Language | Python 3 | Uses the standard library (json, argparse, os, sys, urllib, ssl) |
| Data Interface | Redfox API (POST) | https://redfox.hk/story/api/cozeSkill/getWxDataByCategoryAndTime |
| Authentication Method | X-API-KEY | Request header authentication |
| Report Template | HTML/CSS/JS | WeChat green theme style |
| PDF Export | html2pdf.js | Adaptive single-page mode |
Core Module Description
| Module | Function |
|---|---|
fetch_articles.py |
Retrieves original viral article data, supports category queries and date queries, and saves it to a temporary JSON file |
generate_hot_html.py |
Reads data from the temporary JSON file and generates an Official Account-style HTML page |
category_mapping.md |
Category mapping table, containing 22 standard categories and generalized keywords |
Resource Index
- Script: see scripts/fetch_articles.py(Purpose: retrieve original viral article data, supports category queries and date queries)
- Script: see scripts/generate_hot_html.py(Purpose: read data from the temporary JSON file and generate an Official Account-style HTML page)
- Reference: see references/category_mapping.md(Purpose: category mapping table, containing 22 standard categories and generalized keywords)
7. FAQ
Installation-related
Q: The script reports an error "REDFOX_API_KEY not found" when running
A: Please make sure the environment variable REDFOX_API_KEYis configured. You can refer to the authentication section above for configuration.
Q: Do I need to install third-party dependencies? A: No. The script uses the Python standard library (json, argparse, os, sys, urllib, ssl), and no additional installation is required.
Usage-related
Q: Why does querying "today's" articles return the day before yesterday's? A: Data is synchronized daily at 19:30 for the previous day's data. If you query before 19:30, the previous day's data has not yet been synchronized, and the system will automatically query the day before yesterday's data and provide a prompt.
Q: Why is the number of articles output in the conversation inconsistent with the limit parameter?
A: This skill mandates that limit=20 it must output all 20 articles one by one. If articles are found to be missing, it indicates that the agent executed incorrectly and the script needs to be called again.
Q: What is the difference from wechat-10w-hot? A: wechat-original-hot focuses onoriginalviral articles (corresponding to the source "King of Original Official Account Articles"), while wechat-10w-hot includes all100k+ readsarticles (including reposted and non-original content).
Q: How do I query by date?
A: Use the --start_date parameter, such as --start_date "2026-05-03". The script will automatically calculate endDate = startDate + 1天。
Troubleshooting
Q: Category query does not match the correct category?
A: Please refer to the category mapping table in references/category_mapping.md . If the keyword entered by the user is not in the mapping table, you can prompt the user to choose from the 22 standard categories.
Q: The number of articles is incorrect after HTML generation?
A: Use --display_count Parameters ensure that the number of items displayed in HTML matches that in the conversation. Before generation, you must self-check the number of articles displayed in the conversation.
Q: The query returns empty data? A: Possible reasons: 1) There are no original viral articles in this category within the query time period; 2) The query date exceeds the 30-day lookback range; 3) The query date is earlier than the earliest available data. The system will provide a corresponding prompt.