Telegram 集成
Telegram 作为流行的即时通讯工具,可以通过 Bot 实现与 Obsidian 的集成,快速捕捉灵感和信息。
为什么用 Telegram 捕捉?
| 优势 | 说明 |
|---|---|
| 跨平台 | iOS、Android、桌面端全覆盖 |
| 快速访问 | 始终在线,随时打开 |
| 多媒体 | 支持文字、图片、文件、语音 |
| Bot 生态 | 丰富的 Bot 功能 |
| 免费 | 无需额外费用 |
集成方案
方案一:官方 Obsidian Bot
Obsidian 提供官方 Telegram Bot 服务。
配置步骤
1. 创建 Telegram Bot
yaml
步骤:
1. 在 Telegram 搜索 @BotFather
2. 发送 /newbot
3. 按提示设置 Bot 名称
4. 获取 API Token(格式:123456789:ABCdefGHIjklMNOpqrsTUVwxyz)2. 安装 Obsidian 插件
yaml
步骤:
1. 搜索 "Telegram Sync" 或 "Telegram to Obsidian"
2. 安装并启用插件
3. 配置 Bot Token3. 配置接收设置
yaml
# 插件设置
Bot 配置:
Bot Token: 你的 Bot Token
Chat ID: 你的 Chat ID
接收设置:
接收文件夹: inbox
文件命名: "{{date}}-telegram-{{time}}"
模板: telegram-note4. 获取 Chat ID
bash
# 发送消息给你的 Bot
# 然后访问以下 URL(替换 TOKEN)
https://api.telegram.org/bot<TOKEN>/getUpdates
# 在返回的 JSON 中找到 chat.id方案二:第三方服务
使用第三方服务中转,如 IFTTT 或 Zapier。
IFTTT 配置
yaml
步骤:
1. 注册 IFTTT 账户
2. 创建 Applet
3. Trigger: Telegram - Send message to chat
4. Action: Webhooks - Make a request
5. 配置 Webhook 指向你的服务方案三:自建服务
使用 Node.js 搭建中转服务。
javascript
// telegram-obsidian-bot.js
const TelegramBot = require('node-telegram-bot-api');
const fs = require('fs');
const path = require('path');
const token = 'YOUR_BOT_TOKEN';
const bot = new TelegramBot(token, { polling: true });
const vaultPath = '/path/to/your/vault/inbox';
bot.on('message', async (msg) => {
const chatId = msg.chat.id;
const text = msg.text;
const date = new Date(msg.date * 1000);
// 生成文件名
const fileName = `${date.toISOString().slice(0,10)}-telegram.md`;
const filePath = path.join(vaultPath, fileName);
// 生成内容
const content = `---
source: telegram
date: ${date.toISOString()}
chat_id: ${chatId}
---
# Telegram 消息
${text}
`;
// 写入文件
fs.appendFileSync(filePath, content);
// 回复确认
bot.sendMessage(chatId, '已保存到 Obsidian!');
});消息模板
基础模板
markdown
---
source: telegram
date: {{date}}
time: {{time}}
type: inbox
tags:
- inbox
---
# Telegram 捕捉
{{content}}
---
发送时间:{{datetime}}带分类的模板
markdown
---
source: telegram
date: {{date}}
type: {{type}}
tags:
- inbox
- {{type}}
status: todo
---
# {{title}}
## 内容
{{content}}
## 处理
- [ ] 整理此笔记
- [ ] 添加标签
- [ ] 移动到正确位置
---
发送者:{{sender}}
时间:{{datetime}}多媒体模板
markdown
---
source: telegram
date: {{date}}
type: media
attachments:
{{#attachments}}
- {{url}}
{{/attachments}}
---
# 捕捉:{{type}}
{{#text}}
## 文字内容
{{text}}
{{/text}}
{{#image}}
## 图片

{{/image}}
{{#file}}
## 文件
- 文件名:{{file_name}}
- 大小:{{file_size}}
- [下载链接]({{file_url}})
{{/file}}
---
时间:{{datetime}}支持的消息类型
文字消息
yaml
直接发送文字:
- 自动创建笔记
- 保留原始格式
- 支持换行和特殊字符
命令处理:
/note 标题 - 创建指定标题的笔记
/todo 内容 - 创建待办事项
/idea 内容 - 记录想法
/quote 内容 - 记录引用图片消息
yaml
处理方式:
- 自动下载图片
- 保存到附件目录
- 在笔记中嵌入图片链接
配置:
图片保存路径: attachments/telegram/
文件命名: {{date}}-{{random}}.jpg
压缩: 可选文件消息
yaml
支持格式:
- PDF
- 文档(doc, docx)
- 压缩包(zip)
- 代码文件
处理方式:
- 下载到指定目录
- 创建索引笔记
- 添加文件元信息语音消息
yaml
处理方式:
- 下载音频文件
- 可选:使用语音转文字 API
- 保存转写结果
语音转文字:
- OpenAI Whisper API
- Google Speech-to-Text
- Azure Speech Services高级功能
命令系统
自定义 Bot 命令:
javascript
// 命令处理
bot.onText(/\/note (.+)/, (msg, match) => {
const title = match[1];
// 创建笔记
});
bot.onText(/\/todo (.+)/, (msg, match) => {
const content = match[1];
// 创建待办
});
bot.onText(/\/idea (.+)/, (msg, match) => {
const idea = match[1];
// 记录想法
});
bot.onText(/\/daily/, (msg) => {
// 返回今日笔记
});标签识别
javascript
// 从消息中提取标签
function extractTags(text) {
const tagRegex = /#(\w+)/g;
const tags = [];
let match;
while ((match = tagRegex.exec(text)) !== null) {
tags.push(match[1]);
}
return tags;
}
// 示例:发送 "#工作 重要会议 #项目"
// 自动提取标签:工作、项目快捷回复
yaml
Bot 回复模板:
保存成功: "✅ 已保存到 {{folder}}/{{filename}}"
保存失败: "❌ 保存失败:{{error}}"
帮助信息: "使用说明..."
快捷操作:
/help - 显示帮助
/status - 查看状态
/recent - 最近保存的笔记
/undo - 撤销最近保存与其他工具联动
Templater 联动
javascript
<%*
// 自动处理 Telegram 来源的笔记
if (tp.frontmatter.source === 'telegram') {
// 添加处理标记
tR += `\n## 后续处理\n`;
tR += `- [ ] 整理内容\n`;
tR += `- [ ] 添加到相关笔记\n`;
}
%>Dataview 查询
dataview
TABLE
date as 日期,
type as 类型,
tags as 标签
FROM "inbox"
WHERE source = "telegram"
SORT date DESC
LIMIT 10QuickAdd 工作流
javascript
// 从 Telegram 笔记快速整理
async function processTelegramNote() {
const note = app.workspace.getActiveFile();
const content = await app.vault.read(note);
// 让用户选择目标文件夹
const folder = await quickAddApi.suggester(
['项目', '笔记', '资源'],
['projects', 'notes', 'resources']
);
// 移动文件
await app.fileManager.renameFile(
note,
`${folder}/${note.name}`
);
}使用场景
快速捕捉想法
yaml
场景: 突然想到一个好点子
操作: 打开 Telegram → 发送消息给 Bot
优势: 比 Obsidian 移动端更快保存网页链接
yaml
场景: 浏览网页发现好内容
操作: 分享到 Telegram Bot
效果: 自动创建笔记并保存链接收集素材
yaml
场景: 发现有趣的图片或文字
操作: 转发到 Telegram Bot
效果: 自动保存到 Obsidian语音笔记
yaml
场景: 无法打字时
操作: 发送语音消息
效果: 转文字后保存(需配置)安全配置
Bot 安全
yaml
建议设置:
- 限制访问用户 ID
- 启用消息加密
- 定期更换 Token
- 监控异常活动
配置示例:
allowed_users:
- 123456789
- 987654321数据隐私
yaml
注意事项:
- Telegram 消息存储在服务器
- 建议不要发送敏感信息
- 可设置消息自动删除
- 定期清理 Telegram 历史常见问题
Q: Bot 没有响应?
A:
- 检查 Bot Token 是否正确
- 确认 Bot 已启动(/start)
- 检查网络连接
- 查看插件日志
Q: 消息保存位置不对?
A:
- 检查插件中的文件夹设置
- 确认文件夹存在
- 检查文件路径格式
Q: 图片没有保存?
A:
- 检查附件目录权限
- 确认 Bot 有下载权限
- 检查磁盘空间
Q: 如何处理中文乱码?
A:
- 确认文件编码为 UTF-8
- 检查 Telegram API 设置
- 使用 URL 编码
相关资源
- Telegram Bot API
- QuickAdd 插件 - 快速添加
- Templater 插件 - 模板自动化
- 知识管理方法 - 信息整理方法