Get 笔记
两件事,共用一个 biji.com 登录态:
- 同步:账号里的笔记(录音、链接、文字)存成
<笔记目录>下按日期分的 Markdown,增量更新 - 转逐字稿:链接或本地音视频交给 Get 转写,取回文字后删掉 Get 里的临时笔记
下文 <skill-dir> 是本文件所在的目录;<状态目录> 是环境变量 GET_BIJI_HOME 的值,没设就是 ~/.config/get-biji/。登录态、同步记录和 <笔记目录> 的位置都记在 <状态目录>,重装 skill 不受影响。
首次准备
需要 Node.js 18 及以上。
bashcd <skill-dir> && npm install && npx playwright install chromium
chromium 约 250MB,只用来登录。装好的标志:node -e "require('playwright')" 不报错。按需再装:ffmpeg(含 ffprobe,转本地音视频时用),yt-dlp(下载其他网站的音视频时用)。
登录
没有登录态或登录态过期(约 90 天一次)时,任何脚本都会打开一个 Chrome 窗口,等用户登录 biji.com,最多等 10 分钟:
- 先告诉用户:电脑上会弹出浏览器,请在里面登录 Get 账号,登录后窗口会自己关
- 命令放后台跑,盯着输出:出现
Login successful就是登录好了,脚本接着干原来的活 - 报
Cannot open a browser是机器没有图形界面(远程服务器、云端环境):请用户在自己电脑上装好这个 skill 先跑一次,再把那台电脑的<状态目录>拷过来
同步
第一次同步先问用户笔记放哪,要绝对路径。录音转写是隐私,提醒他别放进会推到公开仓库的目录。
bashcd <skill-dir> && OUTPUT_DIR="<笔记目录>" node scripts/sync.js
之后不用再带 OUTPUT_DIR,脚本用记下的目录;想知道是哪个,看 <状态目录>/config.json 的 outputDir。带上新的 OUTPUT_DIR 就是换目录,会把全部笔记重新同步到新目录。
TEST_LIMIT=3:只同步最新的 3 条,第一次可以先试,看看格式SINCE_DATE=YYYY-MM-DD:只同步这天及以后的,默认全部
第一次全量同步每条 1 到 2 秒,笔记多就放后台跑。退出码 0、结尾是 Sync Completed,就是全部同步好了。退出码 1 时结尾会列出失败的笔记,直接重跑,只补没拉下来的。
查笔记
先读 references/检索.md:笔记文件长什么样,怎么由粗到细地搜。
搜之前先把新进 Get 的笔记补上,看 <状态目录>/sync-state.json 分两种:
- 有
fullSyncAt(本地是全的):不带SINCE_DATE跑一次同步。它只拉还没拉过的笔记,录音卡隔几天才传上来的录音也补得到,平时几十秒就完。按日期窗口同步会漏掉窗口外晚到的录音,所以这种情况一律完整同步 - 没有
fullSyncAt(本地只同步过一部分,比如用户只试跑过):完整同步会把所有没拉过的都拉下来,可能要很久,先别跑。问最近的事,用SINCE_DATE=<一个月前的日期>补一段再搜;不管问什么,回答时都说明本地不全、搜不到不等于没有,问用户要不要全量同步
每次同步都要把 Get 的笔记列表从头翻一遍,笔记多的账号光这一步就要几十秒到一两分钟。
转逐字稿
bashcd <skill-dir> && node scripts/link-transcript.js "<链接>" --json cd <skill-dir> && node scripts/link-transcript.js --file "<本地路径或媒体直链>" --json
链接和路径都加引号,分享链接里的 ?、& 会被 shell 吃掉。
按来源选路,免费的先走:
| 来源 | 走法 | 额度 |
|---|---|---|
抖音、小红书、B 站(认 ?p=N 分 P)、小宇宙链接 | 链接解析 | 不扣 |
| 链接解析报错,或其他网站的音视频 | 先下载到本地(比如用 yt-dlp),再 --file | 按时长扣 |
| 本地音视频 | --file | 按时长扣 |
| YouTube | 用别的工具拿字幕:Get 会抓到错误语言的字幕轨 | — |
--file 按音频时长扣每月的转写额度,四舍五入到分钟,同一个文件重复传也照扣;单个文件最长 3 小时、最大 1GB。上传前先看时长:ffprobe -v error -show_entries format=duration -of csv=p=0 "<文件>"(单位秒),告诉用户大约扣几分钟,超过 30 分钟的等他确认。
stdout 只有一行 JSON:
title、url:标题和规范化后的链接text:给用户的正文source:get-corrected是 Get 按提示词出的纠错稿,直接交付;get-raw(链接解析)和get-upload-raw(--file)是原始识别,专有名词和同音字常错,先纠错再交付。出不出纠错稿由 Get 决定,同一个平台也会变,以这个字段为准raw:原始识别全文;corrected:来源是纠错稿时就是text,来源是原始识别时是 Get 的智能总结minutes:--file实际扣的分钟数
逐字稿太长、不适合直接贴在对话里时,问用户存到哪个文件。
纠错原始识别
按段切成约 3000 字的块,每块只改错别字、同音字和品牌型号等专有名词,补全标点;时间戳、分段、说法和内容一律原样保留。corrected 里的智能总结专有名词基本是对的,拿来当参照。一块纠完长度变了 15% 以上,说明被删改了,这块退回原文。逐字稿长的,分块交给更便宜的模型并发去纠。
出问题时
- 反复要求登录、或者登录相关报错:删掉
<状态目录>里的token-cache.json和auth-state.json,重新运行登录 - 同步记录丢了(换了电脑、删了
<状态目录>),但笔记目录还在:带上OUTPUT_DIR跑node scripts/rebuild-state.js,按硬盘上已有的文件重建记录,缺的下次同步补上 - 同一条笔记出现多个总结文件:
node scripts/dedupe.js按 note_id 去重,留最大的那份,连同它配对的原文文件一起删 - 转逐字稿时加
--keep,Get 里的临时笔记会留着不删,排查用


