[控场AI]
· 6 分钟阅读· 3,166 字

用Claude打造的伪有线电视网:Spelunkr如何复活互联网档案馆的旧影像

用Claude打造的伪有线电视网:Spelunkr如何复活互联网档案馆的旧影像

开发者借助 Claude Code 用算术同步调度,将 Internet Archive 旧影像重组为 24 频道怀旧有线电视网 Spelunkr。

Spelunkr 是一个由单人开发者借助 Claude Code 历时 8 个月打造的"伪有线电视网",从 Internet Archive 挖掘约 2700 小时公共领域旧影像,重新编排成 24 个主题频道全天候不间断同步播放。其核心技术相当克制:视频直接从档案馆流式播放,全球同步依靠客户端对排期表的算术推算实现,无需专用流媒体服务器。项目还内置了时间戳锚定的评论系统——评论绑定录像带的具体秒数,无论何时播出都会在那一刻浮现,被称为"弹出式电视涂鸦"。整个近 9 万行的代码库几乎全程借助 AI 完成,是一封用现代工具写给旧媒介时代的情书。

一个用代码重现的怀旧电视体验

在流媒体点播成为主流的今天,一位开发者却反其道而行,用 Claude Code 搭建了一个名为 Spelunkr 的"伪直播有线电视网"。它从 Internet Archive(互联网档案馆)里挖掘那些被遗忘的影像资料,重新组织成 24 个主题频道,按照同步时间表全天候不间断播放。

这个项目最大的魅力在于它复刻了传统电视的核心体验:当你"调台"进入时,看到的是正在播放中的某个片段——与全球所有观众在同一时刻看到完全相同的画面,就像过去打开电视时的那种随机感和共时感。目前整个片库约有 2700 小时的视频,24 个频道全天候轮播。

Spelunkr 伪有线电视网界面

频道设计:从油画教学到B级恐怖片

Spelunkr 的频道编排颇具巧思。每个频道都要先通过 Archive 搜索审计,确认档案馆里是否有足够内容支撑一个完整频道的时长。

其中有一类被标记为 REWIND 的频道,播放的往往是 2 到 6 小时长的 VHS 录像带转录——这些是上世纪九十年代某人用录像机从真实有线电视上录下的内容。还有专门的经典电影频道,涵盖恐怖片、怪兽电影、黑色侦探片和西部片等类型。开发者甚至找齐了 Bob Ross《欢乐绘画》(The Joy of Painting)的全部剧集,为它单独开设了 CH 12: HAPPY TREES(快乐小树) 频道。

每个频道都有独立的品牌视觉:一个由八个颜色标记绘制的 32×32 像素台标、专属的台休配音和音乐池。频道排片有三种方式——按年份排序(8 个频道)、随机打乱(12 个)和区块轮播(4 个)。区块轮播会连续播几集同一节目再切换到下一个,循环往复。此外,视频之间还设置了台休"插播"(bump breaks),致敬了经典的 Adult Swim 频道风格。

Internet Archive(archive.org)是一家非营利数字图书馆,其"视频档案"板块收录了大量处于公共领域(public domain)或以知识共享(Creative Commons)授权发布的影像资料,包括政府教育片、早期商业广告、独立电影及个人捐赠的家庭录像等。VHS 录像带的数字化转录是其重要馆藏来源之一——许多九十年代的有线电视节目因版权过期或权利人主动捐赠,以数字化形式永久存档于此。Spelunkr 能够直接链接这些文件流式播放而无需自行托管,正是基于这些内容在版权上的开放状态,这也是整个项目在法律层面得以成立的根本前提。

技术核心:用算术实现全球同步播放

这个项目的工程实现相当克制而精巧。网站上所有视频都直接从 Internet Archive 流式播放,播放器就是一个指向档案馆原始文件的纯 HTML <video> 元素——没有 iframe、没有代理、不重新编码、不做任何拷贝。Spelunkr 自身只提供页面(约 110 KB 的 gzip 压缩 JavaScript)、小体积的 JSON 排期表,以及约 200 首用于台休的公共领域或 CC 授权音乐。

"当前正在播放什么"本质上是一道算术题:从排期表的起始时间推算到当前时刻即可。同一套代码运行在浏览器、发布工具和测试中,以毫秒为单位计算,确保全球每台设备都落在每个频道排期的完全相同位置。浏览器会用 HTTP Date 响应头校准自己的时钟,只有当偏差超过 2 秒时才会修正。新排期至少提前两分钟发布,在台休结束时接管,已打开的标签页通过 websocket 得知切换,无需刷新。

