从零搭建 Crypto 日报:每天 07:00 的市场早报自动推送

相比前面那篇 AI 日报,Crypto 日报有一个优势和一个劣势。优势是数据源标准化——所有加密货币的价格、链上数据、市场指标,都可以通过公开 API 拿到。劣势是噪音大——加密圈一天的信息量几乎等于传统金融一周的量,而且真假难辨。

日报搭建系列四篇:① AI 日报② 华尔街日报③ Crypto 日报(本文)④ A 股收盘分析

所以我给这套系统的定位是"速览"而不是"深度研报":每天 07:00 推送一条微信消息,核心就四块:价格、情绪、链上、新闻头条。读完不超过两分钟,但你对过去 24 小时的市场全貌心里有数。


一、数据流

价格/市场数据(crypto-daily-report skill
     BTC/ETH/SOL/HYPE/DOGE 当前价 + 24h 涨跌
     市场总市值、BTC 市占率、24h 成交量
     恐惧与贪婪指数
     永续费率、稳定币市值、全网爆仓、BTC 现货 ETF 净流入

新闻搜索
     web_search "crypto news today 2026"
     web_search "bitcoin ethereum regulation"
     每条含标题 + 描述 + 来源链接

        以上两路串行(先价格后新闻)

LLM 提炼 (deepseek-v4-pro)  结构化 Markdown

        提供微信推送到用户

和 AI 日报的结构相同:先用 skill 拿硬数据、再搜新闻补背景、最后 LLM 统一归纳。区别是 Crypto 日报不需要三路并行——价格数据和新闻搜索之间存在微弱的依赖(看了价格才知道今天重点该搜什么方向的新闻),所以用了串行


二、两个核心 Skill

crypto-priceget_token_price 函数能按 token 代码即时查价。把你要跟的代币放一个列表,一次查完:

from crypto_price import get_token_price

tokens = ["BTC", "ETH", "SOL", "DOGE"]
for t in tokens:
    data = get_token_price(t)
    print(f"{t}: ${data['price']:,.2f}  (24h {data['change_24h']:+.1f}%)")
# BTC: $87,543.12  (24h +2.3%)
# ETH: $3,241.88  (24h -0.7%)

crypto-daily-report 则把情绪指标一次性打包——恐惧贪婪指数、永续费率、稳定币市值、全网爆仓、ETF 净流入,都在一个调用里返回。cron 里不需要逐个 API 去拼,skill 已经帮你串好了。

这两个 skill 的底层分别走 CoinGecko / Alternative.me / Coinglass 的公开接口。对于每天跑一次的 cron 来说,免费层的调用额度远用不完。


三、市场情绪指标

价格本身只是一个维度。Crypto 日报里最独特的几个数据点都和交易情绪有关:

指标 含义 数据来源
恐惧与贪婪指数(0-100) <30 极度恐惧 / >70 极度贪婪 Alternative.me API
BTC 永续费率 正数=多头付钱给空头(看多过热) 交易所公开数据
稳定币市值 场内资金量(市值涨=资金流入,跌=资金流出) 链上数据
24h 全网爆仓 多头/空头各爆了多少(极端波动指标) Coinglass API
BTC 现货 ETF 净流入 机构资金方向 ETF 汇总数据

把这些数据放进一条早报里的逻辑:价格告诉你"现在什么位置",情绪指标告诉你"市场在想什么",爆仓数据告诉你"刚才发生了什么"。三组数据放在一起,比单独看价格有用得多。

crypto-daily-report skill 把这些指标的获取都封装好了。调用时只需要指定 Token 列表和一个时间窗:

crypto-daily-report
# 返回结构化数据,含价格/情绪/链上全部字段

四、新闻搜索:补定性部分

价格和指标是定量部分。新闻是定性部分。Cron 在拿到数据后,用内置的 web_search 搜索过去 24 小时的加密圈新闻:

web_search("crypto news today 2026", limit=10)
web_search("bitcoin ethereum regulation", limit=5)

每条新闻拿标题 + 一句话描述 + 来源链接。LLM 提炼那步做三件事: - 挑出最重要的 5-8 条(按"对市场影响"排序,不按时间线) - 删掉重复覆盖的(同一条新闻被多家媒体转载) - 写一段"今日要闻速览"(三句以内,概括今日主线)


五、cron 调度

Crypto 市场 24/7 无休市,没有周末空白。所以调度是全周:

cronjob(action='create',
    name='Crypto新闻日报',
    schedule='0 7 * * *',           # 每天 07:00
    model={'provider':'custom:api.deepseek.com','model':'deepseek-v4-pro'},
    skills=['crypto-price','crypto-daily-report'],
    prompt='生成每日 Crypto 市场早报...')

为什么是 07:00 而不是 00:00:加密圈的重磅消息经常在美东时间下午发(对应北京时间凌晨 3-5 点)。00:00 采会漏掉这些。07:00 覆盖了美东前一天的完整交易时段 + 隔夜突发。


六、前端:/cryptonews/ 数据日历

Crypto 日报的页面结构是所有内容页面里最轻的。路由是 /cryptonews/<date_str>,每个 date_str 对应一个 cron 输出目录下的子目录,里面存的是日报的 HTML 片段(Cron 直接生成 HTML 格式)。

Template 用的是 cryptonews.html,从 utils.py 导入 get_cryptonews_dates() + load_cryptonews() 两个函数来处理数据。页面带日期导航条,用户可以在日报之间切换。

整个页面的设计哲学就一条:极简。没有复杂的图表和交互,就是标题 + 数据栏 + 新闻速览。Crypto 信息本身已经够复杂了,展示层需要把它压平。


七、和 AI 日报骨架的关系

和前面两篇(AI 日报 + 华尔街日报)的对比:

AI 日报 华尔街日报 Crypto 日报
信息源 3 个 SKILL(百源 RSS + AI HOT + 翻译) Sina API + MoltStreet 2 个 SKILL(价格 + 市场报告)
采集策略 三路并行 指数/信号/估值三路 串行:先价格后新闻
输出格式 JSON → Flask 渲染 JSON → 卡片渲染 HTML 片段直出
失败容错 任一子代理超时可 fallback API 超时门 + 假日跳过 价格优先:API 挂了当天推送无新闻版

搞清楚了:同一副骨架(cron + LLM + 数据存档 + 网页渲染),每篇只是换了数据源和输出模板。

但 Crypto 有一点和另外三篇都不一样:它是这四个日报里唯一 24/7 不休市的。没有节假日、没有"今天不更新"的静默日。这意味着噪音过滤不是锦上添花——它是核心能力。一份好的 Crypto 早报不是"把今天的事都告诉你",而是"在 200 条噪音里挑出 3 条真正影响价格的"。这套系统的难度不在于采集,在于判断。