B站视频 → 字幕提取/ASR转录 → AI结构化整理 → Markdown笔记 → IMA保存
用户发送B站链接
↓
① 解析链接(短链接→BV号)
↓
② 获取视频信息(标题/UP主/时长/cid/发布时间)
↓
③ 检测字幕(B站 player/v2 API)
├── 有字幕 → ④a 提取字幕JSON → 转纯文本 → ⑤
└── 无字幕 → ④b 下载音频 → FFmpeg分段 → Coli ASR转录 → ⑤
↓
⑤ AI结构化整理(按模板整理内容)
↓
⑥ 生成Markdown笔记
↓
⑦ 保存到IMA笔记(按9大分类自动归档)
↓
⑧ 清理临时文件
将原始转录文本按以下结构整理:
# {视频标题}
## 视频基础信息
| 项目 | 内容 |
|------|------|
| **标题** | {title} |
| **UP主** | {author} |
| **时长** | {duration} |
| **发布时间** | {pubdate} |
| **BV号** | {bvid} |
| **核心主题** | {一句话概括} |
---
## 内容总览
{100字内概括:视频讲什么、解决什么问题、核心价值}
---
## 分段要点(按视频时间线)
### 00:00 - {时间节点1} {段落主题1}
- 核心观点:{提炼}
- 关键原话:"{原话摘录}"
### {时间节点1} - {时间节点2} {段落主题2}
- 核心观点:{提炼}
- 关键原话:"{原话摘录}"
...(按实际内容分段)
---
## 重点金句 / 原话摘录
> "{金句1}"
>
> — {时间节点}
> "{金句2}"
>
> — {时间节点}
...(干货名句、结论、提醒、硬核知识点)
---
## 疑问 & 待验证点
- [ ] {ASR识别不准的内容}
- [ ] {逻辑断层或需要核对的内容}
- [ ] {需要进一步查证的点}
---
## 总结复盘
### 核心结论
1. {结论1}
2. {结论2}
3. {结论3}
### 可落地行动
- [ ] {行动项1}
- [ ] {行动项2}
### 收获提炼
{个人收获、启发、延伸思考}
---
## 相关标签
#{category} #{tag1} #{tag2}
---
*本笔记由 bili-asr-md v1.2.1 自动生成*
*生成时间:{datetime}*
在生成笔记时,使用以下Prompt指导AI整理:
你是一位专业的内容整理专家。请根据视频转录文本,按以下结构整理笔记:
## 整理要求
1. **视频基础信息**
- 从API获取:标题、UP主、时长、发布时间、BV号
- 提炼核心主题:一句话概括视频主旨(不超过20字)
2. **内容总览**
- 100字内概括:视频讲什么、解决什么问题、核心价值
- 去除口语化表达、广告内容、重复内容
3. **分段要点(按视频时间线)**
- 根据内容逻辑划分段落(通常5-10段)
- 每段标注:时间节点 + 段落主题
- 提炼核心观点(简洁、准确)
- 摘录关键原话(用引号标注,保留原汁原味)
4. **重点金句 / 原话摘录**
- 干货名句、结论性判断、重要提醒
- 硬核知识点、反直觉观点
- 每句标注时间节点
5. **疑问 & 待验证点**
- ASR识别不准的专有名词、人名、地名
- 逻辑断层或前后矛盾之处
- 需要进一步查证的内容
6. **总结复盘**
- 核心结论:3-5条
- 可落地行动:具体、可执行
- 收获提炼:个人启发、延伸思考
## 处理规则
| 保留 | 去除 |
|------|------|
| 核心论点和逻辑链 | 口语化填充词(呢、啊、那个) |
| 关键数据和数字 | 重复表述 |
| 人名、地名、专业术语 | 广告/赞助内容 |
| 因果推理和论证 | 视频互动引导(点赞关注) |
| 对比和分类 | 无关闲聊/寒暄 |
| 引用原话(用blockquote) | 转录错误导致的乱码 |
## 特殊格式
- **表格**:用于对比、分类、数据展示
- **引用块**:用于重要定义、原话引用
- **加粗**:用于关键概念和核心论断
- **列表**:用于步骤、要素、要点
- **复选框**:用于待验证点和行动项
## 注意事项
- **不保留原文转录**:笔记只保留AI整理后的结构化内容,不附加原始转录文本
- 笔记应精炼、可读性强,便于快速回顾
# 短链接解析
import curl_cffi.requests as requests
resp = requests.get(short_url, allow_redirects=False, impersonate='chrome120')
location = resp.headers.get('Location', '')
# 提取 BV 号
import re
match = re.search(r'BV[a-zA-Z0-9]+', location)
bvid = match.group(0) if match else None
url = f'https://api.bilibili.com/x/web-interface/view?bvid={BVID}'
resp = requests.get(url, headers=headers, impersonate='chrome120')
data = resp.json()['data']
# 返回: title, owner['name'], duration, cid, desc, tag, pubdate
url = f'https://api.bilibili.com/x/player/v2?bvid={BVID}&cid={CID}'
resp = requests.get(url, headers=headers, impersonate='chrome120')
data = resp.json()['data']
subtitles = data.get('subtitle', {}).get('subtitles', [])
has_subtitle = len(subtitles) > 0
subtitle_url = subtitles[0]['subtitle_url']
if subtitle_url.startswith('//'):
subtitle_url = 'https:' + subtitle_url
resp = requests.get(subtitle_url, headers=headers)
data = resp.json()
lines = [item['content'] for item in data['body']]
full_text = '\n'.join(lines)
# 下载音频
ffmpeg -y -i audio.m4s -f segment -segment_time 300 -c copy seg_%03d.m4a
# ASR转录
coli asr seg_000.m4a --model sensevoice --language zh > seg_000.txt
生成笔记后,调用IMA API保存:
import subprocess, json
body = json.dumps({
"content_format": 1,
"content": markdown_content,
"folder_id": folder_id,
}, ensure_ascii=False)
result = subprocess.run(
["node", ima_api_script, "openapi/note/v1/import_doc", body],
capture_output=True, text=True, timeout=30,
)
| 分类 | folder_id | 关键词 |
|---|---|---|
| ------ | ----------- | -------- |
| 工程项目 | folder20b62306e264b6dd | 建筑、施工、土木、BIM |
| 专业学习 | folder37333337393937353639363331353438 | 学习、课程、考试、考证 |
| 读书笔记 | foldereaea2ee6391b811b | 读书、书籍、精读、书评 |
| 政经时局 | folder8f39e7b6f7447878 | 政策、经济、宏观、贸易 |
| 人文历史 | folder7a249e61af06467c | 历史、文化、考古、哲学 |
| AI与科技 | folder81e326df55544a9e | AI、编程、算法、科技 |
| 户外旅行 | folder37333338313431393235303034343038 | 旅行、攻略、户外、露营 |
| 个人生活 | folder834a1f8da53b95ae | 心理、生活、成长、育儿 |
| 工作事务 | folderba6d0bef7f5654be | 职场、效率、管理、沟通 |
| 工具 | 用途 | 安装 |
|---|---|---|
| ------ | ------ | ------ |
| curl_cffi | B站API请求 | pip install curl_cffi |
| ffmpeg | 音频分段 | 系统包管理器 |
| coli | ASR转录 | npm install -g @marswave/coli |
| ima-skill | IMA API | /data/user/skills/ima-skill/ |
共 1 个版本