Learn-skills.dev agentbay-monitor-skills
舆情监控技能,最终产出舆情报告。当用户问「某事件/话题舆情如何」「舆论怎么样」「做舆情分析」「运行舆情分析」或按关键词/平台爬取并生成舆情报告时,使用本技能。约定:凡舆情相关意图即执行全流程(爬取→情感分析→生成报告)。爬取由本技能完成;情感分析由主 Agent 按提示词自主判断;报告由 generate_report 生成。
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/agentbay-ai/agentbay-skills/agentbay-monitor-skills" ~/.claude/skills/neversight-learn-skills-dev-agentbay-monitor-skills && rm -rf "$T"
data/skills-md/agentbay-ai/agentbay-skills/agentbay-monitor-skills/SKILL.mdAgentBay 舆情监控 Skill
⚠️ 舆情分析 = 全流程(必读)
用户说「运行舆情分析」「做舆情分析」「舆情分析 主题是 XXX」时,必须执行完整三步,不能只跑爬取就结束。
| 步骤 | 动作 | 说明 |
|---|---|---|
| 1. 爬取 | 或 | 得到 (爬取结果 JSON) |
| 2. 情感分析 | 读 → 对爬取 JSON 逐条判定 → 写情感结果小 JSON → 运行 | 得到 processed JSON(如 ) |
| 3. 生成报告 | 或 | 得到 Markdown/JSON(及可选 PDF) |
禁止行为:只运行
crawl.py 后就说「爬取完成,情感分析由主 Agent 完成」并结束。这是错误用法——主 Agent 就是你自己,你必须继续完成步骤 2 和 3,直到产出最终报告文件。
何时使用
用户出现以下任一意图时,必须使用本技能并执行全流程(爬取→情感分析→生成报告):
- 问「某事件/话题舆情如何」「XX 舆论怎么样」「想了解 XX 的舆情」
- 「运行舆情分析」「做舆情分析」「舆情分析 主题是 XXX」
- 舆情监控、情感分析、舆情报告、按关键词/平台爬取并生成报告(中英文场景均可)
意图为舆情相关即默认使用本技能,不可仅用联网搜索代替。
重要约定:凡提到「舆情分析」(或「运行舆情分析」「做舆情分析」等等价表述),即视为执行全流程——爬取 → 情感分析 → 生成报告。必须按该完整流程执行,不可只做爬取;最终产出须包含 Markdown/JSON(及可选 PDF)报告。
前置条件
工作目录为技能目录(本 SKILL 所在目录);已安装依赖;已配置
AGENTBAY_API_KEY。
依赖
pip install wuying-agentbay-sdk pandas numpy pyyaml markdown
可选(PDF 报告):
brew install cairo pango gdk-pixbuf 后 pip install weasyprint。不装则仅无 PDF,.md/.json 正常。
API Key
仅需配置
AGENTBAY_API_KEY。环境变量:export AGENTBAY_API_KEY=你的key(Windows PowerShell:$env:AGENTBAY_API_KEY="你的key")。或直接写文件:mkdir -p ~/.config/agentbay && echo -n '你的key' > ~/.config/agentbay/api_key。获取:https://agentbay.console.aliyun.com/service-management 。未配置时运行脚本会报错。其余参数由主 Agent 传参/命令行传入。
整体流程
舆情分析 = 全流程:爬取 → 情感分析 → 生成报告(见上文「⚠️ 舆情分析 = 全流程」)。用户要求「舆情分析」时,三步都必须执行,不能只做第 1 步。
- 爬取:
或crawl.py
→ 得到crawl_for_sentiment(...)
(爬取结果 JSON)。raw_output_path - 情感分析:主 Agent 读提示词
,对爬取 JSON 逐条判定情感,产出情感结果小 JSON;再运行scripts/sentiment/sentiment_instruction.md
合并得到 processed JSON(如write_processed.py
)。提示词可定制。output/processed.json - 生成报告:
或report.py --input <processed 路径>
→ Markdown/JSON(及可选 PDF)。generate_report(processed_results, ...)
运行方式
步骤 0:登录(仅非搜索引擎) xhs/weibo/douyin/zhihu 须先登录;百度、Bing 不需要。
python scripts/login.py --platform xhs [--context-name sentiment-analysis] → 浏览器中登录后终端按 Enter,状态持久化。非搜索引擎爬取时 --context-name 须与登录一致。
步骤 1:爬取
python scripts/crawl.py --keywords "关键词1,关键词2" [--platform baidu] [--max-results N] [--output-dir output]
参数:
-k 必需;-p 默认 baidu(可选 xhs/weibo/douyin/zhihu/bing);--max-results、-o、--report-title、--context-name、--crawl-timeout。百度/Bing 仅抓资讯列表页(不点进链接),百度用资讯 URL(tn=news)。
爬取超时(必读):执行环境(如 run_terminal_cmd)的超时须 ≥ 10 分钟(600 秒或 600000 毫秒),否则会中断。约 1 条/分钟,10 条约 10 分钟;建议超时略大于估算(如 15 分钟)。脚本内
--crawl-timeout 不传时会自动按条数计算,一般无需手传。
步骤 2:情感分析 主 Agent 读
scripts/sentiment/sentiment_instruction.md,对爬取 JSON 逐条判定情感并按规定格式写 processed JSON(无需在技能中配置 LLM)。
步骤 3:生成报告
python scripts/report.py --input <processed JSON 路径> [--output-dir output] [--title "报告标题"]
输出
爬取 →
raw_output_path、crawl_results。情感分析 → processed JSON(含 sentiment_statistics、每条 sentiment,格式见提示词)。报告 → markdown_path、json_path、可选 pdf_path。
Agent 调用要点
舆情分析必跑全流程:用户说「舆情分析」「运行舆情分析」或类似意图时,必须完成「爬取 → 情感分析 → 合并(write_processed.py)→ 生成报告」,产出最终报告文件。不可只运行爬取后就说「情感分析由主 Agent 完成」并结束——主 Agent 即当前 Agent,必须由你继续完成情感分析与报告。
- 登录:非搜索引擎前先
;百度/Bing 免登录。login.py --platform <平台> - 爬取:
或crawl.py
,默认平台 baidu;执行超时 ≥ 10 分钟(见上文「爬取超时」);非搜索引擎时crawl_for_sentiment(...)
与登录一致。context_name - 情感分析:读
;对爬取 JSON(scripts/sentiment/sentiment_instruction.md
)逐条判定情感;写情感结果小 JSON(如raw_output_path
);运行output/sentiment_only.json
。python scripts/sentiment/write_processed.py --raw <爬取JSON> --sentiment <情感结果JSON> --output output/processed.json - 报告:
或report.py --input output/processed.json
。generate_report(...) - 失败:未配置 Key、未登录或执行失败 →
、success: False
。error
代码示例
import asyncio, sys, json from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent / "scripts")) from crawl import crawl_for_sentiment, generate_report async def main(): result = await crawl_for_sentiment(platform="baidu", keywords=["产品名"], max_results_per_keyword=10, output_dir="output") if not result.get("success"): return raw_path = result.get("raw_output_path") # 主 Agent:读 sentiment_instruction.md → 对 raw_path 做情感分析 → 写 output/processed.json(或先用 write_processed.py 合并) processed_path = Path("output") / "processed.json" with open(processed_path, "r", encoding="utf-8") as f: report = generate_report(json.load(f), output_dir="output", title="舆情报告") print("报告:", report.get("markdown_path")) asyncio.run(main())
常见问题
- 只跑了爬取怎么办:若已运行
得到crawl.py
,必须继续做情感分析(读raw_output_path
、写情感结果 JSON、运行sentiment_instruction.md
)再运行write_processed.py
,直到产出报告。report.py --input <processed路径> - processed JSON:title/content 常含未转义双引号,手写易导致
JSON 解析失败。主 Agent 只产出「情感结果」小 JSON,再运行report.py
。详见python scripts/sentiment/write_processed.py --raw <爬取JSON> --sentiment <情感结果JSON> --output <processed路径>
第 4 节。sentiment_instruction.md - 登录失效:重跑
。python scripts/login.py --platform <平台> [--context-name ...] - 爬取超时:执行环境超时须 ≥ 10 分钟(见上文);需更长时显式传
(秒)。--crawl-timeout
文件结构
SKILL.md · scripts/:crawl.py(爬取/报告入口)、report.py、login.py、crawler/、sentiment/(sentiment_instruction.md、write_processed.py)、reporter/ · output/