+++
title = '关于「林卷」页面的详细说明'
slug = 'on-linkroll'
tags = ['破事儿']
date = 2026-04-19 17:11:06
draft = false
toc = true
toot = 'https://akk.eltr.ac/objects/d75412cd-53c1-4d36-8dac-50e4b8355d0b'
+++
本来不想淌浑水,像以往一样保持沉默是最好的,但我发现还是有不少人误解[林卷](/linkroll/)页面存在的意义,以至于对页面内容的微小变动都产生了不必要的关注和猜想。所以,解释是必要的,尽管我有预感写完这篇文章之后我被误解的概率会只增不减,但至少我把话说明了。
## 极客死亡计划没有友情链接
本网站没有「友情链接」这个东西。我**不是**在重新定义友情链接,也不想要改变任何人,我只是没有友情链接这个东西。我不知道这样说够不够清楚了:极客死亡计划**没有**友情链接。
林卷页面里列出的博客链接,请读者看清楚了,我从来没有说过它是友情链接,我写的是「我常看的博客」。不要因为不少博客喜欢用「左邻右舍」这样的词代替「友情链接」四个字,就以为我说的也是一个意思。请读者再看得仔细一些,我是这样说明「我常看的博客」这一栏内容的:
> 以下内容直接从我的 RSS 阅读器导出的 OPML 文件生成,是我订阅的所有 RSS 源,包含我常读的博客和关注的媒体。每次构建时乱序输出。
所以,如果发现我添加了谁或者删除了谁,这不是因为我和对方达成了某种契约,友好地进行了交换,也不代表有任何矛盾和冲突发生。这是个相当中性且相当主观的过程:我发现了我觉得有意思的网站,我把他添加到了 RSS 阅读器里,后来被导出为 OPML 格式,我的静态网站生成器 Hugo 直接读取 OPML 文件生成列表。
请允许我为你详细讲解这个过程有多么无聊,多么**缺少**钩心斗角。
在我博客主题的 [layouts/_shortcodes/opml-links.html](https://src.eltr.ac/eltrac/hugo-theme-venin/src/branch/master/layouts/_shortcodes/opml-links.html) 文件中,我定义了一个可以嵌入在页面中的短代码。它从网站源代码的 `/data` 目录下获取名为 `rss` 的数据,这里指的是 [rss.xml](https://src.eltr.ac/eltrac/geedeapro/src/branch/master/data/rss.xml) 文件。
```html
{{ $opml := hugo.Data.rss }}
{{ range shuffle $opml.body.outline }}
{{ $title := index . "-title" }}
{{ $url := index . "-htmlUrl" }}
{{ if and $title $url }}
{{ $parts := split $url "/" }}
{{ $url := printf "%s//%s/" (index $parts 0) (index $parts 2) }}
{{ $title }}
{{ end }}
{{ end }}
```
`rss.xml` 文件也不是我手动编写的,而是从我的 RSS 阅读器直接导出。我使用基于命令行的开源 RSS 阅读器 [blogtato](https://github.com/kantord/blogtato),导出时我只需要执行一条命令[^1],然后推送到 Git 仓库即可。
```shell
cd ~/Projects/geek-death-project/
blog feed export > rss.xml
git commit -m "[chore] update rss.xml"
git push
```
所以,「我常看的博客」中有任何新增和删除,都只是它们在某次数据同步时程序自动化处理的结果,而之所以数据会发生变更,只是因为我调整了我的 RSS 订阅,调整的策略非常简单:我添加那些更新之后我希望第一时间被通知的订阅源,我移除那些我很久都没有点开阅读、仅仅是增加未读数量的订阅源。
想要被通知可以有很多原因:我喜欢某个作者的内容,想要在未来读到更多;我觉得某个订阅源有一些高质量内容,可以作为资讯和知识来源;我想看某个蠢货继续犯蠢,以作为人类观察样本;我感到无聊,需要一些新鲜内容。
很久没有点开阅读有很多原因:近期某个作者开始发一些我不感兴趣的内容;我一开始关注某个作者是因为他的某一部分创作,深入了解之后我发现整体而言我对他兴趣寥寥;某个订阅源更新频率太快了,我读不完;猎奇心理减弱,我对蠢货提供的样本感到厌烦;我最近接收的信息太多,所以想要精简和整理订阅源。此外,移除之后不代表我就此与某个作者决裂,我仍然会时不时点开他们的网站,我只是**不想要被通知**而已。
我想我解释得够清楚了,我绝对没有和人闹矛盾之后,阴暗地念叨着骂人的话,然后把它从我博客的某个*本来就不是友情链接*的页面里移除。
## “你为什么这么反感友情链接?”
我不反感友情链接!我说的只是:极客死亡计划没有友情链接!
极客死亡计划也没有常规的评论系统,但我并不反感评论,相反我很期待交流,我只是在众多的交流媒介中选择了当下最适合自己的,而这个媒介恰好不是「默认选项」而已!
请不要用「默认选项」来解读我网站上的内容。
## “所以你删了谁啊?”
太多了,数不清。另外我其实不太喜欢「删了某个人」这种说法,因为我没有删掉谁的联系方式,没有在人际关系层面上和任何人决裂,我只是把某个订阅源从我的 RSS 阅读器移除了,然后数据被同步到了我的博客上而已。
只不过另我感到匪夷所思的是,在我删过的众多链接中,有一个脱颖而出。对方看起来没什么意见,倒是有其他人感到异常好奇。
> ?不是,这几天老有人突然出来问我为什么和极客死亡计划互删“友情链接”,主要是我都不知道他删了我,我只是最近整理了一下列表,单纯是因为不常去逛了,我确实看不懂技术类的东西,这是我的个人能力问题。而且我页面的“友情链接”真的单纯是因为我想要有个入口进入这些页面,也有原因确实有友情部分,比如非理勿试,他是我这个博客第一个朋友。
>
> 刚才来了一个人问,我认真回答了,他就删除了我们的telegram聊天框,啊卧槽,你知道这对于一个事事回应的人有多烦躁吗?没有前因后果,哪怕你告诉我你想八卦我也接受,不能把我当个洞插了说不够润滑就把我扔了啊!!!
{{< right "——[♾️莫比乌斯环世界♾️](https://t.me/s/onojyunblog)" >}}
我把莫比乌斯从我的 RSS 订阅列表移除的原因是「内容不感兴趣了,所以不常读了」,对方把我的链接移除的原因是「单纯是因为不常去逛了,我确实看不懂技术类的东西」。他的网站也没有「友情链接」这个东西,只是作为入口;我的网站没有「友情链接」这个东西,只是展示我的 RSS 订阅列表。
如果没有人告诉他我删除了他的链接,他就不知道这件事情;如果不是我*删掉订阅源之后仍然会时不时去逛逛*,我也不会知道他也删除了我的链接。你看,这本来就是双方都不知情也无需知请的小事(因为我们都没有友情链接,没有形成任何必须保留链接的契约),我俩把自己的事情管得好好的,不觉得有什么问题,其他人可以也把自己的好奇心管一管。
而且,我不仅没有刻意地把莫比乌斯从我的页面上移除,他的链接**仍然还在**林卷页面的另一个地方。林卷页面是外部链接的聚合,包含我的 88x31 按钮墙、我的 RSS 订阅列表和博客的外部链接引用次数排行。所谓的引用次数,就是来自某个域名的链接在我的文章中出现的次数。
这个引用次数统计是由一个 [Go 语言程序](https://src.eltr.ac/eltrac/hugo-theme-venin/src/branch/master/scripts/get_external_link_rank.go)生成的,在网站每次构建时,它会自动扫描所有 Markdown 文件,匹配文件里的所有链接,提取出域名,然后放入一个键值对数组,最后导出为 JSON,由 Hugo 生成静态的引用次数排行。
如果读者看得足够仔细,就会发现 `onojyun.com` 这个域名安然无恙地躺在那里。如果我真的阴暗地要与对方决裂,我就会在那个 Go 程序里写个特例,屏蔽掉 `onojyun.com` 域名,这不难。
## “你搞这么复杂干嘛?”
因为我喜欢。
认真地讲,RSS 订阅列表能**最真实地**反映我关注什么,外部链接引用排行能**最真实地**反映我提及得最多的是哪些网站、从哪里获取信息用作援引、和哪些博主有直接的智识交流。为了维护这种真实,我需要排除所有人际关系的束缚,让我自由地、主观地调整订阅列表;我需要用最冰冷的自动化程序呈现最真实的数据,比如,尽管我更喜欢 Codeberg 而不是 GitHub,我也要接受 GitHub 现在就是极客死亡计划外部链接排行榜的榜首这个事实。
极客死亡计划本来就是我真实思考和真情实感的载体,林卷这个包含了最多「外来者」的页面也是一样的。
不过也有朋友提醒我,订阅列表这类私人的东西或许不该公开。尽管我不觉得见不得人,但难免会引发误会、纠葛和不必要的讨论。我仔细想了想,留着的确也没有太多用处,而且我也不想手动再维护一个列表,我懒,维护 RSS 订阅列表就很费精力了。我最近的确在博客上删掉了不少页面,或许林卷会是下一个呢?
从另一个角度看,仅仅因为有人误解和不想要处理麻烦的人情世故,就删掉友情链接(是的,几年前博客还不叫「极客死亡计划」的时候是有友情链接的),再删掉任何形式的链接,未免有些窝囊。
话说回来,自从换掉评论系统后,和我产生交流的大部分人都不是路人,偶尔会收到陌生的读者发来的电子邮件,大部分都很友好且诚恳。那些不愿意了解我,继而让误解占据他们头脑的人,也因为懒得读一大段关于评论的说明、懒得注册联邦宇宙账号,也不愿意发电子邮件而就此止步。
真正愿意交流的人会找到方法的。我很感激[远景](https://v1sta.xyz/)友人前不久通过 Webmention 跟我进行的有来有回的对话。简单来说,我们是在各自的后花园网站上发布页面,然后相互提及,发送 Webmention。我还在用 Giscus 的时候,也有人专门注册 GitHub 账号留下评论。如今我也能收到不少有趣的电子邮件。顺带一提,如果你更偏好即时通信的话,我没有 Telegram,但可以用 [Matrix](https://matrix.org/) 找到我,我的账号是 [@eltrac:eltr.ac](https://matrix.to/#/@eltrac:eltr.ac)。
而且说实话,如果我今天没有去逛莫比乌斯的网站的话,也不会知道居然有人关注这些鸡毛蒜皮的小事,我已经和无聊人士离得很远了。
所以,我大概还是会保留林卷页面,爱订阅什么订阅什么,爱删谁删谁。我本来就没有向任何人保证任何东西,我只向自己保证我的诚实。
[^1]: 感谢作者 kantord 的及时响应,我给他提了这个[需求](https://github.com/kantord/blogtato/issues/89)之后他很快就实现了。