整个代码库约 8.7 万行,包含 2.4 万行应用代码、1.3 万行 CSS、2.8 万行工具脚本、1.6 万行测试和 5000 行 SQL。8 个月间累计 670 次提交,运行超过 850 个单元测试和 160 个浏览器测试。

这种同步机制在技术上属于"确定性调度"(deterministic scheduling)的思路:排期表本质上是一个以固定历元(epoch)为起点的时间轴,任意客户端只需知道"现在几点"就能独立推算出当前播放位置,无需服务器持续推送状态。这与传统直播流的做法截然不同——传统方案需要专门的流媒体服务器(如 HLS/DASH 源站)持续分发实时切片,带宽和运营成本都高得多。Spelunkr 的方案把"同步"的计算完全下沉到客户端,服务器只需静态托管排期 JSON,极大降低了基础设施复杂度。其代价是依赖客户端时钟的准确性,因此才需要用 HTTP Date 头做二次校准——这是一种轻量级的 NTP(网络时间协议)替代思路,在浏览器环境中无法直接访问系统时钟同步服务时尤为实用。

Claude Code 作为开发搭档

值得关注的是,开发者明确表示这是他"用 Claude 构建的第一个想法",8 个月间断断续续约 30 天的"总工作量",几乎全部借助 Claude Code 完成。

Claude 在项目中承担了相当实际的角色:它会检查每一盘"录像带"是否合法可用,然后生成描述、相关事实和排期表,交由开发者审核批准。这种人机协作模式——AI 负责内容审计与初稿生成、人类负责最终把关——展示了 AI 编程工具在个人长期项目中的实用价值。对于一个单人维护、代码量近 9 万行的复杂系统而言,这样的产出效率颇具参考意义。

社区互动:时间戳锚定的"弹幕涂鸦"

Spelunkr 还内置了一套独特的互动机制。它提供有限的 DVR 功能:可以暂停、后退 15 秒、或在当前片段内拖动进度,播放器会显示你"落后直播多少",点击 LIVE 即可回到实时位置。

更有意思的是带时间戳的评论和表情反应系统。评论并非挂在频道或播出日期上,而是绑定在"录像带本身(Archive 标识符)+ 片段内的某一秒"。这意味着无论这盘带子何时、在哪个频道播出,到了那一秒,评论都会重新浮现。开发者形象地称之为"弹出式的有线电视涂鸦"。表情反应无需账号即可发送,而评论则需登录(登录同时会加入 Discord 以便内容审核)。

这套评论机制在数据模型上与 YouTube 章节评论或 SoundCloud 的波形时间戳评论同属一类思路,但关键差异在于:它的索引单位是"档案馆资源标识符(Archive Identifier)+ 秒数",而非"某次特定播放会话"。这意味着评论具有跨时间、跨频道的持久性——同一盘录像带可能在不同频道的不同时段反复播出,每次到达那一秒,历史留言都会重新出现,形成一种跨越时间的异步共同观影感。这与日本视频网站 Niconico 首创、后被国内弹幕视频平台广泛采用的弹幕机制在精神上相通,但 Spelunkr 的版本更强调"同一内容、不同时刻观看者"之间的跨时连结,而非单次播放中的实时刷屏。

充满野心的后续规划

开发者的后续计划同样天马行空:为每个频道制作 GeoCities 风格的复古主页,配上留言簿和网环(webring);为每个电台提供九十年代聊天室皮肤的实时聊天;为外语频道(对复古日本游戏节目频道兴趣颇高)生成机器翻译的实时同步英文字幕;用户剪辑功能和排行榜;以及正在为万圣节赶制的"恐怖主持人"B 级片频道——致敬 Elvira 等已逝年代的公共电视主持人。

他还透露,手头囤积的创意足够再做大约 50 个频道,包括电视购物、游戏节目、灵异节目等。Spelunkr 不仅是一次技术实验,更是一封写给旧媒介时代的情书——用现代 AI 工具重新激活那些本可能永远沉睡在档案馆里的影像。

#Spelunkr#Claude Code#AI编程#Internet Archive#伪直播电视#怀旧流媒体#个人项目开发
分享:

相关推荐