模板设置
“书籍笔记模板”决定添加书籍后新建笔记文档的初始内容。它既用于豆瓣图书添加,也用于微信读书新来源选择“使用 bookID”直接入库时创建的读书笔记。模板只负责搭好框架,之后仍然可以像普通思源文档一样继续编辑。
在阅读工作台点击“模板”,打开“模板设置”主弹窗。顶部是生成选项,下方是三个模板入口:
- 书籍笔记模板:添加豆瓣图书,或用微信读书
bookID直接入库时使用。 - 微信读书书籍模板:同步微信读书中的普通书籍内容时使用。
- 微信公众号模板:同步微信读书中的公众号文章时使用。
本章先讲“书籍笔记模板”和其中的思源模板语法。微信读书的普通书籍模板、公众号模板以及同步区域的更新规则,请看微信读书同步。

模板入口与生成选项
“模板设置”主弹窗顶部的“添加书籍时生成读书笔记”开关,决定添加书籍时是否默认生成读书笔记。添加豆瓣书籍时,仍可以在书籍确认窗口中单独调整本次是否生成笔记。
模板使用普通 Markdown 编写;如果模板中还写了思源模板语法,保存后也会按思源的模板规则处理,不需要另行启用一个渲染开关。
编辑书籍笔记模板
点击“书籍笔记模板”打开编辑窗口。模板使用 Markdown 编写,通过双大括号引用书籍信息,例如 {{书名}}、{{作者}} 和 {{ISBN}}。保存模板时,点击编辑窗口右上角的“保存模板”。

可以使用哪些变量
变量名与书籍数据库中的字段名一致。生成文档时,插件会把变量替换为当前书籍的实际内容。
| 变量 | 内容 |
|---|---|
{{书名}} | 书名 |
{{副标题}} | 副标题 |
{{原作名}} | 原作名 |
{{作者}} | 作者 |
{{封面}} | 下载到本地后的封面资源路径 |
{{译者}} | 译者 |
{{出版社}} | 出版社 |
{{出版年}} | 出版日期或出版年份 |
{{出品方}} | 出品方 |
{{丛书}} | 丛书或系列 |
{{ISBN}} | ISBN |
{{豆瓣评分}} | 豆瓣评分 |
{{评分人数}} | 豆瓣评分人数 |
{{定价}} | 定价 |
{{页数}} | 页数 |
{{装帧}} | 装帧信息 |
{{我的评分}} | 个人评分 |
{{书籍分类}} | 个人设置的书籍分类 |
{{阅读状态}} | 想读、在读、读完等个人状态 |
{{开始日期}} | 开始阅读日期 |
{{读完日期}} | 完成阅读日期 |
{{书籍简介}} | 书籍内容简介 |
{{作者介绍}} | 作者简介 |
不是每本书都有副标题、译者、出品方或丛书等信息。变量仍然可以保留在模板中,但对应数据不存在时,该位置会是空的。如果你不希望出现空行,可以删掉自己用不到的字段。
选择“使用 bookID”直接入库时,插件会调用微信读书 /book/info 获取书籍资料,并把返回的 intro 写入书籍数据库。因此,书籍笔记模板中的 {{书籍简介}} 可以显示这段简介;{{作者介绍}} 没有可靠数据时会为空。这个过程不经过豆瓣,也不会根据作者姓名另行联网补全。
最小模板
只想快速建立一篇可继续书写的笔记,可以从下面这个版本开始:
# {{书名}}

- 作者:{{作者}}
- 出版社:{{出版社}}
- ISBN:{{ISBN}}
- 阅读状态:{{阅读状态}}
## 书籍简介
{{书籍简介}}
## 我的笔记{{封面}} 只是本地资源路径。想让封面直接显示为图片,需要写成 。
包含全部变量的模板
下面这个版本把所有可用字段都放了进去,适合作为修改素材。实际使用时,建议删除自己不需要的行,而不是强行保留全部字段。
# {{书名}} - {{副标题}}

