Skip to content

cyberpinkman/my-knowledge-base

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

my-knowledge-base | 我的知识库

AI 驱动的个人知识管理系统:收录链接、视频和 PDF,抓取内容后用 LLM 做结构化分析,写入 Obsidian,并把长期价值内容同步到 gbrain。

功能

  • 内容收录 — 通过 process.sh 收录 URL 或本地 PDF,抓取、分析、分类并写入知识库
    • 普通网页、微信公众号等网页:Playwright 抓取正文
    • YouTube、B站、抖音:优先提取字幕/转录;无转写时抽取关键帧并用视觉模型生成带时间证据的分析
    • 本地 PDF 或 PDF URL:提取文本后分析
    • Twitter/X、小红书等强反爬平台:目前走通用网页抓取,可能失败或需要人工补充内容
  • 灵感管理 — 随手记录 idea,自动搜索知识库关联内容,评估可行性
  • 知识关联 — 构建 idea ↔ 知识的双向链接
  • Obsidian 集成 — 所有内容以 Markdown 写入 Obsidian Vault

当前支持视频关键帧视觉分析,但尚不支持把任意图片/截图作为独立收录类型。

架构

用户 → 发送链接/灵感
  ↓
process.sh → 检测类型、收录数据库
  ↓
fetch-video.py / fetch-pdf.py / fetch-screenshot.js → 抓取内容
video_vision.py → 无字幕视频的关键帧批量视觉分析
  ↓
LLM 结构化分析:摘要 / 原文事实 / 模型推断 / 外部背景 / 待查证
  ↓
write-to-obsidian.py → 写入 Obsidian Vault
sync_to_gbrain.py → 筛选高价值条目并同步到 gbrain
idea.py → 创建灵感 / 分析关联
  ↓
Obsidian Vault (~/Documents/我的知识库/)
  ├── 稍后阅读/{技术,商业,设计,生活,新闻,视频,其他}/
  ├── 灵感/{待探索,进行中,已搁置}/
  └── 关联图谱/

依赖

  • yt-dlp — 视频/音频下载(YouTube/B站/抖音等 1800+ 平台)
  • youtube-transcript-api — YouTube 字幕提取
  • Whisper CLI — 视频无字幕时的本地语音转写 fallback
  • ffmpeg — 视频截帧、音频处理
  • Playwright — 网页截图抓取(微信公众号等)
  • pypdf — PDF 文本提取;默认自动使用 Hermes venv 中可用的解释器
  • SQLite — 文章数据库
  • Obsidian — 知识库前端(本地 Markdown)

安装

pip3 install yt-dlp youtube-transcript-api openai-whisper
brew install ffmpeg
npm install playwright

使用

配置 LLM

默认优先级:

  1. MY_KNOWLEDGE_BASE_LLM_COMMAND
  2. MiniMax:MY_KNOWLEDGE_BASE_LLM_PROVIDER=minimax 或检测到 MiniMax key
  3. OpenAI:检测到 OPENAI_API_KEY
  4. 无可用 LLM 时回退到本地规则摘要

MiniMax 示例:

export MY_KNOWLEDGE_BASE_LLM_PROVIDER=minimax
export MINIMAX_CN_API_KEY="your_minimax_key_here"

不要把真实 API key 写进 README、提交到 git,或放进公开日志。这里的 your_minimax_key_here 只是占位符。

常用环境变量:

export OBSIDIAN_VAULT_PATH="$HOME/Documents/我的知识库"
export MY_KNOWLEDGE_BASE_FORCE=1              # 已处理条目也重新抓取/分析
export MY_KNOWLEDGE_BASE_INBOX_ONLY=1         # 只收录,不立即处理
export MY_KNOWLEDGE_BASE_SYNC_GBRAIN=1        # 当前条目处理后尝试同步到 gbrain
export MY_KNOWLEDGE_BASE_KEEP_SCREENSHOTS=1   # 调试网页抓取时保留临时截图;默认会删除
export MY_KNOWLEDGE_BASE_LLM_TIMEOUT=120
export MY_KNOWLEDGE_BASE_LLM_MAX_OUTPUT_TOKENS=5000
export MY_KNOWLEDGE_BASE_VIDEO_FETCH_TIMEOUT=1800
export MY_KNOWLEDGE_BASE_WHISPER_MODEL=tiny    # 视频无字幕时的本地转写模型;可改为 base 提高质量
export MY_KNOWLEDGE_BASE_WHISPER_TIMEOUT=900
export MY_KNOWLEDGE_BASE_DOUYIN_MIN_CHAPTER_SUMMARY_CHARS=300
export MY_KNOWLEDGE_BASE_PDF_PYTHON="$HOME/.hermes/hermes-agent/venv/bin/python3"

