返回 Skill 列表
extension
分类: 安全与合规需要 API Key

crypto daily report

加密货币日报生成技能。当用户要求生成日报、出日报、发日报、加密新闻日报时激活。按固定板块结构采集数据、处理脱水、排版后分三条消息发送到 Telegram 加密新闻 Topic。

person作者: blockpunk2077hubclawhub

加密货币日报 Skill

触发词

"出日报" / "生成日报" / "加密日报" / "日报" / "发日报"

输出目标

Telegram 加密新闻 Topic(threadId: 182747,chatId: 680162114) 分三条消息发送(见【排版规范】)

静默执行原则(重要)

  • 执行过程中不向用户输出任何中间状态文字,包括:
    • "开始采集数据"、"并行启动所有数据源"
    • "数据采集完成,开始组装日报"
    • "三条消息字符数均在限制内,开始发送"
    • "日报已发送完毕"
    • 任何执行进度说明、重点提示、分析总结
  • 三条消息发送完毕后,主会话回复仅用 NO_REPLY,不追加任何内容

执行流程

Step 1:并行数据采集(全部同时发起)

快讯网站(主力,用 web_fetch):

  • BlockBeats: https://www.theblockbeats.info/newsflash
  • Odaily: https://www.odaily.news/zh-CN/newsflash
  • PANews: https://www.panewslab.com/zh/newsflash
  • CoinDesk: https://www.coindesk.com/latest-crypto-news

价格数据:

python3 skills/crypto-daily-report/scripts/fetch_prices.py

Meme 趋势:

python3 skills/crypto-daily-report/scripts/fetch_meme_trending.py

DeFi 生息:

python3 skills/crypto-daily-report/scripts/fetch_defi_yields.py 5

RootData 热榜(内部权重,不对外展示标签):

python3 skills/rootdata/scripts/rootdata.py hot --limit 20
python3 skills/rootdata/scripts/rootdata.py funding --limit 10

OpenNews 高分补漏(score≥75):

TOKEN=$(grep OPENNEWS_TOKEN ~/.openclaw/.env | cut -d'=' -f2)
curl -s -X POST "https://ai.6551.io/open/news_search" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"minScore": 75, "limit": 20, "page": 1}'

Step 2:融资信息补全(重要)

RootData 融资列表拿到后,逐个去 BlockBeats 搜索项目名补充机构信息:

https://www.theblockbeats.info/search?q=<项目名>
  • 找到对应快讯后用 web_fetch 读取原文
  • 从原文提取:领投机构、参投机构(≤3个)
  • ⚠️ 禁止用 Tavily 猜测机构名,必须从快讯原文获取
  • ⚠️ 每个项目必须有独立链接,禁止将 A 项目的链接用在 B 项目上
  • 若 BlockBeats 搜索无结果,尝试 Odaily 或 PANews,仍无则标注"参投机构未披露"

Step 3:内容处理与脱水

处理原则:

  • 去重:同一事件只在最相关板块出现一次
  • 脱水:每条新闻提炼核心信息,1-2句话
  • 重要性过滤:优先 OpenNews 高分(≥75)、快讯头条、RootData 今日新上榜项目
  • 时效过滤:只展示当日新闻;融资动态只展示最近一周

Step 4:按板块组装

板块结构

① 头条新闻

  • 1-2 条,仅当日最重要

② 融资动态

  • 最近一周,≤5条
  • 每条:项目名、业务介绍(1句)、金额/轮次、参与机构(≤3个)、一条链接

③ 重大更新

  • ≤5条,涵盖:产品上线、主网/测试网、重要公告、大事件
  • 大额代币解锁仅最重要的一条作为更新展示

④ Alpha 前线

  • 飙升 Meme 速递(GeckoTerminal 实时数据)
  • 社区热议 Alpha 项目(3-4条,RootData热榜 + opentwitter 结合)
  • 热门赛道叙事(1段,当日最强叙事)

⑤ 链上与 DeFi

  • 链上数据:CEX 净流入/流出(Coinglass)、鲸鱼动向,不展示爆仓金额
  • 生息机会:DeFiLlama yields API 数据,展示协议/资产/链/APY/TVL

⑥ 观点洞见

  • 精选 ≤3条,来源:KOL推文、机构报告、研报

⑦ 交易数据

  • 现货:BTC / ETH / SOL / HYPE
  • ETF 资金流向
  • 期货/衍生品(简洁1-2句)
  • 市场判断(2-3句)

⑧ 宏观与政策

  • 加密监管:≤1条
  • 宏观经济数据(简洁,含近期重要数据发布提醒)

Step 5:排版与发送

分三条消息发送,格式如下:


消息一:头条 + 融资

📰 *加密货币日报 · YYYY年M月D日*
_来源:BlockBeats · Odaily · PANews · CoinDesk · Binance 实时_

━━━━━ 🔴 头条 ━━━━━

*[标题]*
[1-2句正文]
→ [来源链接]

━━━━━ 💰 融资动态 ━━━━━

▪ *项目名 · 金额 轮次*
业务介绍(1句)
机构1、机构2、机构3参投 · 日期
→ [链接]

消息二:重大更新 + Alpha 前线 + 链上DeFi

━━━━━ 🚀 重大更新 ━━━━━

▪ *项目名(代币)事件标题*
1-2句描述
→ [链接]

━━━━━ 🎯 Alpha 前线 ━━━━━

*飙升 Meme 速递*(GeckoTerminal Solana 实时)
代币名 · +X% · 量 $XM · FDV $XM
→ [DEX链接]

