Install
openclaw skills install media-clusterAutomatically crawls Chinese social media by keyword, summarizes content, generates a markdown report, and produces a short voice summary using TTS.
openclaw skills install media-cluster路径约定:文中 {baseDir} 表示本技能所在目录(media-cluster 技能根目录)。Agent 执行命令时需将 {baseDir} 替换为实际路径。
基于 MediaCrawler 按「搜索关键词」爬取社交平台内容,汇总有哪些内容,并生成报告与简洁版语音总结。爬虫结果保存在 {baseDir}/MediaCrawler/data/ 下。
使用者只需输入一句自然语言,例如:
Agent 收到此类请求后,应自动完成全流程(无需用户再执行任何命令):
{baseDir}/MediaCrawler 目录不存在,则先执行 {baseDir}/scripts/ensure_mediacrawler.sh 或手动 git clone https://github.com/NanmiCoder/MediaCrawler.git {baseDir}/MediaCrawler(将 {baseDir} 换为实际路径),然后再进行后续步骤。scripts/setup_env.sh(或等价 conda create + pip install + playwright install);否则跳过。MediaCrawler 目录下执行 python main.py --platform <平台> --lt qrcode --type search --keywords "<关键词>" --save_data_option jsonl;提示用户首次需扫码登录。scripts/summarize_and_voice.py,带上对应的 --platform、--keyword,并加上 --voice 生成简洁版语音总结;将报告路径与语音稿内容回复给用户。使用者只需一次文本输入,其余由 Agent 按上述步骤完成。
media-cluster 环境。{baseDir}/MediaCrawler。SENSEAUDIO_API_KEY(接口密钥);可选 SENSEAUDIO_VOICE_ID。若本地尚未有 MediaCrawler 项目,需先从 GitHub 拉取到技能目录下。执行时将 {baseDir} 替换为实际技能根路径:
# macOS/Linux:使用脚本(推荐,会检测目录是否存在再克隆)
bash {baseDir}/scripts/ensure_mediacrawler.sh
# 所有平台(macOS/Windows/Linux):手动克隆
git clone https://github.com/NanmiCoder/MediaCrawler.git {baseDir}/MediaCrawler
完成后目录结构为:{baseDir}/MediaCrawler/(含 main.py、config/、requirements.txt 等)。之后再执行环境配置与爬取。
以下命令适用于所有平台(macOS / Windows / Linux),在终端或命令提示符中执行:
# 创建 conda 环境(Python 3.11)
conda create -n media-cluster python=3.11 -y
# 激活环境
conda activate media-cluster
# 进入 MediaCrawler 目录
cd {baseDir}/MediaCrawler
# 安装依赖
pip install -r requirements.txt
# 安装 Playwright 浏览器驱动
playwright install
macOS/Linux 也可直接执行技能提供的脚本(将 {baseDir} 换为实际路径):
bash {baseDir}/scripts/setup_env.sh
--platform:xhs(小红书)| dy(抖音)| ks(快手)| bili(B站)| wb(微博)| tieba(贴吧)| zhihu(知乎)。--keywords:一个或多个,英文逗号分隔,如 比特币 或 比特币,以太坊。--type search。--lt qrcode(扫码登录);首次运行会弹出浏览器,用对应 APP 扫码。先激活环境,再进入 {baseDir}/MediaCrawler 运行:
conda activate media-cluster
cd {baseDir}/MediaCrawler
# 示例:小红书搜索「比特币」
python main.py --platform xhs --lt qrcode --type search --keywords "比特币" --save_data_option jsonl
数据默认写入 MediaCrawler 下的 data/,即 {baseDir}/MediaCrawler/data/<platform>/。如需指定绝对路径,可加 --save_data_path <绝对路径>。
--save_data_option jsonl:推荐 jsonl,便于后续解析。--get_comment yes/no:是否爬评论,默认从 config/base_config.py 读取。--save_data_path <path>:自定义数据目录;不填则用默认 data/。爬取完成后:
{baseDir}/MediaCrawler/data/<platform>/ 下读取最新生成的 jsonl(或 json/csv,视 --save_data_option)。note_id, type, title, desc, user_id, nickname, liked_count, collected_count, comment_count, share_count, ip_location, tag_list, note_url, source_keyword 等。media_cluster_report_<关键词>_<日期>.md)。SENSEAUDIO_API_KEY(在 接口密钥 创建);可选 SENSEAUDIO_VOICE_ID。报告结构建议:
# 媒体爬取报告:<关键词>
- **平台**:<platform>
- **关键词**:<keywords>
- **爬取条数**:<count>
- **数据时间**:<时间范围>
## 内容概览
(按主题/类型归纳,列出代表性标题与摘要)
## 明细(可选)
(表格或列表:标题、作者、互动、链接等)
爬虫得到的小红书笔记可能形如:
{
"note_id": "68f0ae5b0000000003020914",
"type": "normal",
"title": "原以为比特币绝对安全呢",
"desc": "比特币不是去中心化吗?美国司法部是怎么没收...",
"video_url": "",
"time": 1760603739000,
"user_id": "60337046000000000101fd66",
"nickname": "贝格尔号",
"liked_count": "1308",
"collected_count": "963",
"comment_count": "664",
"share_count": "573",
"tag_list": "",
"note_url": "https://www.xiaohongshu.com/explore/...",
"source_keyword": "比特币"
}
总结时重点用:title, desc, nickname, liked_count, comment_count, source_keyword。
| 脚本 | 用途 |
|---|---|
scripts/ensure_mediacrawler.sh | (macOS/Linux)首次执行时若不存在 MediaCrawler 目录,则从 GitHub 克隆到技能目录下;Windows 请直接 git clone。 |
scripts/setup_env.sh | (macOS/Linux)创建 conda 环境、安装依赖与 Playwright;Windows 请按「环境配置」小节手动执行 conda/pip 命令。 |
scripts/summarize_and_voice.py | 读取 MediaCrawler/data/ 下数据,生成 Markdown 报告与简短语音稿,并用 SenseAudio API 合成语音(需环境变量 SENSEAUDIO_API_KEY)。 |
调用示例(将 {baseDir} 换为实际路径):
conda activate media-cluster
python {baseDir}/scripts/summarize_and_voice.py \
--data-dir {baseDir}/MediaCrawler/data \
--platform xhs \
--keyword "比特币" \
--report report.md \
--voice
# 可选:--voice-id <音色ID>、--voice-out <输出mp3路径>;API 文档 https://senseaudio.cn/docs/
config/base_config.py 中设置 HEADLESS = False)。SENSEAUDIO_API_KEY(在 senseaudio.cn 接口密钥 创建);可选 SENSEAUDIO_VOICE_ID。API 文档见 https://senseaudio.cn/docs/。docs/data_storage_guide.md(若有)。