Notion进阶之【书库】

在用Notion之前,都在用豆瓣记录看过的书籍电影。其实现在豆瓣的移动端做得挺好的,ui设计得有模有样,各种形式的统计也层出不穷。唯一致命的就是审查,他们不得不随意关评的条目,不得不隐藏的内容。就跟嫌弃百度云一样,你把它当做数据库用,结果说没就没,存了个寂寞。

所以在熟悉Notion用法之后,果断搬家了。

本文和已经发布、即将发布的系列tips一样,都是进阶的、内容简洁的轻型分享,重点分享思路,不特别做基础知识普及。对notion不熟的人,如果对本用法有兴趣,需要自行搜索入门教程进行补习(推荐大佬177的视频教程)。

用途简述

平时读书的时候,总喜欢记录版本、阅读起止日期,回顾一下前一阶段读了多少书、都是哪些作者的书;还有多少翻开了没看完的书等等……

这些在Notion都得到了满足,更吊的是,它能有无限的方式为你的需求作出精确分类。

本分享涉及内容较上一篇多,可能有点长。

p. s. 本blog的菜单里有分享我的书库,随时来玩~

模块介绍

为了满足前面所提到的诸多功能,只用一个database是不够的,还需要原始database的诸多副本。所以原始database在以下简称为元database。

元Database:原始书库

因为副本众多,我以功能将它们分散在两个页面里,一个页面用来收集所有已读的书目,以及所有登记过的书目(包括未读的);另一个页面用来给所有在读、未读的书目分类。

左图是我针对每本书做的记录,其中核心元素为:
作者、阅读进度、喜恶(、书籍资源)。

书籍资源(附件属性)如果利用得好的话,相当于搭建了私人网络图书馆。

阅读进度有两种方式可以测算:

1. 如果你以阅读电子书为主,那么就有条件直接输入当前的百分比。(此时进度prop是Number属性)
2. 当你阅读的载体多样,就需要用到算法prop。为了能够计算阅读进度,两个number属性的property是不可少的:一个表示整本书的总量,一个表示当前进度。你可以选择以页码为参数,也可以kindle的位置作为参数,等等。

第二种方式的算法参考:

if(ceil(prop(“已完成”) / prop(“总量”) * 100) > 100, “error”, if(ceil(prop(“已完成”) / prop(“总量”) * 100) == 0, “🕒”, if(ceil(prop(“已完成”) / prop(“总量”) * 100) <= 5, “■ ” + slice(format(round(prop(“已完成”) / prop(“总量”) * 100)), 0, 4) + “%”, slice(“■■■■■■■■■■”, 0, round(prop(“已完成”) / prop(“总量”) * 10)) + ” ” + slice(format(round(prop(“已完成”) / prop(“总量”) * 100)), 0, 4) + “%”)))

待读书目Database

海量的副本来了= =+ 应该可以看出来我是个分类狂魔……

在这个db中,我通过3个层级对书目进行了分类:

1. 区分“计划要读”和“单纯的mark”
2. 在“计划要读”的内容中,区分“正在读”、“排队中”、“搁置”
3. 基于上述两大类的“文体方面”的分类

上述几个方面都是直接用filter分流(第一层)之后,以单选prop(状态prop与文体prop)来区分的。
想这么搞的请注意,因为每一层内的副本必须包含更高层级的filter,建议先设置第一层的filter,然后再以各自的副本创建第二层的副本,再以第二层副本生成第三层的副本,这样会自动复制已经设好的filter,就不用每个副本都重新设置了(挨个弄会疯的)。

截图中有一个模块的标题中均显示“🔆”,这个相当于我手动设置的“置顶”,用以标记需要优先阅读的书籍。
这个模块需要在上述filter的基础上,增加一个“标题里含有🔆”的条件。

已读书目Database

这个模块就简单很多,年度阅读时直接按照年份来显示,底下的归档是方便进行整个库的索引,保留默认设置就行。

关于按照年份来显示内容,有两个方案:

1. 直接从“完成阅读的prop(Date)”里读取年份,通过filter来实现
这种方案可以通过给副本创建不同视图来显示历年阅读记录。但弊端在于,如果你的date数据包含起止两个日期、且两个日期分属不同的年份的时候,会重复统计。可能有算法可以优化这个问题,需要研究。

2. 通过单选prop来录入年份
我就是使用这个方法,建立了一个记录完成阅读的年份的单选prop,然后直接基于这个prop来区分内容。弊端是如果你已经记录了阅读起止时间,就相当于得多记录一个重复的数据。

书单Database

先解释一下这个书单的逻辑。书单和书库联动,只需要将书目添加至相应的书单里,就能得到一个随着你的阅读完成度自动更新进度的书单。(菜单栏中同样有分享。)

从db名称可以看出来,这是新的db,它关联了书库db,并通过roll up显示了有必要的内容,为算法提供数据。

书单db的核心元素有:
书单名称、关联db(与书库关联)、roll up(统计已完成的数量)
此外我还添加了:
deadline(Date)、书单所包含的书籍总数(roll up)

关于统计完成百分比的Roll up如何选择:
用一个Prop.来将一本书标记为已完成的方案有很多,以下是两种思路:

1. “已读”复选框:
读完了就打个勾,统计已打勾的数量。从思路上最简便的方式,但如果你在书库里已经有统计阅读进度的prop,就相当于需要多操作一步。

2. 通过评分(或类似的)prop是否空白,来识别一本书是否读完:
我使用的就是这种方式,不需要进行多余的标记。但它涉及记录时的顺序问题,你需要确保在读完一本书之后才填写该prop,否则会造成数据失实;
这个方式的弊端在于,当有些书你再也不打算继续读并且想要给个差评的时候,它也会被识别成已读,因而无法与那些真正读完了的书籍作出区分。

“进度”Prop的算法分享:

slice(“■■■■■■■■■■”, 0, round(prop(“表示已读百分比的prop”) * 10)) + slice(“□□□□□□□□□□”, 0, 10 – round(prop(“表示已读百分比的prop”) * 10)) + ” ” + slice(format(prop(“表示已读百分比的prop”) * 100), 0, 4) + “%”

关于视图选择

主要是想谈谈mark的书籍的视图选择。个人认为列表(List)视图的显示效率最高,同时视觉上最简洁。

据我观察,“买书如山倒”的心态一样投射在mark书籍上,甚至因为不占地方也不费钱,比买书的增长速度还快。mark的书多了,拖延得久了,自然就忘记了当初为什么mark。在List视图上,选择显示“mark的原因”这个property,应该可以在将来找书读的时候提高效率。

衍生

权限问题

如果想要公开自己的阅读记录给别人看,那么这个元db放在什么位置,需要斟酌。
元db开放权限是所有分享行为的前提。Notion的权限是自下而上的,也就是,如果你的元db没有开放权限,访客就无法读取它的副本和内页;其次,如果是想选择性公开内容、而将隐藏的内容放在元db的话,即便元db不在页面上,访客一样可以通过db标题的箭头访问到你的元db。
所以,建议将元db用作子模块来展示(比如阶段阅读、推荐书籍等等模块),设置好filter之后,将页面上锁,再创建一个副本放在后台,将副本作为替代的元db来展示全部的内容。

与论文资料摘录db关联

如果读过上一篇关于用Notion搭建论文文摘库的分享,那么这一篇的db其实也可以与上一篇的db建立relation,读论著的时候也可以将素材整合进那个db里。

Notion进阶之【书库】”的一个响应

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Google photo

您正在使用您的 Google 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s