KizunaShelf:为你所爱的一切打造的专属空间
速览
KizunaShelf是一个全新上线的数字平台,旨在为用户提供一个保存和管理自己钟爱内容与物品的个性化空间。该平台强调用户自主性与情感连接,让每个人都能轻松整理属于自己的数字收藏。其推出标志着个性化内容管理领域的新探索。
AI 深度解读
背景
在数字时代,人们习惯用各种工具记录自己喜爱的书籍、电影、电视剧、动漫或音乐。市面上虽然有庞大的在线服务目录,但用户始终受制于平台——平台可以随时决定内容的存留。也有一些精美的离线移动应用,但用户的多样化兴趣往往无法被单一的预定义目录或数据模型容纳。更重要的是,这些应用和服务随时可能消失。作者在经历了 Airtable、Notion 和自托管 NocoDB 等工具的反复迁移后,最终决定拥抱“文件胜过应用”的理念,选择使用 Obsidian Vault,将所有关注的内容存为带 front matter 的 Markdown 文件,并通过 Dataview 和 Obsidian Bases 组织。然而,手动管理超过 2000 个 Markdown 文件带来了新的摩擦:查找元数据、更新状态、追踪日期,这些繁琐的“图书馆管理员”工作取代了发现新内容的乐趣。KizunaShelf 正是为了解决这些问题而诞生的。
核心内容
KizunaShelf 是一个自托管的媒体追踪应用,但它并非又一个普通的媒体追踪器。它结合了类似 Airtable 的动态数据库灵活性,允许用户完全定义数据含义。用户可以通过在 vault 文件夹中保存一个 KizunaShelf/config.yaml 文件来声明类型、字段以及每个字段的具体角色,例如:
- 哪个字段代表条目标题,以及标题使用的语言
- 哪个字段描述日期及其含义(如游戏发售日期、开始看动漫的日期)
- 哪个字段代表状态,以及自定义选项列表
- 对象间的关系如何定义,如何连接不同类型
同时,KizunaShelf 提供了开箱即用的默认预设,涵盖动漫、电视剧、电影、游戏、桌游、书籍、漫画、音乐专辑、播客、艺术家/创作者和角色等常见类别。这些类型可以直接连接 TMDB、TheTVDB、IGDB、Bangumi、Apple Music、MyAnimeList、Google Books 等外部元数据提供商。
添加条目非常快捷:点击加号按钮,搜索内容,点击即可添加。封面可下载到本地,状态和日期可以稍后按自己的节奏记录。KizunaShelf 还支持“子条目”概念(如动漫的剧集、CD 的曲目列表),允许在同一 Markdown 文件中以复选框或列表形式单独追踪。
在工程架构上,KizunaShelf 实现了跨平台方案:
- 自托管的 Web 应用,可随处访问
- 基于 Tauri 的轻量级桌面应用(支持 macOS、Linux、Windows),打开与 Obsidian 相同的本地文件夹
- 原生的 iOS 应用(SwiftUI),通过 UniFFI 将 Rust 核心桥接到 Swift 模块
- 通过从 Rust 后端生成 OpenAPI (Swagger) 规范,自动生成 TypeScript 和 Swift 客户端,保持一致性 未来 Android 应用也将遵循相同的架构。
项目中遇到 Unicode NFC 与 NFD 规范化差异的问题,已解决,文件名中可安全使用「Pokémon」或「ポケモン」,wikilink 和关系匹配可在 NFC/NFD 间归一化。
“Kizuna”(絆)代表事物之间持续的连接。KizunaShelf 设计用于映射这些连接:日历追踪即将发布的作品、计划以及日常日记中提及的内容;活动源将观看、游玩、阅读的瞬间整理成时间线。条目之间的关系(front matter 关系、wikilink、反向链接、列表)被汇聚到一个详细视图中,将用户最爱的动漫角色、其声优、参加的现实活动以及实体手办都关联在一起。
作者在 2017 年五月上旬于秋叶原一家复古游戏店购买了一捆 PSP 游戏(包括 Ever17),那一刻正是 LeMU 事件在现实中展开的时刻——这正是这个应用存在要保留的那种羁绊。
目前 iOS 版 KizunaShelf 已通过 TestFlight 开放 Beta 测试,开源桌面版和自托管 Web 版即将发布,Android 版计划于今年晚些时候或明年推出。作者承诺在可预见的未来持续维护。
应用设计时考虑了自己的“寿命”:没有服务器存储用户数据,没有专有格式。所有数据都是纯 Markdown 加可读的 front matter。动漫/电视剧的剧集使用 📅 表示播出日期,勾选后添加 ✅ 日期,遵循 Obsidian Tasks 的表示方式。智能列表使用 Obsidian Bases 的子集格式,可在 Obsidian 中打开并显示相同条目。用户的数据可以永远留在自己手中,无论应用是否存在。
关键要点
- 脱胎于 Obsidian 生态:KizunaShelf 直接以 Obsidian Vault 中的 Markdown 文件作为存储基础,利用 front matter 和 Dataview/Bases 的机制,但通过自动化消除了手动管理元数据的负担。
- 自托管 + 跨平台原生体验:后端 Rust 核心通过 UniFFI 直接桥接到 SwiftUI 移动端,Tauri 桌面端轻量且与 Web 端共享前端代码,通过 OpenAPI 规范自动生成客户端,保证客户端一致性。
- 用户自定义 schema:通过一个 YAML 文件定义类型和字段,用户掌握数据含义的自主权,同时提供主流媒体类型的默认预设,降低入门门槛。
- 外部元数据集成:支持 TMDB、TheTVDB、IGDB、Bangumi、Apple Music、MyAnimeList、Google Books 等常见来源,一键搜索并添加。
- 子条目追踪:支持在同一个 Markdown 文件中以列表形式追踪剧集、曲目等子条目,并挂钩日期和状态。
- 关系网络与时间线:通过 wikilink、backlink、front matter 关系将条目、角色、事件、活动等关联起来,日历与活动源形成个人记忆时间线。
- 数据永存设计:所有数据均为纯文本 Markdown,无专有格式,无服务器存储,应用即使停止运行数据依然可用,兼容 Obsidian Tasks 和 Obsidian Bases 格式。
- Unicode 兼容:解决 NFC/NFD 规范化问题,支持包含特殊字符的文件名(如日文、颜文字)。
意义与影响
KizunaShelf 代表了一种新的媒体追踪理念:将数据的所有权和长期可访问性放在首位,同时不牺牲用户体验和动态灵活性。它解决了现有工具(平台控制、数据锁定、迁移成本、手动维护)的核心痛点,通过拥抱开放的文件格式(Markdown)和自托管架构,让用户真正掌控自己的数据。工程上的跨平台方案——Rust 核心 + 原生 UI(Tauri 桌面 + SwiftUI 移动)——展示了如何避免 Electron 的重量感同时保持代码一致性,为类似个人项目提供了可复用的架构参考。此外,KizunaShelf 对“羁绊”概念的强调,将媒体追踪从单纯的清单提升为个人记忆与情感连接的工具,这在日益商品化的数字世界中具有独特的人文价值。对于 Obsidian 用户和喜欢自托管、注重数据长期保存的爱好者来说,这是一个值得关注的补充工具。
