使用 EverBlog 发布印象笔记到博客 | 个人博客
本文介绍了通过 EverBlog 插件发布 Hexo 博客的两种方法。
整体流程
整个发布流程分为两步:1. 从印象笔记中获取笔记内容;2. 发布笔记。对于第一个步骤,有两种方法:一种是通过印象笔记的 JavaScript SDK 从服务器获取笔记内容,一种是通过 JXA(JavaScript for Automation)从印象笔记客户端获取笔记内容。两者都各有优缺点:前者跨平台,但是印象笔记的 token 有时效性(7 天),需要经常申请,比较麻烦,而且 API 有拉取次数限制,不能频繁拉取;后者完全在本地进行,没有任何限制,但是仅限 macOS 平台。
v1:通过 JavaScript SDK
印象笔记 JavaScript SDK 会使用印象笔记提供的 API 抓取笔记内容然后生成相应的内容。使用时将想要发布的笔记添加上 published
标签即可。
插件主要分为两个部分:EverBlog 和 everblog-adaptor-hexo,在原版基础上添加了以下功能:
- 云端本地自动同步
- 原来的插件只有新增笔记的功能,如果云端的笔记被删除,本地的文件需要手动删除,所以我通过对比远程笔记的列表和本地文件的列表删除相应的文件
- 区分 Markdown 笔记和其他笔记
- 基于 zhougy0717/everblog-adaptor-hexo 和 zhougy0717/everblog-adaptor-hexo-html 这两个 repo,对于印象笔记内置的 Markdown 笔记,抓取源代码生成
.md
文件,对于其他笔记(普通笔记、思维导图笔记等),生成.html
文件
- 基于 zhougy0717/everblog-adaptor-hexo 和 zhougy0717/everblog-adaptor-hexo-html 这两个 repo,对于印象笔记内置的 Markdown 笔记,抓取源代码生成
- 发布笔记
- 对于想要发布到博客的笔记,只需添加
published
标签即可 - 笔记本的名称会被当做笔记的类别
- 除了
published
和top
两个标签,其他标签可以被正常同步到博客
- 对于想要发布到博客的笔记,只需添加
- 置顶博文
- 对于想要置顶的博文,需要添加
top
标签到对应笔记(注意该笔记需要被是发布的) - 自动在相应博文添加
top: true
- 对于想要置顶的博文,需要添加
- 自动添加文章目录(仅限 Markdown 笔记)
- 印象笔记的目录是使用
[TOC]
生成的,而一些 Hexo 主题是需要在 Markdown 文件中使用toc: true
开启目录功能 - 自动识别 Markdown 笔记中的
[TOC]
标记并删除,然后在相应博文添加toc: true
- 印象笔记的目录是使用
配置置顶文章功能
- 替换首页生成器:
1
2
3# your_blog
npm uninstall hexo-generator-index --save # 卸载原来的首页生成器
npm install hexo-generator-index-pin-top --save # 安装有置顶功能的首页生成器 - 在博客根目录的配置文件中设置文章排序方式:
1
2
3
4
5
6index_generator:
path: ''
per_page: 10
order_by:
-top
-date
安装笔记获取插件
1 | # your_blog |
获取 token
注意:token 的有效期只有一周,如果过期在构建的时候会报错,需要重新申请并修改配置文件。
配置
1 | # ~/.everblogrc |
构建
1 | # your_blog |
v2:通过 JXA(JavaScript for Automation)
macOS 上使用 Objective-C 或 Swift 开发的应用都提供了可供用户调用的接口,可以通过“脚本编辑器-文件-打开词典”查看。这些接口支持 AppleScript、JavaScript 和 Objective-C。由于 JavaScript 的社区更加活跃,所以我们选用 JavaScript 进行开发,即 JXA。更多关于 JXA 的资料可以参考 JXA Cookbook。
与 v1 相比,v2 不支持非 MarkDown 笔记。发布和置顶文章的 tag 也略有不同,分别为“Release”和“Top”。
配置置顶文章功能
与 v1 相同。
安装链接生成插件
为了给每篇博客文章生成一个唯一的链接,可以使用 hexo-abbrlink。但是 hexo-abbrlink 是通过文章标题来生成链接的,如果文章标题发生改动,文章链接就会变化。所以我修改了 hexo-abbrlink 的链接生成源,不用文章标题而是使用笔记的 ID(笔记上传后生成的字符串,每篇笔记的 ID 是唯一且不变的),这样每一篇笔记就可以和每一篇文章对应起来了,而且笔记的任何改动(如标题、创建时间、修改时间等)都不会导致这个博客的链接发生变化。
1 | npm install --save https://github.com/zh0ngtian/hexo-abbrlink.git |
下载笔记获取脚本
1 | curl -Lo everblog.js https://raw.githubusercontent.com/zh0ngtian/HexoBlog/master/everblog.js |
构建
1 | osascript -l JavaScript ./everblog.js |
参考
rozbo/hexo-abbrlink: create one and only link for every post for hexo
使用 EverBlog 发布印象笔记到博客 | 个人博客