视频视觉分析复用 video-learning 的 provider 约定,默认自动检测 API key:

# OpenAI
export MY_KNOWLEDGE_BASE_VISION_PROVIDER=openai
export MY_KNOWLEDGE_BASE_VISION_MODEL=gpt-4.1-mini
export OPENAI_API_KEY="your-key"

# 或 DashScope/Qwen
export MY_KNOWLEDGE_BASE_VISION_PROVIDER=dashscope
export MY_KNOWLEDGE_BASE_VISION_MODEL=qwen3-vl-plus
export DASHSCOPE_API_KEY="your-key"

export MY_KNOWLEDGE_BASE_VISION_FRAME_LIMIT=12
export MY_KNOWLEDGE_BASE_VISION_BATCH_SIZE=8

没有视觉 provider 时,系统会明确记录视觉分析不可用,只使用现有描述兜底,不会伪造画面内容。

改名迁移期,代码会把历史环境变量作为 fallback 读取;新配置只使用 MY_KNOWLEDGE_BASE_*

可选 MiniMax 变量:

export MY_KNOWLEDGE_BASE_MINIMAX_MODEL="MiniMax-M3"
export MY_KNOWLEDGE_BASE_MINIMAX_BASE_URL="https://api.minimaxi.com/v1"
export MY_KNOWLEDGE_BASE_MINIMAX_API_KEY_ENV="MINIMAX_CN_API_KEY"

收录学习材料

process.sh 是正常收录的唯一入口,会自动完成入库、抓取、LLM 分析和 Obsidian 写入。不要在日常使用中绕过它手动更新 SQLite。

./process.sh "https://example.com/article"
./process.sh ~/Downloads/paper.pdf

底层抓取/写入脚本只用于调试单个阶段,不作为常规入口。

修复历史 Obsidian 笔记

早期版本可能已经在 articles.db 里有标题和摘要,但没有写出对应 Markdown。用修复脚本从 DB 补写缺失笔记;它不会重新抓取原链接,也不会重新调用 LLM。

python3 repair_obsidian.py --all-missing --dry-run
python3 repair_obsidian.py --all-missing

# 迁移旧笔记尾注里的历史项目名
python3 repair_obsidian.py --migrate-footer

# 默认只扫描 Obsidian/稍后阅读;确认需要全 vault 扫描时再加
python3 repair_obsidian.py --migrate-footer --all-vault

同步到 gbrain

# 预览将同步哪些条目
python3 sync_to_gbrain.py --dry-run

# 默认只同步 tech,business,design 中已有摘要且未同步的条目
python3 sync_to_gbrain.py

# 精确同步某一条 articles.id
python3 sync_to_gbrain.py --article-id 67

# 人工标记长期价值内容,只同步标记过的条目
python3 mark.py value 12 18 23
python3 sync_to_gbrain.py --only-marked --limit 10

# 重试失败条目,或指定分类
python3 sync_to_gbrain.py --retry-failed
python3 sync_to_gbrain.py --categories tech,business,design,news

灵感管理

python3 idea.py add --title "我的idea" --description "描述"
python3 idea.py list
python3 idea.py analyze --title "我的idea"

灵感关联会优先调用 gbrain query 检索长期脑库;如果 gbrain 不可用或没有结果,会自动回退到 Obsidian 稍后阅读/ 目录的本地关键词搜索。 idea.py analyze 会生成结构化的可行性、置信度、支撑依据、知识缺口和下一步行动,并幂等写回灵感笔记。

License

MIT

About

AI-powered personal knowledge base: auto-collect links/docs, manage ideas, build knowledge connections with Obsidian

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages