amprsnd1/openclaw-news-intel
GitHub: amprsnd1/openclaw-news-intel
面向 OpenClaw 智能体的本地优先新闻情报扫描器,将公开头条与观察列表匹配并生成结构化简报。
Stars: 0 | Forks: 0
# news-intel
OpenClaw agents 的本地头条信号扫描器和新闻情报连接器。
`news-intel` 是一个本地优先的 CLI 工具,它会刷新公开的新闻头条源,将其与观察列表进行匹配,将相关的头条新闻分组为信号簇,并返回紧凑的 markdown 简报,供 OpenClaw 直接使用。
主要的 UX(用户体验)设计十分简单:
```
news-intel morning-scan
```
研究模式仍然存在,但它是出现信号后进行深入研究的高级路径。它不是默认的晨间工作流。
## 状态
公开 Beta 候选版本 / 本地优先 Beta 版。
软件包版本:`0.2.0-beta.1`。
## 功能介绍
- 扫描头条新闻源以获取与观察列表相关的信号。
- 将相关的头条新闻分组为簇。
- 将头条新闻路由到主要和次要主题。
- 在有请求时显示源限制和被拒绝的/噪声匹配。
- 通过 CLI 和 SQLite 数据库在本地运行。
- 可被 OpenClaw 作为安全的本地技能使用。
- 支持用于深度研究的高级收集、丰富、搜索和简报工作流。
## 不包含的功能
- 不会绕过付费墙。
- 不抓取 Reuters、Bloomberg、FT、WSJ 或 Dow Jones 的全文。
- 不提供有保证的实时新闻。
- 不能替代获得许可的新闻专线访问。
- 不作为托管的 SaaS 运行。
- 不抓取仅限订阅的内容,也不对受限的媒体机构使用浏览器自动化。
## 心智模型
```
Sources
-> Fast Scan
-> Watchlists
-> Signals / Clusters
-> OpenClaw briefing
```
高级模式:
```
Signal found
-> Collect
-> Enrich
-> Digest
-> Deep research briefing
```
RSS、Google News RSS 和 GDELT 用于发现头条新闻和元数据。观察列表定义了要监控的内容。`morning-scan` 和 `scan` 用于快速获取头条信号。`collect -> enrich -> digest` 用于更深入的研究。Fundus 可以选择在发现信号后丰富公开支持的文章。除非配置了许可的 API 访问权限,否则受限的媒体机构仅保留元数据。
## 快速开始
```
git clone
cd openclaw-news-intel
bash scripts/setup.sh
source .venv/bin/activate
news-intel doctor
news-intel morning-scan
```
可选的 OpenClaw 设置:
```
bash scripts/install_openclaw_skill.sh
openclaw skills info news-intelligence
```
然后询问 OpenClaw:
```
Use News Intelligence. Run morning scan.
```
## 路径约定
在示例中,`` 表示此代码库的本地检出路径。
```
export NEWS_INTEL_HOME=/path/to/news-intel
cd "$NEWS_INTEL_HOME"
```
## 主命令
```
news-intel morning-scan
```
将此用于每日头条监控、快速信号检测、观察列表警报和 OpenClaw 晨间简报。
`morning-scan` 首先运行新的 RSS 摄取,然后扫描过去 24 小时内的所有观察列表,将重复的头条新闻分组为簇,将每条头条新闻路由到一个主要主题,并返回简洁的 markdown。
## Doctor 退出代码
`news-intel doctor` 将损坏的配置与可用的降级配置区分开来:
| 退出代码 | 状态 | 含义 |
|---:|---|---|
| 0 | `usable` | 核心 CLI、配置、数据库、观察列表、源组和 RSS 路径运行正常。 |
| 1 | `broken` | 必需的核心组件已损坏,例如配置加载、数据库初始化、观察列表、源组或 RSS 核心设置。 |
| 2 | `usable_but_degraded` | 配置仍然可以运行,但可选或外部组件处于降级状态。 |
常见的退出代码 `2` 示例包括:最近的 GDELT HTTP 429 速率限制、GDELT 不可用、Fundus 不可用、缺少 OpenClaw 技能注册、Google News RSS 被禁用,或已启用的非核心源失败。退出代码 `2` 并不意味着 `morning-scan` 已损坏。
## 我应该使用哪个命令?
| 目标 | 命令 |
|---|---|
| 每日晨间简报 | `news-intel morning-scan` |
| 扫描单个主题 | `news-intel scan --topic "iran_war_risk" --since "24h"` |
| 扫描自由格式的查询 | `news-intel scan --query "NATO troops eastern Europe" --since "24h"` |
| 搜索本地数据库 | `news-intel search "Ukraine IMF loan" --mode precise` |
| 深度研究 | `collect -> enrich -> digest` |
| 检查设置 | `news-intel doctor` |
| 检查源 | `news-intel source-health` |
## OpenClaw 设置
OpenClaw 不直接抓取新闻。OpenClaw 通过新闻情报技能调用本地的 `news-intel` CLI。
安装或刷新技能:
```
bash scripts/install_openclaw_skill.sh
openclaw skills info news-intelligence
```
推荐的 OpenClaw 命令:
```
news-intel morning-scan
```
示例提示词:
- 使用新闻情报。运行晨间扫描。
- 使用新闻情报。扫描过去 24 小时的伊朗战争风险。
- 使用新闻情报。在本地数据库中搜索乌克兰 IMF 贷款。
- 使用新闻情报。为欧洲-俄罗斯战争准备运行深度简报。
## 观察列表
包含的战略观察列表:
- `europe_ru_war_preparations`
- `china_taiwan_risk`
- `iran_war_risk`
- `migration_policy_europe`
- `global_trade_and_country_flows`
基准观察列表还包括:
- `ukraine_financing`
- `eu_energy_security`
观察列表位于 `config/watchlists.yaml` 中。它们定义了上下文术语、核心术语、建议查询、默认扫描源组、硬性限制和简报重点。
## 源访问模型
- RSS/公开源:头条新闻和公开元数据。
- Google News RSS:元数据/头条新闻发现。
- GDELT:元数据发现;可能会受到速率限制。
- Fundus:针对公开支持文章的可选丰富。
- Reuters/Bloomberg/FT/WSJ/Dow Jones:除非配置了获得许可的 API 访问权限,否则仅限元数据。
本项目不会绕过付费墙、登录、发布者限制或仅限订阅的访问。
`news-intel source-health` 将失败的已启用源与已禁用的路线图占位符区分开来。`disabled_roadmap` 源意味着该源有意处于非活动状态,因为没有配置稳定的公开源;它不是失败的源。
## 晨间扫描模式
主要用户流程:
```
news-intel morning-scan
```
用于:
- 每日头条监控。
- 快速信号检测。
- 观察列表警报。
- OpenClaw 晨间简报。
等效的显式命令:
```
news-intel scan --all-watchlists --since "24h" --min-confidence medium --group-by-primary --fresh
```
晨间扫描输出包括:
- 最新摄取状态。
- 顶级警报。
- 信号簇。
- 主要、次要和溢出主题路由。
- 源多样性说明。
- 观察列表摘要。
- 源限制。
使用 `--show-seen` 包含之前已显示的项目。在调试为什么头条新闻被排除或降级时使用 `--show-rejected`。
## 主题扫描模式
聚焦扫描:
```
news-intel scan --topic "iran_war_risk" --since "24h"
```
用于:
- 检查单个主题。
- 运行聚焦扫描。
- 调试观察列表行为。
- 使用 `--show-rejected` 检查被拒绝的/噪声匹配。
自由格式查询扫描:
```
news-intel scan --query "NATO troops eastern Europe" --since "24h"
```
在需要时可以指定源组:
```
news-intel scan --topic "global_trade_and_country_flows" --since "24h" --source market_signals,google_news_rss --min-confidence medium
```
## 研究模式,高级
研究模式是出现信号后用于获取更深层背景信息的高级工作流。它不是默认的晨间工作流。
```
news-intel collect --topic "" --days 7 --max-items 30 --max-queries 1 --use-cache-first
news-intel enrich --topic "" --days 30 --adapter fundus --max-items 50 --include-rss
news-intel digest --topic "" --days 7 --include-metadata-only
```
用于:
- 出现信号后的深度挖掘。
- 收集上下文。
- 公开文章丰富。
- 每周研究简报。
- 源诊断和仅限元数据的披露。
研究模式保守地将 GDELT 用于主题发现,将 Fundus(可选)用于公开文章丰富,并使用简报渲染以获得更长的简报。GDELT 和 Fundus 的失败应降级为警告,而不是破坏核心的 RSS 扫描路径。
## 故障排除
- `news-intel: command not found`:激活 `.venv`,运行 `python3 -m pip install -e .`,或检查 `which news-intel`。
- `news-intel doctor` 退出代码为 `2`:这意味着 `Status: usable_but_degraded`,而不是损坏。阅读 `Degraded components`、`Why this is not fatal` 和 `Recommended action`。Fundus 不可用、GDELT 429 以及缺少 OpenClaw 注册对于本地扫描来说是非致命的。
- Fundus 不可用:使用 `python3 -m pip install -e ".[fundus]"` 安装可选的额外依赖;在 macOS 原生依赖项错误时,运行 `brew install lz4 xz zstd`,并使用 Homebrew 的包含/库标志重试。
- GDELT HTTP 429:等待并稍后使用 `--max-queries 1 --use-cache-first` 重试;RSS 和 Google News RSS 扫描应仍然有效。
- `morning-scan` 返回零信号:当不存在高/中信号时,零可能是正常的。要检查更多内容,请运行 `news-intel morning-scan --show-seen` 或 `news-intel scan --all-watchlists --since "24h" --min-confidence low --group-by-primary --show-rejected --show-seen`。
- OpenClaw 技能不可见:运行 `bash scripts/install_openclaw_skill.sh`,然后运行 `openclaw skills info news-intelligence`;如果过时,请使用 `openclaw stop` 和 `openclaw start` 重启。
- OpenClaw 使用了过时的技能:将 `openclaw-skills/news-intelligence/SKILL.md` 与 `~/.openclaw/custom-skills/news-intelligence/SKILL.md` 进行比较,然后重新运行安装脚本。
- Google News RSS 仅缓存:缓存的元数据对于扫描是可以接受的;如果查询源没有返回新条目,请稍后重新运行。
- 输出中没有 URL:当 URL 可用时,扫描输出使用 markdown 链接;没有 URL 的源记录将显示为不可用,而不是捏造。
## 开发
项目结构:
```
news_pipeline/
cli.py # CLI entrypoints
scanner.py # fast scan, routing, clustering, signal output
collector.py # GDELT/topic collection and enrichment orchestration
digest.py # search and digest markdown rendering
storage.py # SQLite storage
config.py # sources/watchlists configuration loading
ingest/ # RSS, GDELT, Fundus adapters
config/
sources.yaml
watchlists.yaml
openclaw-skills/
news-intelligence/SKILL.md
scripts/
setup.sh
install_openclaw_skill.sh
setup_with_fundus.sh
smoke_test.sh
```
设置:
```
bash scripts/setup.sh
source .venv/bin/activate
```
验证:
```
pytest -q
bash scripts/smoke_test.sh
news-intel doctor
news-intel morning-scan
```
本地运行时文件被有意忽略:`.venv/`、`data/*.sqlite`、日志、缓存和本地 OpenClaw 运行时配置。
## 许可证
MIT
标签:RSS, SQLite, 数据聚合, 文档结构分析, 新闻情报, 本地部署, 逆向工具