编者按:现在是2026年,AI时代的skill.md让苹果的Workflow乃至相关的技术文章显得多少有些鸡肋并且滑稽。思量再三,决定还是把这篇文po上来,不仅因为这是我写的第一篇技术文章,更因为这是我第一次尝试“造轮子”并且成功。毫不夸张地说,没有这个workflow的成功,就不会有后面的很多折腾,也就不会有现在的“数据自持计划”。
起
其实,事情的起因非常简单,一是最近买书略多,觉得有必要规整一下;二来,之前已经有过同一本书买两次的事故。所以就想:能不能像书局一样,把所有藏书通过手机扫描条形码的形式来录入,然后在电脑端集中管理。
手机扫描条形码录入本身并不困难,问题是:iOS上同时支持中、日、英文书籍检索的App简直是凤毛麟角。
APP篇
英文类:Goodreads背靠亚马逊好乘凉,英文书籍检索加社交阅读。可惜只要踏出英文书领域半步,都分分钟被教做人。
日文类:因为日本人有阅读习惯的较多,又喜欢系统化,所以日本书籍管理App的选择面比较广。只不过,和英文类存在同样的问题,出了国门就被虐成渣。
中文类:中文App也有不少选择。其中,同时对中、日、英文支持最好的应该是“晒书房”。更难能可贵的是,一些台湾和日本新近出版的书籍皆有对应。是枝裕和在2016年出版的新书《映画を撮りながら考えたこと》竟然都可以做到自动识别,着实让我惊喜不已。之所以最终弃用则是因为很大一大部分日文版的学术书籍不能被识别。所以,没有特殊需求的人可以结束本文的阅读,直接去搜索下载了(编者注:该App已于2021年停止服务)。
承
正所谓,山穷水尽疑无路,柳暗花明又一村:《利用Workflow和Evernote管理书籍》。这个作者的主要思路是:通过开放API来获取图书信息,然后将图书信息导入到笔记类软件,实现全平台全天候管理。引用金星老师的台词就是:
完美!
为了实现这一目的,首先需要在iOS上安装Workflow,2015 Apple Design Awards 受赏作。接下来,就是查找图书类网站提供的API:
API篇
中文类:建议直接使用上文中介绍的workflow:ISBN存书。
日文类:最好用的自然是国立国会图书馆NDL,相当于咱们的国图。简单说,没有在NDL找不到的日文书就是了。但是它的问题在于,提供的检索结果页面是以xml格式输出,而Workflow似乎只支持json格式。
英文类:印象中Goodreads有提供API。
普适类:首先不得不提到的就是卖书界的龙头老大亚马逊图书的API了。毕竟我大部分的书都是在中亚和日亚上买的,理论上不应该存在图书信息不全的情况。另外,被墙的可能性也比较低。但没有最终选择亚马逊的原因在于,抛开使用亚马逊图书API需要提前申请Product Advertising API,Access Key ID,Secret Access Key三件套手续繁杂之外,它和上文中提到的国立国会图书馆一样,只支持xml格式的输出。
谷歌图书API则提供了json格式的输出结果,可以匹配Workflow。并且,不需要申请API Key就可以使用,虽然每天会有查询数不超过100条的限制。但是它的问题在于:第一,必须会科学上网!!!;第二,谷歌图书API查询结果几乎不包含出版社信息;第三,谷歌图书偶尔会出现图书已经收录但是API查询结果为空的情况。很多人在StackOverflow上反映了这一问题,但是现在貌似还没有得到解决。
至于谷歌图书和亚马逊图书在收录数量方面的差异,日本网友做了一个比较,有兴趣的朋友可以参考。
综上所述,权衡利弊,最后还是决定使用谷歌图书的API。
如何定制workflow
首先,既然是定制,肯定要给自己的藏书清单起一个独一无二的名字。在图中显示Title Search和Note Title位置进行修改并保证前后一致。

当然,也可以自定义将图书信息存储在iOS的备忘录里面,暂时不支持Onenote。
其次,图书信息获取网址变更为:
https://www.googleapis.com/books/v1/volumes?q=isbn:<你设计的变量>
当然,你也可以沿用我现有的设置:

下面还有一些具体的变量定义,基本只是在原Po的设置上进行了微调。可以直接使用,不再赘述。
至此,大功告成。。。才怪!!!如果这么容易实现的话,那这篇文章还有什么存在的价值……
转
完成上述修改之后,出现了workflow可以正常运行,但是无法获取图书信息的问题。以《知識人の裏切り》一书为例,网页显示的代码中详细显示了书名、作者和出版日期等信息,但是运行workflow却无法获取。
{
"kind": "books#volumes",
"totalItems": 1,
"items": [
{
"kind": "books#volume",
"id": "gr08AAAACAAJ",
"etag": "yZ9KLFJ2hLw",
"selfLink": "https://www.googleapis.com/books/v1/volumes/gr08AAAACAAJ",
"volumeInfo": {
"title": "知識人の裏切り",
"authors": [
"バンダ,J."
],
"publishedDate": "1990",
"industryIdentifiers": [
{
"type": "ISBN_10",
"identifier": "4624932056"
},
{
"type": "ISBN_13",
"identifier": "9784624932053"
}
],(后略)
经过多次试错,以及比对豆瓣图书API提供的格式,发现造成这一问题的原因在于:
与豆瓣图书API将图书信息直接提供在根目录不同,谷歌图书API将图书信息放在了一个叫volumeinfo的子目录下面(其实我也不知道目录这个词用的对不对)。所以需要在原Po的基础上添加一道工序:

这回,就真的大功告成了。
合
下一步课题
考虑如何能把通过Kindle购买的电子书的信息也按照这种格式导出……