## 基本信息
| 属性 | 内容 |
| --- | --- |
| 原作名 | {{原作名}} |
| 作者 | {{作者}} |
| 译者 | {{译者}} |
| 出版社 | {{出版社}} |
| 出版日期 | {{出版年}} |
| 出品方 | {{出品方}} |
| 丛书 | {{丛书}} |
| ISBN | `{{ISBN}}` |
| 页数 | {{页数}} |
| 定价 | {{定价}} |
| 装帧 | {{装帧}} |
| 分类 | {{书籍分类}} |
## 豆瓣信息
- 豆瓣评分:{{豆瓣评分}}
- 评分人数:{{评分人数}}
## 书籍简介
{{书籍简介}}
## 作者介绍
{{作者介绍}}
## 我的阅读记录
- 阅读状态:{{阅读状态}}
- 我的评分:{{我的评分}}
- 开始阅读:{{开始日期}}
- 完成阅读:{{读完日期}}
## 读书笔记
### 读书心得
### 摘录精选修改这份模板只会影响之后新建的读书笔记,不会自动重写已经存在的文档。微信读书已有书籍的同步内容如果需要应用新模板,请到同步教程中执行一次“更新同步”。
在书籍模板中使用思源模板语法
书籍模板的处理顺序是:先由插件替换书籍变量,再由思源模板引擎处理剩余的模板语法。因此,除了书籍字段,还可以使用 .action{}、{{{col 等思源内置语法,实现当前时间、星期和分栏布局。
下面是一个保留日期计算、阅读状态、封面与图书信息分栏的高级模板。它可以直接复制,再按自己的页面习惯删改:
.action{$week := add (mod (div ((toDate "2006-01-02" "2050-03-13").Sub now).Hours 24) 7) 1}
{{{col
{{{
创建时间:.action{now | date "2006-01-02 15:04"} .action{last (slice (list "星期六" "星期五" "星期四" "星期三" "星期二" "星期一" "星期天") 0 $week )}
}}}
{{{
阅读状态:{{阅读状态}}
}}}
}}}
---
{{{col
{{{

}}}
{{{
| 属性 | 内容 |
| --- | --- |
| 书名 | {{书名}}:{{副标题}} |
| 作者 | {{作者}} |
| 分类 | {{书籍分类}} |
| 出版社 | {{出版社}} |
| 出版日期 | {{出版年}} |
| 豆瓣地址 | [{{书名}}](https://douban.com/isbn/{{ISBN}}) |
| 豆瓣评分 | {{豆瓣评分}} / {{评分人数}} 人 |
| 我的评分 | {{我的评分}} |
}}}
}}}
---
## 书籍简介
{{书籍简介}}
## 书评
先确认普通 Markdown 和书籍变量能正常生成,再逐步加入 .action{} 或分栏语法。出现格式问题时,可以分别判断是书籍数据为空,还是思源模板语法本身不完整。
两种变量不要混淆
| 写法 | 由谁处理 | 示例 |
|---|---|---|
{{书名}}、{{作者}} | 读书笔记插件 | 把当前书籍信息写入新文档 |
.action{}、{{{col | 思源模板引擎 | 计算时间、调用函数或生成分栏 |
处理是连续进行的:插件书籍变量先变成实际内容,剩余的思源模板语法再交给思源处理。微信读书普通书籍模板中的 {{bookID}} 和 {{wereadDeepLink}} 属于另一套同步模板变量,不能复制到这里使用。
模板没有生效时
- 确认已经点击编辑窗口中的“保存模板”。
- 确认添加书籍时选择了“生成读书笔记”;微信读书 bookID 直连同样使用这份书籍模板。
- 检查变量是否使用了完整的双大括号,并保持变量名与表格一致。
- 如果只有
.action{}或分栏没有生效,检查思源模板语法是否成对、完整,并先用简单模板排查。 - 已经生成的旧文档不会因为修改模板自动重写;新模板用于之后创建的笔记。已有微信读书书籍请执行一次“更新同步”应用普通书籍同步模板的变化。
常见问题
为什么旧笔记里会出现 SQL 查询嵌入块?
部分旧版本在微信读书新来源选择“使用 bookID”直接入库并创建文档时,没有正确预先解析书籍模板中的 {{书籍简介}} 和 {{作者介绍}}。残留的双大括号内容随后进入思源模板引擎,可能被思源解释为查询嵌入块,因此最终出现异常的 SQL 查询嵌入。
当前实现的处理顺序是:书籍笔记模板 → 插件先统一解析自己的书籍变量 → {{书籍简介}} 使用微信读书 /book/info 返回的 intro → {{作者介绍}} 无数据时替换为空字符串 → 再交给思源模板引擎处理 .action{}、分栏等思源语法。
新创建文档已经修复;已经生成的旧异常块不会自动修改。可以手工删除旧异常块,或重新创建文档验证。这里不需要、也不要去修改 SQL,因为该 SQL 查询嵌入本来就不应该由这个流程生成。
为什么在这里找不到微信读书的 BookID 变量?
{{bookID}} 和 {{wereadDeepLink}} 只属于“微信读书书籍模板”,用于同步普通书籍内容。书籍笔记模板使用的是书籍数据库字段变量;公众号同步也不使用这两个变量。