使用 EverBlog 发布印象笔记到博客 | 个人博客

本文介绍了通过 EverBlog 插件发布 Hexo 博客的两种方法。

整体流程

整个发布流程分为两步:1. 从印象笔记中获取笔记内容;2. 发布笔记。对于第一个步骤,有两种方法:一种是通过印象笔记的 JavaScript SDK 从服务器获取笔记内容,一种是通过 JXA(JavaScript for Automation)从印象笔记客户端获取笔记内容。两者都各有优缺点:前者跨平台,但是印象笔记的 token 有时效性(7 天),需要经常申请,比较麻烦,而且 API 有拉取次数限制,不能频繁拉取;后者完全在本地进行,没有任何限制,但是仅限 macOS 平台。

v1:通过 JavaScript SDK

印象笔记 JavaScript SDK 会使用印象笔记提供的 API 抓取笔记内容然后生成相应的内容。使用时将想要发布的笔记添加上 published 标签即可。

插件主要分为两个部分:EverBlogeverblog-adaptor-hexo,在原版基础上添加了以下功能:

  1. 云端本地自动同步
    • 原来的插件只有新增笔记的功能,如果云端的笔记被删除,本地的文件需要手动删除,所以我通过对比远程笔记的列表和本地文件的列表删除相应的文件
  2. 区分 Markdown 笔记和其他笔记
  3. 发布笔记
    • 对于想要发布到博客的笔记,只需添加 published 标签即可
    • 笔记本的名称会被当做笔记的类别
    • 除了 publishedtop 两个标签,其他标签可以被正常同步到博客
  4. 置顶博文
    • 对于想要置顶的博文,需要添加 top 标签到对应笔记(注意该笔记需要被是发布的)
    • 自动在相应博文添加 top: true
  5. 自动添加文章目录(仅限 Markdown 笔记)
    • 印象笔记的目录是使用 [TOC] 生成的,而一些 Hexo 主题是需要在 Markdown 文件中使用 toc: true 开启目录功能
    • 自动识别 Markdown 笔记中的 [TOC] 标记并删除,然后在相应博文添加 toc: true

配置置顶文章功能

  1. 替换首页生成器:
    1
    2
    3
    # your_blog
    npm uninstall hexo-generator-index --save # 卸载原来的首页生成器
    npm install hexo-generator-index-pin-top --save # 安装有置顶功能的首页生成器
  2. 在博客根目录的配置文件中设置文章排序方式:
    1
    2
    3
    4
    5
    6
    index_generator:
    path: ''
    per_page: 10
    order_by:
    -top
    -date

安装笔记获取插件

1
2
3
4
# your_blog
npm install -g https://github.com/zh0ngtian/everblog.git
npm install --save https://github.com/zh0ngtian/everblog-adaptor-hexo.git
echo "module.exports = require('everblog-adaptor-hexo')" > index.js

获取 token

印象笔记
Evernote

注意:token 的有效期只有一周,如果过期在构建的时候会报错,需要重新申请并修改配置文件。

配置

1
2
3
4
5
# ~/.everblogrc
token: xxx
noteStoreUrl: 'https://app.yinxiang.com/shard/s15/notestore'
serviceHost: app.yinxiang.com
sandbox: false

构建

1
2
# your_blog
DEBUG=* everblog build

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

参考

印象笔记+hexo搭建自己的个人博客

rozbo/hexo-abbrlink: create one and only link for every post for hexo

everblogjs/everblog: Evernote + Blog = EverBlog

everblogjs/everblog-adaptor-hexo: Hexo adaptor for everblog

使用 EverBlog 发布印象笔记到博客 | 个人博客

http://www.zh0ngtian.tech/posts/67d25f66.html

作者

zhongtian

发布于

2020-01-05

更新于

2023-12-16

许可协议

评论