*社区热议 Alpha 项目*

▪ *项目名* — 1句描述,热度说明
→ [链接]

*热门赛道叙事*
[1段文字]

━━━━━ 📊 链上与 DeFi ━━━━━

*链上数据*
[CEX流向等]

*生息机会*(DeFiLlama 实时)
协议 · 资产 · 链 · APY X% · TVL $XM
→ [链接]

消息三:观点 + 交易数据 + 宏观

━━━━━ 💬 观点洞见 ━━━━━

▪ *来源名称*:内容(1-2句)
→ [链接]

━━━━━ 📈 交易数据 ━━━━━

*现货价格*(Binance,HH:MM BJ)
BTC  $XX,XXX · +X.XX%
ETH  $X,XXX · +X.XX%
SOL  $XX.XX · +X.XX%
HYPE  $XX.XX · +X.XX%(合约)

*ETF*:[一句话]
→ [链接]

*期货*:[一句话爆仓数据]

*判断*:[2-3句]

━━━━━ 🌐 宏观与政策 ━━━━━

[宏观数据 + 近期重要发布提醒]
→ [CME FedWatch链接]

*监管*:[1句]
→ [链接]

错误处理与降级策略

数据源故障处理

| 数据源 | 故障类型 | 降级策略 | |--------|---------|---------| | BlockBeats/Odaily/PANews | 超时/403 | 跳过该站,其余三站补全;所有站均失败则标注 [快讯暂时不可用] | | CoinDesk | 超时 | 跳过,不影响其他板块 | | Binance 现货 API | 超时/限流 | 重试2次(间隔1.5s),仍失败输出 [DATA UNAVAILABLE] | | Binance 合约 API(HYPE) | 超时 | 同上,标注 HYPE: [DATA UNAVAILABLE] | | GeckoTerminal(Meme) | 403/超时 | 自动降级到 DEXScreener token-boosts;两者均失败则标注"今日 Meme 数据暂不可用" | | DeFiLlama yields | 超时 | 重试2次,仍失败输出 "[DATA UNAVAILABLE] 请访问 defillama.com/yields" | | RootData | 超时/限额 | 跳过融资/热榜板块,标注 [RootData 暂不可用] | | OpenNews API | 超时/401 | 跳过补漏步骤,仅用快讯网站内容 | | BlockBeats 搜索(融资机构) | 无结果 | 依次尝试 Odaily → PANews;仍无则标注"参投机构未披露" |

重试规范

  • 脚本内置重试:最多2次,指数退避(1s, 2s)
  • 整体采集超时:单个数据源超过15s视为失败,跳过,不阻塞其他板块
  • 绝不因单点失败中断整个日报

标记规范

  • [DATA UNAVAILABLE] — 数据源无响应
  • [未验证] — 来源可信度存疑
  • ⚠️ 降级数据 — 使用了备用数据源

字数控制规范

Telegram 单条消息上限:4096 字符(UTF-16 code units) 建议每条不超过 3800 字符(留 ~200 字符余量)

发送前检查

每条消息组装完成后,用以下方式估算字符数:

# 快速估算:中文字符按1.5倍计,emoji 按2倍计
def estimate_chars(text):
    count = 0
    for ch in text:
        cp = ord(ch)
        if cp > 0xFFFF:   count += 2   # emoji
        elif cp > 0x4E00: count += 1   # 中文等 BMP 字符
        else:             count += 1
    return count

或用脚本:echo "消息内容" | python3 skills/crypto-daily-report/scripts/check_length.py

各消息字数预算

| 消息 | 内容 | 建议上限 | |------|------|---------| | 消息一 | 头条 + 融资 | 1500 字符 | | 消息二 | 重大更新 + Alpha + DeFi | 3000 字符 | | 消息三 | 观点 + 交易 + 宏观 | 1800 字符 |

超出时的压缩优先级

  1. 压缩"热门赛道叙事"段落(最长,最可压缩)
  2. Alpha 项目描述缩减到1句
  3. Meme 速递减少条目(5条→3条)
  4. 观点洞见减少到2条
  5. 生息机会减少到3条

全局规范

  • 禁止表格(Telegram 不渲染)
  • 禁止二级缩进
  • 每条内容只保留一个链接
  • 禁止展示 RootData 内部权重标签
  • 反幻觉:所有数据必须来自本次会话实际查询,不确定的标注 [未验证]
  • 时效:快讯只用当日内容;价格数据记录抓取时间

脚本位置

skills/crypto-daily-report/scripts/
├── fetch_prices.py        # BTC/ETH/SOL 现货 + HYPE 合约价格
├── fetch_meme_trending.py # GeckoTerminal Solana trending Meme
├── fetch_defi_yields.py   # DeFiLlama 主流协议生息机会
└── fetch_news.sh          # 并行抓取四个快讯网站(备用)

数据源速查

| 数据 | 来源 | 方式 | |------|------|------| | 快讯 | BlockBeats/Odaily/PANews/CoinDesk | web_fetch | | 价格 | Binance API | fetch_prices.py | | Meme | GeckoTerminal | fetch_meme_trending.py | | DeFi yield | DeFiLlama | fetch_defi_yields.py | | 融资/热榜 | RootData | rootdata.py | | 高分新闻 | OpenNews 6551 API | curl POST | | Alpha KOL | OpenTwitter 6551 API | curl POST | | 融资机构详情 | BlockBeats 搜索 | web_fetch 原文 | | ETF 数据 | CoinDesk / Coinglass | web_fetch | | 链上数据 | Coinglass | web_fetch |