Journal Partner
approvedby zhaohongxuan
Highlight timestamps in your Journal section, capture quick notes, images, and audio from a sidebar, dictate with real-time speech-to-text, and review your year with a heatmap. - This plugin has not been manually reviewed by Obsidian staff.
Journal Partner
一款陪你写日记的 Obsidian 插件。自动识别并高亮 Journal 区域的时间戳,让每一条记录的时间一目了然;配套一个快速记录面板,让你随时把想法、图片、语音、待办丢进今天的日记;还能收藏值得重温的条目、随机回顾过去的日记,并在同一个面板里集成全量统计,用热力图回顾一年的坚持。
效果预览
在 ## Journal 区域下,每行行首的 HH:MM 时间戳会被渲染为醒目的胶囊徽标;带 [ ] 的行会被识别为待办任务:
## Journal
- 06:42 把我的工作笔记从 Obsidian 工作流中移出去
- 07:31 成功安装并配置了 OpenClaw!
- 08:10 多花点时间做自己的事情,跑步、读书、练字都行
- 09:20 [ ] 完成周报
- 18:05 [x] 跑步 5 公里
↓ 渲染后时间戳高亮显示,颜色可自定义。
功能
🌐 多语言
插件支持 英文(默认) 和 中文 两种界面语言,可在 设置 → Journal Partner → 其他 → Language 切换,切换后立即生效(无需重启)。
- 默认英文:所有 UI 文本、设置项、提示、日期格式均为英文
- 第二语言中文:切换到中文后,设置页、快速记录面板、统计页、Notice 提示全部变为中文
- 日期 / 星期 / 月份 / 数字格式随语言联动(英文
Aug 29, 2026 · Sat/ 中文2026年8月29日 · 周六)
✍️ 时间戳与编辑增强
- 时间戳高亮:在编辑器(Source / Live Preview)和阅读视图中均生效
- 自定义颜色:在设置中用拾色器分别设置文字色和背景色,白天 / 深色主题各一套,改动实时生效
- 自定义作用范围:指定目标标题名称(如
Journal)和层级(如##),插件只在该区域内生效 - 时间戳只读:开启后无法在编辑器中修改已有时间戳,防止误删或误改
- 回车自动插入时间戳:在 Journal 区块内按回车时,新行自动以当前
HH:MM起头 - Tab 缩进保留时间戳:在条目首部按 Tab 时,时间戳与内容一起缩进,光标停在新位置
- 自定义正则:默认匹配
HH:MM格式,可修改为任意正则表达式以适配其他时间格式
🪶 快速记录面板
打开「快速记录」面板(羽毛笔图标或命令面板),即可在同一个面板里完成速记和统计回顾。底部是一个浮动 dock,四个按钮切换:记录 / 随机回顾 / 收藏 / 年度统计。
📝 记录 Tab
- 基于 Daily Notes:自动写入今天日记的
## Journal区段;若文件或区段不存在则自动创建(依赖 Obsidian 内置「Daily Notes」核心插件) - 多行输入框:支持系统语音输入法、回车换行;写入时自动保留 markdown 软换行结构
- 自定义提交快捷键:可选
Shift+Enter(默认)/Ctrl+Enter/Alt+Enter/Ctrl+Shift+Enter - 粘贴图片:在输入框内直接
⌘V粘贴剪贴板里的图片,插件自动保存到附件目录并内联追加到条目文字之后(不另起一行);也支持把图片文件拖拽到输入框 - 图片按钮:点击输入框下方的图片图标,从本地选择图片插入
- 麦克风录音:一键录音,录音时实时显示对称胶囊波形 + 时长;停止后自动保存为附件(优先
m4a,不支持则webm)并以![[audio.m4a]]嵌入,时间线上会渲染为可播放的音频条 - 实时语音转文字:配置转写接口后,录音时边说边出字(VAD 在停顿处切句 + 跨段上下文,像语音输入法),停止时再用完整音频整段重转替换草稿,兼顾实时与准确。详见下方 语音转文字
- 待办任务:点输入框下方的 ✓ 按钮进入任务模式,提交的内容会写成
- HH:MM [ ] 文字;时间线中任务以蓝色标识,已完成的显示删除线与半透明 - 快捷标签:点标签按钮从预设标签中多选,选中项以 chip 形式显示在输入框上方,提交时自动写入;标签列表可从全库日记中出现过的标签中选取(按频率 + 最近使用排序)
- 气泡时间线:每条记录以「时间胶囊 + 内容气泡」呈现,带有平滑的连接弧线,颜色与时间戳样式同源
- 跨天无限滚动:今天置顶;向下滚动自动加载更早有内容的日子,直到 365 天前为止
- 实时同步:在主编辑器里改动当天日记,面板对应日的时间线会就地刷新
- Markdown 渲染:支持双向链接、嵌入图片、加粗斜体等,所有原生 Obsidian 渲染特性均可用
- 日期栏排序按钮:每个日期标题卡片的右上角都有排序切换按钮,按当日时间正序 / 倒序展示
- 筛选:工具栏提供类型筛选(全部 / 仅任务 / 仅备忘)与标签筛选两个独立按钮
- 右键管理 memo:右键(或移动端长按)任意气泡,可复制原文、编辑正文、删除当前 memo;若该条 memo 附带录音,还会出现「删除 memo 和录音文件」与「仅删除录音文件」两个选项,录音走 Obsidian 回收站可恢复。可在设置中关闭「删除前确认」跳过对话框
🎲 随机回顾 Tab
从过去的日记中随机抽取一天展示,配合收藏功能可以用来挖掘值得回味的旧记录。
- 兼容无时间戳日记:用纯段落写的旧日记同样能被回顾到,不依赖
- HH:MM格式 - 可直接收藏:回顾到的旧条目同样可以点爱心收藏
❤️ 收藏 Tab
hover 任意时间线条目,点爱心即可把该单条记录收藏起来。
- 四种模式通用:日常 / 搜索 / 随机回顾 / 标签模式下渲染的条目都可收藏
- 收藏列表:扁平列表展示,最新收藏在前;点击行跳转到当日日记,点爱心取消收藏
- 状态同步:同一条目在任意模式、任意视图(侧边栏 / 小窗)下爱心状态一致
- 自动清理失效收藏:打开列表时自动校验并清理「日记被删 / 条目被改」的收藏,并提示清理数量
- 数据存储:存于插件
data.json,不产生额外文件;老用户升级零迁移
🔍 搜索与标签
工具栏的搜索按钮进入内联搜索模式,可按关键字检索所有日记条目;标签筛选用独立的标签按钮,可从日记中出现过的标签里筛选。
📊 统计 Tab
和记录 Tab 共享同一个面板,点击 年度统计 即可切换。第一次打开会扫描所有 Daily Notes,之后改动日记会自动 300ms 防抖刷新。
- 全量 Hero:顶部一张紧凑卡片展示全部年份累计的总字数(万位自动转换),副标题显示覆盖年份范围(如「2022–2026 年」)
- 4 项核心 KPI:写作天数 / 总条数 / 录音数 / 最长连续,与 Hero 卡片内嵌显示,不再独立成卡
- 按年热力图:每年一张 GitHub-style 热力图,7×53 网格、周一开头,5 档紫色浓度(按当日 memo 条数),鼠标悬停显示「YYYY年M月D日 · X 条 · Y 字」,点击非空格子在新 Tab 打开对应 Daily Note
- 兼容无时间戳日记:用纯段落写的旧日记同样会被统计进字数 / 条数 / 写作天数 —— 不依赖
- HH:MM格式 - 优雅降级:没有时间戳时,「写作天数」仍能正确计数;「最常记录时段」类的指标仅在有时间戳的日记中显示
🔗 URL 协议(Action Button / Shortcuts 集成)
插件注册了 obsidian://journal-partner URL 协议,可以从任何能打开 URL 的地方(iOS Shortcuts、macOS Shortcuts、命令行 open)一键写入今天的日记,无需打开 Obsidian 主界面:
obsidian://journal-partner?text=<URL编码内容>
obsidian://journal-partner?text=<URL编码内容>&audio=<vault相对路径>
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
text | text/audio 至少一项 | 条目文字内容(URL 编码) |
audio | text/audio 至少一项 | vault 内的音频附件相对路径,例如 Assets/audio/2026-06-21_153012.m4a,会以 ![[...]] 嵌入,渲染成可播放的音频条 |
time | 否 | HH:MM 格式,默认使用当前时间 |
搭配 iPhone Action Button:在 iOS Shortcuts 里创建一个捷径——
- 「听写文本」→「打开 URL」(仅文字)
- 「录音 → 听写文本 → 保存录音到
Assets/audio/→ 打开 URL(text + audio 两个参数)」(文字 + 录音双轨)
把捷径设为 Action Button,按一下手机侧键就能听写并自动落到今天的日记,全程不打断当前操作。
💡 一键导入:插件设置面板提供了「获取捷径」按钮,或直接点这里 → iCloud 捷径模板,添加到「快捷指令」app 即可使用。
安装
通过 BRAT 安装(推荐)
BRAT(Beta Reviewer's Auto-update Tool)能自动跟随本仓库的 release 升级,是目前推荐的安装方式:
- 在 Obsidian 社区插件中搜索并安装 BRAT,启用它
- 打开命令面板(⌘P)→ 执行 BRAT: Add a beta plugin for testing
- 粘贴本仓库地址:
https://github.com/zhaohongxuan/journal-partner - BRAT 会自动下载最新 release,并在 设置 → 第三方插件 中显示 Journal Partner,启用即可
- (快速记录功能)确保 Obsidian 内置「Daily Notes」核心插件已启用
之后每次本仓库发布新版本,BRAT 都会在 Obsidian 启动时自动更新。
手动安装
- 前往 Releases 下载最新版本的
main.js、manifest.json、styles.css - 将三个文件复制到你的 Vault 的
.obsidian/plugins/journal-partner/目录下 - 在 Obsidian 设置 → 第三方插件 中启用 Journal Partner
- (快速记录功能)确保 Obsidian 内置「Daily Notes」核心插件已启用
使用快速记录
- 点击左侧栏的羽毛笔图标,或在命令面板(⌘P)中执行 「打开 Journal Partner 侧边栏」
- 默认进入「记录」Tab:在输入框中写下任何想法,按提交快捷键写入
- 内容会以
- HH:MM 文字的形式追加到今天日记的## Journal区段 - 时间线顶端始终是今天,向下滚动可继续浏览历史日记
- 底部 dock 可切换到
随机回顾/收藏/年度统计
多行输入会被保存为带 markdown 软换行的列表项,渲染时保持段落结构。粘贴图片 / 录音后会自动保存到 Vault 附件目录(路径默认取自 Obsidian「附件文件夹」设置,也可在插件设置中分别指定)。
🖥️ 独立小窗(桌面端)
桌面端可以把记录面板直接拖出成独立的悬浮小窗(Obsidian 原生能力,把面板标签拖到空白处即可),小窗可独立于主窗口使用,适合当作随手记录的常驻浮窗。
- 小窗宽度自适应:窄窗下输入卡片与时间线自动适配
- 矮窗自动隐藏 dock:窗口高度低于阈值时底部 dock 自动隐藏,避免遮挡内容,拉高后恢复
- 粘贴图片 / 标签选择器可用:事件监听绑定在面板自身的 document 上,小窗中同样生效
🎙️ 语音转文字
在「快速记录」面板点麦克风按钮开始录音,插件会在输入框上方显示实时波形与时长。配置好转写接口后,支持两种模式:
- 实时转写(默认开启):边说边出字。插件用 VAD(静音检测)在你说完一句话的停顿处切分音频,每段独立转写后追加到输入框;并把上一段末尾文本作为
prompt喂给下一段,解决跨段同音词和断词问题。停止时再用完整音频做一次整段转写,替换掉实时拼出的草稿,得到既实时又准确的最终文本。 - 整段转写(关闭实时转写):录完整段后一次性转写,准确但无实时反馈。
转写完成后,文本与音频 embed(![[audio.m4a]])会一起插入光标处。录音格式优先 m4a(audio/mp4),浏览器不支持时自动降级为 webm。
接口地址 / API Key 留空时,转写自动关闭,麦克风按钮仅作纯录音用。
设置说明
打开 Obsidian 设置 → 插件选项 → Journal Partner:
📍 时间戳设置
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 目标标题名称 | 插件生效的标题文字(不含 #) | Journal |
| 标题层级 | 目标标题的层级 | H2 |
| 时间戳只读 | 防止在编辑器中修改已有时间戳 | 开启 |
| 回车自动插入时间戳 | 在 Journal 区块内按回车时自动插入当前时间 | 开启 |
| 时间戳匹配正则 | 识别时间戳的正则表达式 | \d{2}:\d{2} |
| 时间线排序 | 条目展示顺序:倒序(新→旧)或 正序(旧→新) | 倒序 |
🏷️ 标签设置
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 预设标签 | 快捷标签选择器里展示的标签,可增删 | #log/fitness、#log/code |
| 默认标签 | 每次打开输入框时自动选中的标签(须为预设标签的子集) | 无 |
| 日记标签上限 | 标签菜单中最多展示多少个「来自日记的标签」(按频率 + 最近使用排序),0 表示不限 | 15 |
🎨 颜色设置
文字色与背景色分别提供白天 / 深色两套,主题切换时自动生效;每项带「恢复默认」按钮。
| 设置项 | 说明 | 默认值(白天 / 深色) |
|---|---|---|
| 文字颜色 | 时间戳徽标前景色(同时影响时间线弧线、内容气泡底色) | #7c3aed / #a78bfa |
| 背景颜色 | 时间戳徽标背景色 | #ede9fe / #2e1065 |
🎙️ 语音转文字
录音转文字使用 OpenAI 兼容的 /audio/transcriptions 接口,接口/Key 留空则关闭转写(仅保留纯录音)。
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 转写接口地址 | OpenAI 兼容的音频转写地址,留空关闭转写 | 空 |
| API Key | 以 Bearer 形式发送的密钥 | 空 |
| 模型 | multipart 中的 model 字段 | whisper-1 |
| 语言 | ISO-639-1 语言提示(如 zh、en),留空自动识别 | zh |
| 实时转写 | 录音时边说边出字,停止后整段重转替换草稿 | 开启 |
| 录音保存目录 | 录音附件的保存目录;留空使用 Obsidian「附件文件夹」设置 | 跟随附件设置 |
国内推荐(免费、可直连) —— 硅基流动 SiliconFlow 的 FunAudioLLM/SenseVoiceSmall:
转写接口地址: https://api.siliconflow.cn/v1/audio/transcriptions
模型: FunAudioLLM/SenseVoiceSmall
语言: zh
到 siliconflow.cn 注册并实名后生成 API Key 填入即可,该模型常驻免费。也可填 OpenAI、Groq 或自建 faster-whisper 服务(OpenAI 兼容格式即可)。
⚙️ 其他
| 设置项 | 说明 | 默认值 |
|---|---|---|
| Language | 界面语言,English(默认)或 中文,切换即时生效 | English |
| 移动端从侧边栏打开 | 移动端在右侧滑出抽屉中打开记录面板;关闭则占据主编辑区全屏展示。桌面端不受影响(始终从右侧栏打开) | 关闭 |
| 提交快捷键 | 输入框中提交日记的快捷键组合 | Shift+Enter |
| 图片保存目录 | 粘贴 / 上传图片的保存目录;留空使用 Obsidian「附件文件夹」设置 | 跟随附件设置 |
| 获取捷径 | 一键导入 iOS 快捷指令模板(见下方 URL 协议) | — |
开发
# 安装依赖
npm install
# 开发模式(保存自动重建)
npm run dev
# 生产构建
npm run build
# 部署到本地 Obsidian Vault(需在 deploy.sh 中配置 VAULT_PATH)
npm run deploy
构建产物为 main.js,与 manifest.json、styles.css 一起复制到插件目录即可。
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.