daymade/pharma-daily-report
> 生成 A 股医药行业日报:从新浪财经抓取 20 只核心医药股实时行情,分析 7 大细分赛道排名、涨跌榜 TOP 3、资金流向,然后通过飞书发送富文本日报。 覆盖恒瑞医药、百济神州、智飞生物、药明康德、迈瑞医疗、片仔癀、云南白药等 20 只核心标的。 当用户需要 医药日报、医药行业日报、pharma daily report、 新浪财经医药数据、A 股医药板块分析、飞书推送医药数据、 制药行业快报 时触发。也适用于"帮我看一下今天医药板块"、 "给飞书发一份今天的医药数据"等口语化请求。
npx skills add https://github.com/daymade/claude-code-skills --skill pharma-daily-report
从新浪财经免费公开接口抓取 A 股医药板块实时行情,分析后通过飞书发送日报。
hq.sinajs.cn,GBK 编码,免费无需认证)能做的:
不能做的:
urllib,无需 pip 装任何包)hq.sinajs.cn如果用户没装 lark-cli:
npm install -g @larksuite/cli
lark-cli auth login --recommend
注意:飞书是国内服务,lark-cli 命令行前必须加 LARK_CLI_NO_PROXY=1。
问用户确认:
lark-cli profile list 查看(详见 references/feishu_profiles.md) LARK_CLI_NO_PROXY=1 lark-cli im +chat-search --query " " --page-size 20
发给自己就用 Feishu Assistant 对话。发给群就搜群名。
references/stock_pool.md)。用户可以说"只看创新药"或"加上某某股票"来定制。直接执行 scripts/daily_pipeline.py:
python3 scripts/daily_pipeline.py \
--feishu-profile <你的飞书profile名> \
--feishu-chat-id <你的飞书chat_id>
脚本一气呵成:抓数据 → 分析 → 生成日报 → 发飞书 → 存快照。
告诉用户关键数据:
http://hq.sinajs.cn/list=sh600276,sz300122,...
返回 GBK 编码文本,每行格式:
var hq_str_sh600276="股票名称,今开,昨收,现价,最高,最低,...,成交金额,...,日期,时间"
32 个逗号分隔字段。关键字段(从 0 开始数):
| 位置 | 含义 | 示例 |
|------|------|------|
| 0 | 股票名称 | 恒瑞医药 |
| 2 | 昨收 | 45.60 |
| 3 | 现价 | 46.10 |
| 4 | 今日最高 | 46.50 |
| 5 | 今日最低 | 45.30 |
| 9 | 成交金额(元) | 850000000 |
代码前缀规则:6 开头 = sh,其他 = sz。
完整字段速查见 references/sina_api.md。
20 只股票分为 7 个赛道(见 references/stock_pool.md),分析时按赛道聚合涨跌幅和成交额。
新浪免费接口不提供买卖方向数据。脚本用"涨的股票的成交额 - 跌的股票的成交额"粗略估算净流向,报告中标注为"估算"。
新浪返回的个别名称带空格(如"新 和 成"),脚本内置归一化。
飞书 markdown 消息有约 4096 字节限制。超长自动截断并标注。
交易时间 9:30-15:00 外,新浪返回上一个收盘价,涨跌幅接近 0。报告仍会显示,但数据时间可以判断是否实时。
新浪不可达时脚本报错退出,不使用缓存(金融数据宁可没有也不能是旧的)。
日报做好后,用户可能想每天自动发送。建议:
> 日报测试发送成功!要不要设置每天早上 9:03 自动发到飞书?
>
> A) 设工作日 9:03 — 每个交易日开盘前收到(推荐)
> B) 设每天 9:03 — 周末也发(数据不动但能看到)
> C) 暂时不设,手动跑就行
Take daymade/pharma-daily-report from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.