wiki ingest: batch 2 (+2 docs, Claude Skills & NotebookLM)

This commit is contained in:
2026-04-15 12:09:07 +08:00
parent e69c162353
commit 6742bf0093
28 changed files with 725 additions and 152 deletions

View File

@@ -1,27 +1,28 @@
# Cloud Learning 音视频处理流水线
# 音视频转录与摘要流水线
> 文档版本2026-04-15
> 维护者星枢xingshu
> 状态:✅ 已验证可运行
> 适用场景:教学视频、讲座、播客、会议录音等任意音视频内容的转录与知识库导入
---
## 一、整体架构
```
NAS 视频源
视频/音频源(本地或 NAS
[阶段1] FFmpeg 音频提取
│ MP4 → MP3
│ MP4/AVI/MKV → MP3
NAS MP3 文件库
本地/共享 MP3 文件库
[阶段2] Whisper 转录
│ MP3 → 英文字幕/转写稿
Macmini 本地转写稿
本地转写稿
[阶段3] Gemini Flash 摘要
@@ -38,7 +39,7 @@ Obsidian 知识库
| 项目 | 说明 |
|---|---|
| **输入** | NAS 上的 `.mp4` 文件(`/volume2/work/Public Cloud Learning Sessions/` |
| **输入** | `.mp4``.avi``.mkv``.mov` 等常见视频格式 |
| **输出** | 同目录下的同名 `.mp3` 文件 |
| **工具** | FFmpegMacmini 已安装:`/opt/homebrew/bin/ffmpeg` |
| **转码参数** | `-vn -acodec libmp3lame -ab 64k -ar 22050 -ac 1`64kbps CBR针对人声优化|
@@ -48,9 +49,12 @@ Obsidian 知识库
**命令示例:**
```bash
# NAS → Macmini FFmpeg → 回写 NAS
ssh shenwei@192.168.3.17 "cat '/volume2/work/Public Cloud Learning Sessions/VIDEO.mp4'" \
ssh shenwei@192.168.3.17 "cat '/path/to/video/VIDEO.mp4'" \
| /opt/homebrew/bin/ffmpeg -i pipe:0 -vn -acodec libmp3lame -ab 64k -ar 22050 -ac 1 -f mp3 pipe:1 \
| ssh shenwei@192.168.3.17 "cat > '/volume2/work/Public Cloud Learning Sessions/VIDEO.mp3'"
| ssh shenwei@192.168.3.17 "cat > '/path/to/video/VIDEO.mp3'"
# 本地文件直接转换
/opt/homebrew/bin/ffmpeg -i "/path/to/video/VIDEO.mp4" -vn -acodec libmp3lame -ab 64k -ar 22050 -ac 1 "/path/to/video/VIDEO.mp3"
```
**脚本位置:** `~/.openclaw/temp/xingshu/scripts/nas_audio_extract_v3.py`
@@ -61,7 +65,7 @@ ssh shenwei@192.168.3.17 "cat '/volume2/work/Public Cloud Learning Sessions/VIDE
| 项目 | 说明 |
|---|---|
| **输入** | NAS 上的 `.mp3` 文件已由阶段1生成|
| **输入** | `.mp3` 文件已由阶段1生成,或直接提供的音频文件|
| **输出** | 英文字幕/转写稿(纯文本)|
| **工具** | `openai-whisper`Python 包,通过 `pip install openai-whisper` 安装)|
| **模型** | `small`精度与速度平衡M 系列芯片友好)|
@@ -85,6 +89,15 @@ print(result["text"]) # 英文字幕/转写稿
**转写稿长度参考:** 1小时音频 ≈ 6000-8000 tokens英文
**模型选择参考:**
| 模型 | 内存占用 | 速度 | 精度 | 适用场景 |
|---|---|---|---|---|
| `tiny` | ~1GB | 极快 | 低 | 快速预览、噪音少的内容 |
| `small` | ~1.5GB | 快 | 中 | **推荐日常使用** |
| `medium` | ~3GB | 慢 | 高 | 重要内容、方言口音重 |
| `large` | ~5GB+ | 很慢 | 最高 | 最高精度要求Macmini 不推荐)|
---
### 阶段 3Gemini Flash 摘要
@@ -112,10 +125,10 @@ print(result["text"]) # 英文字幕/转写稿
---
## 相关视频
## 相关笔记
> [!info]+ 交叉引用
> [[相关视频文件名]] — 关联原因
> [[相关笔记标题]] — 关联原因
```
---
@@ -125,11 +138,11 @@ print(result["text"]) # 英文字幕/转写稿
**脚本位置:** `~/.openclaw/temp/xingshu/scripts/nas_whisper_gemini_summarize.py`
**核心逻辑:**
1. 扫描 NAS 上已完成`.mp3` 文件(跳过 `*.done` 中已有的)
1. 扫描指定目录下`.mp3` 文件(跳过 `*.done` 中已有的)
2. `ssh cat` 下载到 Macmini 本地临时目录
3. Whisper `small` 转录
4. Gemini Flash 摘要
5. 更新 Obsidian 对应笔记(替换 `## 摘要``## 相关视频` 之间的内容)
5. 更新 Obsidian 对应笔记(替换 `## 摘要``## 相关笔记` 之间的内容)
6. 删除本地临时文件
7. 写入 `.done` 进度文件(断点续传)
@@ -149,27 +162,27 @@ tail -f ~/.openclaw/temp/xingshu/logs/nas_whisper_summarize.log
## 四、Obsidian 笔记模板
笔记文件位于:`~/Workspace/nexus/knowledgebase/DevOps & SRE/`
笔记文件位于:`~/Workspace/nexus/knowledgebase/`
```markdown
---
title: "视频标题"
type: cloud-learning
title: "视频标题"
type: transcription
source-type: video
category: "DevOps & SRE/01_AWS-Landing-Zone"
category: "你的分类路径"
tags:
- AWS
- Landing-Zone
date-added: 2026-04-14
video-source: "nas:///volume2/work/Public Cloud Learning Sessions/VIDEO.mp4"
audio-source: "nas:///volume2/work/Public Cloud Learning Sessions/VIDEO.mp3"
- 标签1
- 标签2
date-added: 2026-04-15
audio-source: "/path/to/audio.mp3"
transcript-source: "/path/to/transcript.txt"
status: summarized # raw → summarized
---
# 视频标题
# 视频标题
**Source:** NAS `/volume2/work/Public Cloud Learning Sessions/VIDEO.mp4`
**Type:** VIDEO | **Category:** 01_AWS-Landing-Zone
**Source:** /path/to/video.mp4
**Type:** VIDEO | **Category:** 你的分类
**Status:** ✅ 已完成
@@ -187,10 +200,10 @@ status: summarized # raw → summarized
---
## 相关视频
## 相关笔记
> [!info]+ 交叉引用
> [[相关视频文件名]] — 关联原因
> [[相关笔记标题]] — 关联原因
```
---
@@ -200,9 +213,6 @@ status: summarized # raw → summarized
| 服务 | Key | 用途 | 状态 |
|---|---|---|---|
| Google Gemini | `AIzaSyASNIlSc-YYP1dCqKCzk59e7MXSVrnHba0` | 摘要生成 | ✅ 有效 |
| MiniMax | `sk-cp-H0FwKNry9PnMJm...` | Whisper 转录 | ❌ Whisper端点404token plan不支持模型 |
> ⚠️ MiniMax API Key 目前不可用Whisper 端点 404文本模型 500Whisper 改用本地模型。
---
@@ -224,6 +234,8 @@ status: summarized # raw → summarized
3. **音频质量**Whisper 对音质敏感,背景噪音会导致转写质量下降
4. **断点续传**:脚本使用 `.done` 文件记录已完成的文件,重启不会重复处理
5. **文件命名**:文件名中的空格和特殊字符(`_``(``)`)需要正确处理
6. **语言参数**:默认英文转录,如需其他语言可设置 `language="zh"``language="auto"`
7. **视频源路径**:根据实际存放位置修改脚本中的 `SOURCE_DIR` 变量
---
@@ -236,8 +248,8 @@ cat ~/.openclaw/temp/xingshu/logs/nas_audio_v3.log | tail -10
# 查看转录摘要进度
tail -f ~/.openclaw/temp/xingshu/logs/nas_whisper_summarize.log
# 查看 NAS 已完成 mp3 数量
ssh shenwei@192.168.3.17 "ls '/volume2/work/Public Cloud Learning Sessions/'*.mp3 2>/dev/null | wc -l"
# 查看指定目录下 mp3 数量
ssh shenwei@192.168.3.17 "ls '/path/to/videos/'*.mp3 2>/dev/null | wc -l"
# 查看已处理摘要数量
cat ~/.openclaw/temp/xingshu/nas_whisper_summarize.done | wc -l
@@ -250,3 +262,39 @@ curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-
-H 'Content-Type: application/json' \
-d '{"contents":[{"parts":[{"text":"say hi in 3 words"}]}]}'
```
---
## 九、配置说明
### 修改视频源路径
编辑脚本 `nas_whisper_gemini_summarize.py`,找到以下变量并修改:
```python
# NAS 源视频目录(包含 mp4 文件)
SOURCE_DIR = "/volume2/work/Public Cloud Learning Sessions/"
# NAS 输出音频目录mp3 输出位置)
AUDIO_DIR = "/volume2/work/Public Cloud Learning Sessions/"
# Obsidian 笔记目录
OBSIDIAN_NOTE_DIR = "/Users/weishen/Workspace/nexus/knowledgebase/"
# NAS SSH 连接信息
NAS_HOST = "192.168.3.17"
NAS_USER = "shenwei"
```
### 适配不同视频源
```python
# 方案1: 另一个 NAS 路径
SOURCE_DIR = "/volume2/work/OtherVideos/"
# 方案2: 本地目录(无需 SSH
SOURCE_DIR = "/Users/weishen/Workspace/videos/"
# 方案3: 另一个服务器
NAS_HOST = "192.168.3.45" # Ubuntu2
```