Enter one keyword to simultaneously launch search requests across 11 major platforms. After cross-platform data aggregation, AI generates an in-depth intelligence report.
Covered Platforms
| # | Platform | API Path | Search Parameters | Sort Options |
|---|---|---|---|---|
| 1 | Douyin | /story/api/dy/data/searchWork |
keyword, pageNum, pageSize | — |
| 2 | Xiaohongshu | /story/api/xhsUser/searchArticle |
keyword, offset, sortType | 0=Default/2=Latest/4=Hottest |
| 3 | WeChat Official Accounts | /story/api/gzh/data/searchArticle |
keyword, offset, sortType | 0=Default/2=Latest/4=Hottest |
| 4 | Bilibili | /story/api/bili/data/workSearch |
keyword, page, pageSize, order | time/play/like/comment/favorite |
| 5 | Kuaishou | /story/api/ksAllData/searchWork |
keyword, page, size, sort | Comprehensive/Latest/Most Liked/Most Favorited |
| 6 | WeChat Channels | /story/api/sphAllData/searchWork |
keyword, sort, page, size | Comprehensive/Latest/Most Liked/Most Favorited |
| 7 | Toutiao | /story/api/toutiao/searchWork |
keyword, offset | — |
| 8 | TikTok | /story/api/tiktok/ability/searchVideo |
keyword, offset, count, sortType, publishTime, region | 0=Relevance/1=Most Liked |
| 9 | /story/api/ins/search |
keyword, paginationToken | — | |
| 10 | X(Twitter) | /story/api/x/search |
keyword, searchType, cursor | Top/Latest/Media |
| 11 | YouTube | /story/api/youtube/searchVideo |
searchQuery, continuationToken | — |
Host for all APIs:
https://redfox.hk,Method:POST,Content-Type:application/json, see “🔑 Authentication” below for the authentication method. For detailed request/response fields, see api-reference.md。
🔑 Authentication
Get API Key
Please go to Redfox Hub to get an API KEY
Configure API Key
Option 1: Taking OpenClaw as an example, add REDFOX_API_KEY to ~/.openclaw/openclaw.json :
{ "env": { "REDFOX_API_KEY": "ak_xxxx..." } }
Option 2: Terminal configuration
export REDFOX_API_KEY="ak_xxxx..."
The request headers of all platform APIs carry REDFOX-API-KEY + X-API-Key(values are all $REDFOX_API_KEY). If missing, the script errors out and prompts for configuration.
Workflow
Step 1: Keyword Processing
- The keyword entered by the user is used directly as the search term
- If the input contains suffixes such as "expert", "blogger", "KOL", "influencer", "account", etc., the suffix is automatically stripped and only the core semantic word is retained
- You may ask the user whether to specify a platform scope (default is all 11 platforms)
Step 2: Parallel Data Collection
Use the script scripts/fetch_all.py for one-click parallel collection (internally uses a thread pool to concurrently request all platforms):
python3 ~/.agents/skills/global-ai-news-brief/scripts/fetch_all.py "关键词" --pretty
- Prerequisite: environment variable
REDFOX_API_KEYis set (the script will detect it and error out if missing) - Default behavior: request all 11 platforms in parallel, taking the homepage data (20 items) from each platform
- Specify a platform subset:
--platforms douyin,xhs,gzh,bilibili,kuaishou,shipinhao,toutiao(use only when searching domestic platforms) - Output: standardized JSON written to
/tmp/news_intel_result.json, while printing each platform's collection status to stderr - Fault tolerance: if a single platform fails, it is automatically skipped and marked in the result's
failedPlatformsfield, without affecting other platforms
Output JSON structure:
{
keyword: string, // 搜索关键词
generatedAt: string, // 生成时间
platformCount: number, // 成功平台数
failedPlatforms: [], // 失败平台列表 [{platform, error}]
totalItems: number, // 总内容条数
totalEngagement: number, // 总互动量(点赞+评论+分享+播放)
results: { // 按平台 key 分组
douyin: { platform, count, total, items[] },
...
}
}
Each items[] entry has been standardized by the script into a unified structure (see Step 3), so the Agent can directly read the JSON file for analysis without needing to handle differences in field names across platforms.
Step 3: Data Standardization
Unify the data returned by each platform into the following standard structure:
{
platform: string, // 平台名称
title: string, // 标题/描述首行
content: string, // 正文/描述
author: string, // 作者昵称
url: string, // 作品链接
publishTime: string, // 发布时间
likes: number, // 点赞数
comments: number, // 评论数
shares: number, // 分享/转发数
views: number, // 播放/阅读数
collects: number, // 收藏数
followers: number, // 作者粉丝数
coverUrl: string, // 封面图
mediaType: string // video/image/text
}
Field mapping key points(handling differences in field names across platforms):
| Standard Field | Douyin | Xiaohongshu | WeChat Official Account | Bilibili | Kuaishou | WeChat Channels | Toutiao | TikTok | X | YouTube | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| title | content | workTitle | title | title | caption | description | title | content | captionText | text | title |
| author | authorName | accountNickname | author | author | nickname | nickname | nickname | authorData.userName | user.fullName | user.displayName | author |
| likes | likeCount | workLikedCount | likeCount | likeCount | likeCount | likeCount | — | statsData.likeCount | likeCount | likeCount | — |
| comments | commentCount | workCommentsCount | commentCount | commentCount | commentCount | commentCount | commentNum | statsData.commentTotal | commentCount | replyCount | — |
| views | — | — | readCount | playCount | viewCount | — | — | statsData.viewCount | playCount | viewCount | viewCount |
| url | opusUrl | workUrl | workUrl | Concatenate BV | Concatenate photoId | — | opusUrl | shareLink | Concatenate code | Concatenate tweetId | Concatenate videoId |
Step 4: AI intelligent analysis and output
Perform analysis on all aggregated data,output strictly in the following four sections in order(both the terminal and the HTML report follow this order):
Section 1: News events
Reconstruct "what happened"—objectively present the full picture of the event.
- Event overview: summarize the core event in 3-5 sentences (who, what, when, where, scope of impact)
- Key event timeline: arrange key nodes by publication time, reconstructing the event's propagation path from emergence to escalation; sorting rule:the latest time is at the top (reverse chronological order), and entries without a clear date (such as "overseas long-term") are placed last
- Hot topic clustering: automatically cluster all content by theme into 3-8 hot topics, with each topic labeled:
- Topic name
- Number of platforms involved
- 2-3 representative content items (including title, author, platform, link)
Section 2: News interpretation
AI in-depth analysis of "what it means"—extract insights and judgments.
- Core summary: a concise summary within 200 characters, including event characterization, impact assessment, and trend prediction
- Key findings: 3-5 core insights, each including an argument + data support
- Public opinion trends:
- Network-wide sentiment distribution: proportion of positive / neutral / negative
- Core points of consensus (views agreed upon by most people)
- Core points of controversy (the most divisive issues)
- Big V opinions (KOL): identify authors with more than 10,000 followers or top single-post engagement, and list author name, platform, follower count, and representative views; the title should uniformly use the plain expression "Big V opinions" and not use "key opinion leader". Render account names as clickable links that jump to the author's homepage. Homepage link concatenation rules (extract the author ID from the work link or API field and concatenate):
- X/Twitter:
https://x.com/{username}(extracted from the work URL/status/prefix) - TikTok:
https://www.tiktok.com/@{username}(extracted from the work URL/@xxx/segment) - Instagram:
https://www.instagram.com/{username}/ - Bilibili:
https://space.bilibili.com/{mid}(fall back when the API has no midhttps://search.bilibili.com/all?keyword={作者名}) - WeChat Official Account:
https://open.weixin.qq.com/qr/code?username={biz} - Platforms such as Kuaishou/Xiaohongshu where the author ID cannot be extracted: fall back to the platform search link (such as
https://www.kuaishou.com/search/video?searchKey={作者名}) - WeChat Channels has no public homepage link: do not render a link
- X/Twitter:
Section 3: Different interpretation tendencies across platforms
Cross-platform comparison of "how each platform sees it"—reveal platform differentiation characteristics.
For each platform with data, analyze the following dimensions:
| Analysis dimension | Description |
|---|---|
| Sentiment tendency | The platform's positive/neutral/negative proportions, compared with the network-wide average |
| Focus of attention | The subtopics/angles that users on this platform pay most attention to (differences from other platforms) |
| Content format | Which is primary: video/image-text/long-form text |
| Popularity metrics | Number of content items, total engagement, average engagement |
| Representative voices | The 2-3 content items with the highest engagement on that platform and a summary of their viewpoints |
Output asCross-platform comparison matrix table:
| 平台 | 内容数 | 总互动 | 情感倾向 | 关注焦点 | 代表观点 |
|------|-------|-------|---------|---------|---------|
| 抖音 | 20 | 58000 | 正面65% | 事件现场视频 | "xxx" |
| 公众号 | 18 | 120000 | 中性55% | 深度分析文章 | "xxx" |
| X/Twitter | 15 | 9200 | 负面60% | 批评与讨论 | "xxx" |
Section Four: Data Sources
Full display of raw data—list all search results in segments by platform.
Terminal output: Each platform displays a TOP 5 table:
### 抖音 TOP 5
| # | 标题 | 作者 | 点赞 | 评论 | 分享 | 发布时间 | 链接 |
|---|------|------|------|------|------|---------|------|
| 1 | xxx | xxx | 8000 | 280 | 150 | 2026-05-20 | [查看](url) |
HTML report: Each platform has a switchable Tab, displaying all data entries for that platform, including cover image, title, author, complete data metrics, and original link.
Data time range annotation: After the data source title (h2 "IV. Data Sources"), annotate the actual data time range in small .formula-note text, e.g. "(Data time range: 2026-07-20 ~ 2026-08-19 as the main body of recent 30 days of data, including a small amount of older historical news, earliest 2024-07-02)". Calculation rules:
- Parse the publishTime of all entries (compatible with three formats:
YYYY-MM-DD..., X/Twitter's%a %b %d %H:%M:%S +0000 %Y, relative timeN days/weeks/months ago(calculated based on the collection date)), take the minimum/maximum date - Scope: the 30 days before the report's current time is the main window; if more than 90% of entries fall within this window, the text notes "main body recent 30 days (start date ~ latest date)"; earlier entries outside the window are counted as "historical old news", noting the earliest date
Step 5: HTML report generation
Use the assets/report-template.html template to generate an interactive HTML report, strictly organized into four major sections:
- Top overview: The subtitle line displays the search keywords, number of covered platforms, total number of content items,data time range (short format "YYYY-MM-DD ~ YYYY-MM-DD", with the long description after the data source title); the overview card area has only 4 cards (covered platforms/total content/total engagement/active platforms); generation time appears only in the footer at the bottom of the page
- Section One · News Events: Event overview card + vertical timeline + hot topic tag cloud + hot topic detail cards (.topic-list grid + .topic-card card style, card header with a small blue square decoration + topic name + number of platforms, body as a bulleted list)
- Section Two · News Interpretation: Core summary area + key findings list + public opinion trend dashboard (positive/neutral/negative progress bars) + big V opinion cards
- Section Three · Interpretation tendencies of each platform: Cross-platform comparison matrix table + bar chart comparing sentiment across platforms (implemented in CSS, with the calculation formula "engagement = likes + comments + shares + plays" annotated in small .formula-note text after the title) + difference highlights
- Section Four · Data Sources: Platform Tab switcher; each Tab displays all content cards for that platform (cover, title, author, metrics, link).Tab sorting rule: sort in descending order by platform engagement (likes + comments + shares + plays), with the platform with the highest engagement first; entries within a Tab keep the original order returned by the API, with no secondary sorting
Cover display rule:
- Platforms whose API does not return covers (such as Toutiao): all cards for that platform do not render the cover area and start directly from the body text (detected at generation time: if coverUrl is empty for all entries within a platform, it is regarded as a no-cover platform)
- When other platforms have no cover image: render a fixed-height (180px) white background placeholder block to ensure uniform card heights
- Cover image load failure (onerror): remove src, keep the white placeholder block, do not hide or collapse
Conversation output: all key annotations generated in the report must be shown synchronously in the conversation reply, including:
- Data time range (short format + main entity proportion/historical old news explanation)
- Engagement calculation formula definition: engagement = likes + comments + shares + views (platforms whose API does not return views are counted as 0)
- Per-platform data statistics, engagement rankings, report file path
The HTML file is saved to this Skill's output/ directory, filename global-ai-news-brief-report-{keyword}-{date}.html(create the directory first if it does not exist), open with the open command. Saving to temporary directories such as /tmp is prohibited.
Error handling
- When a platform request fails, skip that platform and mark "data temporarily unavailable" in the report
- Do not block data collection from other platforms
- When the API key is missing, prompt the user to set the
REDFOX_API_KEYenvironment variable
Usage example
用户:帮我查一下"新能源汽车"最新的全网舆情
Agent:→ 并行搜索 11 平台 → 聚合数据 → AI 分析 → 输出终端表格 + HTML 报告
用户:追踪一下"台风"相关的全网信息
Agent:→ 同上流程,侧重时间线和事件追踪
用户:只看国内平台,搜一下"暑期旅游"
Agent:→ 仅搜索抖音/小红书/公众号/B站/快手/视频号/头条 7 个国内平台