Skip to content

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 Token

3. 配置接收设置

yaml
# 插件设置

Bot 配置:
  Bot Token: 你的 Bot Token
  Chat ID: 你的 Chat ID

接收设置:
  接收文件夹: inbox
  文件命名: "{{date}}-telegram-{{time}}"
  模板: telegram-note

4. 获取 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_url}})
{{/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 10

QuickAdd 工作流

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:

  1. 检查 Bot Token 是否正确
  2. 确认 Bot 已启动(/start)
  3. 检查网络连接
  4. 查看插件日志

Q: 消息保存位置不对?

A:

  1. 检查插件中的文件夹设置
  2. 确认文件夹存在
  3. 检查文件路径格式

Q: 图片没有保存?

A:

  1. 检查附件目录权限
  2. 确认 Bot 有下载权限
  3. 检查磁盘空间

Q: 如何处理中文乱码?

A:

  1. 确认文件编码为 UTF-8
  2. 检查 Telegram API 设置
  3. 使用 URL 编码

相关资源

最后更新:2026年4月6日编辑此页反馈问题