赚钱宝看板 · 安装与运维
这是什么
一个跑在用户自己电脑上的 A 股复盘看板(单文件网页 + 本地 Python 服务器)。
行情、涨停池、板块资金、研报、大V观点全自动抓取,数据不经过任何第三方服务器。
程序文件全部在本 skill 的 assets/ 目录下,不要凭记忆重写这些文件,
一律用 assets/ 里的原件。
关键前提(先看这条,能省一半对话)
- 核心功能只用 Python 标准库,不需要 pip 装任何东西
playwright只有「大V音频转写」「IMA 网页端研报」两条链路需要,是可选增强- 默认端口 8765,被占用自动顺延 8766
bridge.py内置调度器,只要进程在跑,定时任务就会执行,不依赖 WorkBuddy 客户端- bridge 进程不能停:停了服务就断,数据停止更新。用
pythonw起则无窗口,用python起则终端不能关 - 技能包里没有
.bat(平台不允许可执行脚本进包),启动一律用python bridge.py
典型使用示例
用户这么说的时候,按下面的意图处理:
| 用户说 | 你的动作 |
|---|---|
| 帮我装赚钱宝看板 | 走「安装流程」四步,装完给地址 |
| 赚钱宝启动不了 | 走「故障诊断顺序」,不要一上来就重装 |
| 赚钱宝的研报卡片是空的 | 对着「数据源配置」表,告诉用户缺哪个文件 |
| 把研报任务改成 8 点跑 | 改 bridge.py 的 _SCHED_JOBS,改完重启 |
| 怎么多跟一个大V | 改 dashi_watch.json / douyin_accounts.json |
| 赚钱宝能放服务器上手机看吗 | 能,但必须加访问控制——页面上有用户持仓 |
依赖与权限声明
Python 依赖:核心功能零第三方库(urllib / http.server / json 全是标准库)。
可选:playwright(大V与研报网页端)、akshare(板块备用源)、faster-whisper(本地语音转写)。
不装可选依赖时,只有对应卡片为空,不会影响行情等核心功能。
需要用户自己提供的密钥(全部只写本地 json,绝不上传、绝不在对话里回显):
| 用途 | 文件 | 不填的后果 |
|---|---|---|
| IMA 研报(OpenAPI) | ima_config.json |
退回本地文件夹监听 |
| 大模型脱水 | llm_config.json |
走本地规则抽取,质量下降 |
| 知识星球 | 用户自备 cookie | 该卡片空着 |
这个技能会做的本地操作(安装前如实告知用户):
- 起一个本地 HTTP 服务,只监听 127.0.0.1,不对外开放
- 在技能目录内执行子进程调用抓取脚本
- 读写技能安装目录内的 json 文件,以及用户显式指定的研报监听目录
- 联网访问东财 / 雪球 / 知乎 / 搜狗 / 抖音等公开页面,读取公开数据
安装流程
第 1 步:确认 Python
python --version
- 有
Python 3.8+→ 进入第 2 步 - 没有 → 引导用户去 <https://www.python.org/downloads/> 安装,必须勾选 Add to PATH
- 有多个 Python 版本时,优先用能跑
python命令的那个
Windows 上如果 python 不可用但 py 可用,把后续命令里的 python 换成 py。
第 2 步:选安装目录并复制文件
- 问用户想装在哪,必须是不含中文和空格的路径(中文路径会让部分抓取脚本的
编码处理出问题),推荐D:\QianBaoBao - 把
assets/下的全部文件复制过去:
<安装目录>/
├── 赚钱宝.html
├── bridge.py
├── fetch_*.py / build_*.py
├── *.example.json
├── sector_keywords.json
├── holidays.json
├── data/ ← 建个空目录
└── 说明书.md
- 建空目录:
mkdir <安装目录>\data
> 注意:技能包里没有 启动看板.bat。
> SkillHub 审核不允许 .bat 这类可执行脚本进包(提交会直接报
> 「不允许的文件类型: assets/启动看板.bat」)。这不是遗漏,是平台限制。
> 启动改用下面的 python bridge.py;用户想要双击入口的话,装完在他本机生成一个即可(见第 3 步)。
第 3 步:首次启动
直接起进程,别在前台阻塞。Windows 上 pythonw 不会留黑窗口:
cd /d <安装目录>
start "" pythonw bridge.py
调试阶段想看日志就用 python bridge.py(前台,日志直接打在终端)。
如果用户想要一个双击入口,在他的机器上生成(不要从包里带):
python -c "open(r'<安装目录>\启动看板.bat','w',encoding='gbk',newline='\r\n').write('@echo off\r\ncd /d \"%~dp0\"\r\npython bridge.py\r\npause\r\n')"
> 必须是 CRLF 换行 + GBK 编码(中文 Windows 控制台代码页 936)。
> 用 UTF-8 或裸 LF 写出来,双击会一闪而过。
然后轮询就绪(首次建快照要 20~100 秒,别急着报错):
curl -s -o NUL -w "%{http_code}" "http://127.0.0.1:8765/"
拿到 200 再继续。若 8765 不通,试 8766。
第 4 步:验收
curl -s "http://127.0.0.1:8765/api/snapshot" -o snapshot.json
- 文件大小应该 > 100KB
- 用 Python 检查关键字段:
python -c "import json;d=json.load(open('snapshot.json',encoding='utf-8'));print(list(d.keys()));print('指数条数',len(d.get('indices') or {}))"
最后告诉用户:浏览器打开 http://127.0.0.1:8765/ 即可。
首次打开看到红色「数据陈旧」提示是正常的,等 1~2 分钟按 F5。
数据源配置(按用户需要逐项开)
未配置的数据源不会报错,只是对应卡片空着。先让用户看到能跑,再逐项补。
| 数据源 | 配置文件 | 说明 |
|---|---|---|
| 行情/板块/涨停池/快讯 | 无需配置 | 走东财公开接口,开箱即用 |
| IMA 研报(本地文件夹) | 无需配置 | 用户把研报另存到 IMA_Review/ 即可 |
| IMA 研报(OpenAPI) | ima_config.json |
需 api_key,每天约 20 次配额 |
| IMA 研报(网页端) | 跑一次 --login 扫码 |
信息最全,需 pip install playwright |
| 大V音频转写 | dashi_watch.json / douyin_accounts.json |
需 playwright,可选 faster-whisper |
| 雪球 / 知乎 | xueqiu_watch.json / zhihu_watch.json |
填账号列表 |
| 知识星球 | 需 cookie | 会过期,过期后重新抓 |
| 大模型脱水 | llm_config.json |
可选,默认 DeepSeek,任何 OpenAI 兼容接口都行 |
配置文件都是「复制模板 → 去掉 .example → 填内容」。每份模板第一行 _说明 写着怎么填。
> 技能包里缺两样东西,都在「完整分享包」(赚钱宝分享版.zip)里:
> ① 启动看板.bat(平台禁止可执行脚本进包,第 3 步已给生成方法)
> ② fetch_jiuyan.mjs(韭研公社涨停原因,Node 脚本,为降低审核风险未打包)。
> 需要韭研数据源时,让用户从完整分享包把这个文件复制进来,并装好 Node。
故障诊断顺序
按这个顺序查,别跳步:
- 进程在不在:
tasklist | findstr python看有没有 bridge.py - 端口通不通:8765 / 8766 各试一次
- 看日志:bridge 进程的终端输出里找
Traceback或HTTP 4xx/5xx
(用pythonw起的没窗口,改成python bridge.py前台重起一次就能看到) - 单点验证:手动跑出问题那个脚本,例如
python fetch_market.py,看它自己的报错 - 快照缓存:脚本跑通了但页面没变 → 必须
curl "http://127.0.0.1:8765/api/snapshot?force=1"强制重建
常见错误码:
| 现象 | 原因 | 处理 |
|---|---|---|
220030 |
知识库文件无下载权限 | 改用网页端通道(fetch_ima_web.py) |
220021 |
当天 API 配额用完 | 等次日恢复,别反复重试,越试越少 |
| 「登录失效」 | 网页端 cookie 过期 | python fetch_ima_web.py --login 重新扫码 |
ProcessSingleton |
残留浏览器进程占着 profile | 关掉残留 chrome,或删 data/browser_profile 后重登 |
| 跑到 8766 | 已有一个 bridge 在跑 | 先关掉旧的,别同时开两个 |
改定时任务
打开 bridge.py,搜这两个常量:
_SCHED_JOBS—— 固定时刻任务,格式(时, 分, 解释器, 脚本, 说明)FETCH_TASKS—— 周期任务,格式{"key","name","script","every"/"at","timeout","output"}
改完必须重启 bridge 才生效。
硬性约束(务必遵守)
- 不要修改
assets/里的原件,要改就改复制到安装目录的那份 - 不要在用户目录里留测试脚本,安装完清理临时文件
- 页面上的持仓/自选是用户隐私,不要读取、不要打印、不要上传
- 涉及 cookie / api_key 的操作,只能写进对应的
*.json,不要在对话里回显 - 报「装好了」之前,必须真的拿到
/api/snapshot的 200 响应并检查过字段
交付话术
安装完成后,至少告诉用户这四件事:
- 看板地址(实际端口)
- 黑窗口不能关,关了服务就停
- 哪些卡片现在是空的、分别要怎么配(对着上面的表说具体文件名)
- 数据全在本机,不经过任何服务器