一键导入
radar-data-collection
雷达数据采集 Skill — 采集金价、国际政治、AI热讯,写入 PostgreSQL 向量数据库,验证新闻真实性,按日期归档。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
雷达数据采集 Skill — 采集金价、国际政治、AI热讯,写入 PostgreSQL 向量数据库,验证新闻真实性,按日期归档。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
微信公众号短评论发布技能,专为「直隶按察使」公众号的卡兹克风格评论方向定制。 适用:一事一议的短观点、热评reaction、资讯点评(**1000-1500字**,2026-06-04 佳哥确认)。 触发条件:用户说「评论」「热评」「观点」「点评」「说两句」。 ⚠️ **branding 检查铁律(用户零容忍红线,2026-06-04 与 zhiliGitHub 对齐)**: - 作者字段**固定填 `刘生`**(2 字符),**禁止**填 `卡兹克` / 留空 / 其他名字 - 文章底部「作者:xxx」也填 `刘生` - 禁用字符串清单:`['卡兹克', 'khazix', 'zhiliGitHub', 'zhiliComments', '本文由', '一键三连', '扫码', 'wzglyay', '自动发布', 'jacardl']` - 完整检查方式见 zhiliGitHub SKILL.md 顶部「🚫 branding 检查铁律」段
微信公众号长文发布技能,专为「直隶按察使」GitHub 黑马项目方向定制(1500-2000字)。 触发:用户说「写文章」「发长文」「GitHub」「黑马」。 技能边界:本技能只管 GitHub 黑马长文,**不替兄弟技能定规范**。短评/Reaction → `social-media/zhilicomments/`;日常复盘 → `openclaw-imports/zhili-publish/`。完整边界见 `references/skill-boundary.md`。 执行前必读:①写 markdown 草稿(1500-2000字);② `python3 scripts/render_zhili_article.py /tmp/draft.md /tmp/article.html`;③ 配图调用 `zhili-illustration`;④ `python3 scripts/validate_zhili_article.py --title "<标题>"`;⑤ pre-submit 清单;⑥ `python3 scripts/push.py [--html /tmp/article.html]` 推草稿。配图最多 5 张,封面 16:9 PIL 裁剪 900×383。旧脚本 `publish_zhili.py` 已废弃(2026-06-28)。⚠️ 不要凭记忆手写 HTML CSS,用脚本生成。
直隶按察使公众号长文输出技能。基于素材(视频/音频/文字稿)产出 4000-5500 字的中文公众号长文(HTML + markdown 双格式),**自动对接 zhili-publish 推送到草稿箱**。 触发条件(满足任一即触发): - 用户说"基于 [素材] 写一篇公众号长文"/"写一篇 4000-5000 字" - 用户粘贴视频链接(B 站/YouTube/播客)+ "写长文"/"写成公众号" - 已有 transcript_clean.txt + 用户说"扩写"/"做长文"/"写成文章" - 用户说"zhili long [主题]"或"长文输出" - 用户说"这篇写完后直接发到草稿箱"/"一键发布到直隶按察使" 不适用:短评(用 zhilicomments-publish)、教程(用 khazix-writer)、GitHub 项目介绍(用 khazix-writer 模板) ...
🛰️ 雷达数据采集(生产版 v5.1):金价改用新浪hq_GC+USD/CNY换算,新增沪金Au99.99国内现货价,新增gold_note字段
Evidence-backed GEO keyword and Prompt Map research for Chinese AI visibility. Use when asked to generate GEO keywords, AI-search prompts, prompt/question coverage, Nanobot prompt-map JSON, or grouped questions for 品类问题、场景问题、品牌问题、竞品比较问题; also use for this GEO diagnostic page's Step 3 prompt analysis.
招投标 / 标书分析 Skill。默认输出两个 Markdown 文档:①应标清单(符合性、经济标、商务标、技术标、技术规格强制响应、视频/证明材料、排除项、P0-P4执行优先级);②交付物清单(中标后系统/数据/模型/平台/云资源/部署/文档/验收/付款/售后/知识产权/安全/违约与澄清)。触发条件:标书分析、招投标分析、应标清单、投标材料清单、评分表拆解、交付物清单、RFP/RFQ/RFI、招标文件分析。
| name | radar-data-collection |
| description | 雷达数据采集 Skill — 采集金价、国际政治、AI热讯,写入 PostgreSQL 向量数据库,验证新闻真实性,按日期归档。 |
| metadata | {"openclaw":{"emoji":"🛰️"}} |
每日 06:00 北京时间执行。采集金价、国际政治、AI热讯,写入 radar 数据库的 news_articles 和 gold_prices 表。
| 类型 | 来源 | 数量 |
|---|---|---|
| 国际金价 | Kitco(伦敦现货,USD/盎司) | 1 条 |
| 国内金价 | 权威国内平台(沪金现货,CNY/克) | 1 条 |
| 国际政治 | RSS 聚合(BBC/Guardian/FT/NYT/Al Jazeera)+ 9Router 补充搜索 | 10 条 |
| AI热讯 | aihot.virxact.com 精选 | 10 条 |
| 来源 | 状态 | RSS URL | 策略 |
|---|---|---|---|
| BBC News | ✅ 直连可用 | https://feeds.bbci.co.uk/news/world/rss.xml | 直接 curl 获取 |
| The Guardian | ✅ 直连可用 | https://www.theguardian.com/world/rss | 直接 curl 获取 |
| FT | ⚠️ 301跳转但内容完整 | https://www.ft.com/rss/home | curl -sL 跟进 301 即可获取完整 RSS |
| NYT | ✅ 直连可用 | https://rss.nytimes.com/services/xml/rss/nyt/World.xml | 直接 curl 获取 |
| Al Jazeera | ✅ 直连可用 | https://www.aljazeera.com/xml/rss/all.xml | 直接 curl 获取 |
| France24 | ✅ 直连可用 | https://www.france24.com/en/rss | 直接 curl 获取 |
| Reuters | ❌ RSS 通道被关 | https://news.google.com/rss/search?q=site:reuters.com&hl=en-US&gl=US&ceid=US:en | Google News RSS 过滤 site:reuters.com |
| AP News | ❌ RSS 通道被关 | https://news.google.com/rss/search?q=site:apnews.com+world&hl=en-US&gl=US&ceid=US:en | Google News RSS 过滤 site:apnews.com |
| CNN | ⚠️ CNN 官方 RSS 已关闭 | https://news.google.com/rss/search?q=site:cnn.com+world&hl=en-US&gl=US&ceid=US:en | Google News RSS 过滤 site:cnn.com |
date -d '+8 hour' '+%Y-%m-%d'
article_date = 北京时间今天日期
字段:intl_price_usd, intl_price_change, domestic_price_cny, domestic_price_change
采集顺序(强制):RSS 批量拉取 → 按发布日期筛选 → 不足 10 条时用 9Router 搜索补采
同时拉取以下所有 RSS feed(使用 curl -sL 并行获取):
# 示例:一次性批量获取 RSS
RSS_URLS=(
"https://feeds.bbci.co.uk/news/world/rss.xml"
"https://www.theguardian.com/world/rss"
"https://www.ft.com/rss/home"
"https://rss.nytimes.com/services/xml/rss/nyt/World.xml"
"https://www.aljazeera.com/xml/rss/all.xml"
"https://www.france24.com/en/rss"
"https://news.google.com/rss/search?q=site:reuters.com&hl=en-US&gl=US&ceid=US:en"
"https://news.google.com/rss/search?q=site:apnews.com+world&hl=en-US&gl=US&ceid=US:en"
"https://news.google.com/rss/search?q=site:cnn.com+world&hl=en-US&gl=US&ceid=US:en"
)
for url in "${RSS_URLS[@]}"; do
response=$(curl -sL --max-time 8 "$url")
# 解析 XML,提取 title, description, pubDate, link
# pubDate 用于时效性筛选,description 可作为事件摘要
# FT 要用 curl -sL(自动跟随 301)
done
Python 解析 RSS XML(每条 RSS 返回标准格式):
import xml.etree.ElementTree as ET
root = ET.fromstring(xml_data)
for item in root.findall('.//item'):
title = item.findtext('title', '')
desc = item.findtext('description', '') # 事件摘要
pub_date = item.findtext('pubDate', '') # RFC 2822 格式
link = item.findtext('link', '')
source = item.findtext('source', '') or extract_domain(link)
时效性筛选:取 pubDate 在当天/前 1 天范围内的 RSS 条目
搜索 query:international political news today
筛选来源:Reuters / AP / AFP / Al Jazeera / BBC / FT
验证:每条必须附来源 URL,缺失则丢弃
每条候选新闻入库前必须验证发布时间。时效性是硬约束,禁止将过时新闻写入当日数据。
验证方法(按优先级):
/2026/5/13)article_date - 2天,则丢弃该条/年/月/日 或 /年-月-日/ 格式的日期路径,直接提取并判断:
验证规则:
article_date 或 article_date - 1天(允许前一天的夜间新闻)/2026/5/13/ 直接暴露发布日期为 2026-05-13,远早于当天,必须丢弃/articles/xxxxx 无显式日期但页面 title 会标注时间(如 "3 hours ago"),用 web_fetch 提取落地实现:
# 伪代码流程
candidates = 9Router search
validated = []
for each candidate:
# 方法1:URL路径分析
date_from_url = extract_date_from_url(candidate.url)
if date_from_url and date_from_url < article_date - 1:
continue # 丢弃旧新闻
# 方法2:web_fetch 抓取验证
result = web_fetch(candidate.url, extractMode='markdown', maxChars=300)
if "hours ago" in result or "minutes ago" in result:
validated.append(candidate) # 大概率当天新闻
elif specific_date_in_page < article_date - 1:
continue # 明确过时
else:
# 无法判断的,用 baoyu 或 9Router 兜底验证
result2 = baoyu/9router_fetch(candidate.url)
# 仍无法判断 → 丢弃(宁缺毋滥)
validated.append(candidate) # 通过验证
达标要求:至少采集 ≥10 条通过时效性验证的新闻。不足时重新搜索补采。
采集策略(落地版,强制按顺序执行)
说明:RSS 主链路的优势——无反爬墙、完整标题+摘要+发布时间+URL、纯文本低开销。 Google News RSS 的局限:标题可能被截断,source 字段保留原始来源。 候选链接如果是频道页/聚合页,必须继续下钻到具体事件稿;不能直接入库。
内容增强要求(强制,服务下游推送)
字段写入规范:
title:写中文标题(便于推送直读)content:按固定模板存储:
中文标题:...
English Headline: ...
事件介绍:...
背景/影响:...
source, url, category='politics', lang='zh'UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 aihot-skill/0.2.0"
curl -s -H "User-Agent: $UA" \
"https://aihot.virxact.com/api/public/items?mode=selected&take=10"
解析返回的 JSON,取 title、publishedAt、summary、source、url
字段:category='ai', lang='zh'
# Ollama 地址(nomic-embed-text,768维)
OLLAMA_URL="http://localhost:11434/api/embeddings"
MODEL="nomic-embed-text"
# 对每条 title+content(前500字)调用 embedding
curl -s -X POST "$OLLAMA_URL" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$MODEL\",\"prompt\":\"$TEXT\"}" \
| python3 -c "import sys,json; print(','.join(map(str,json.load(sys.stdin)['embedding'])))"
维度 768,写入 embedding 字段(格式:'[v1,v2,...]')。
# 金价写入
docker exec radar-db psql -U radar -d radar -c \
"INSERT INTO gold_prices (price_date, intl_price_usd, intl_price_change, domestic_price_cny, domestic_price_change)
VALUES ('${ARTICLE_DATE}', ${INTL_PRICE}, ${INTL_CHANGE}, ${DOMESTIC_PRICE}, ${DOMESTIC_CHANGE})
ON CONFLICT (price_date) DO UPDATE SET
intl_price_usd = EXCLUDED.intl_price_usd,
intl_price_change = EXCLUDED.intl_price_change,
domestic_price_cny = EXCLUDED.domestic_price_cny,
domestic_price_change = EXCLUDED.domestic_price_change;"
# 新闻写入(每条一条INSERT)
docker exec radar-db psql -U radar -d radar -c \
"INSERT INTO news_articles (article_date, category, title, content, source, url, lang, embedding)
VALUES ('${ARTICLE_DATE}', '${CATEGORY}', '${TITLE}', '${CONTENT}', '${SOURCE}', '${URL}', '${LANG}',
'[${EMBEDDING}]');"
采集完成后执行:
SELECT article_date, category, COUNT(*) FROM news_articles GROUP BY article_date, category;
SELECT * FROM gold_prices WHERE price_date = '${ARTICLE_DATE}';
确认条数符合预期(国际政治≥10条,aihot≥8条),缺条则补采。
并抽查国际政治结构完整性(必须含中英对照+事件介绍):
SELECT COUNT(*) FROM news_articles
WHERE article_date='${ARTICLE_DATE}' AND category='politics'
AND content LIKE '%English Headline:%'
AND content LIKE '%事件介绍:%';
若不达标,继续补采并覆盖更新。
Host: localhost:5444
Database: radar
User: radar
Password: radar
连接方式:docker exec radar-db psql -U radar -d radar -c "SQL"
memory/YYYY-MM-DD.md完成后输出简洁报告:
🛰️ 数据采集完成 [日期]
✅ 金价:国际 ${INTL_PRICE} (${CHANGE}) / 国内 ${DOMESTIC_PRICE}
✅ 国际政治:${N} 条
✅ AI热讯:${N} 条
⏱️ 耗时:${SEC}s