Brave
@47c132035ed7a1105a867946b99d67af 开源软件研究 公开
讨论 TypeType:用自托管打造隐私友好型跨平台视频聚合生态

TypeType:用自托管打造隐私友好型跨平台视频聚合生态

TypeType 是一个自托管(self-hostable)视频生态系统,让你在自己的服务器上聚合观看 YouTube、Bilibili 和 NicoNico 三大视频平台的内容。它不是 SaaS 服务,不是某个前端换皮,也不是 Invidious、Piped、FreeTube 或 NewPipe 的分支——它是一个从零构建的完整视频栈,包含 Web 客户端、API 后端、下载服务、Token 服务和媒体代理。


一、设计理念

TypeType 的核心设计原则是隐私优先 + 自托管。所有用户数据——观看历史、订阅、播放列表、收藏、观看进度、设置——都存储在你自己的实例上,不依赖任何第三方服务。视频流提取在服务端完成,Web 客户端只负责 UI 呈现,不参与任何提取逻辑。这意味着:

  • 你的观看行为不会被平台算法捕获
  • 没有广告追踪
  • 数据完全由你掌控
  • 前端与提取逻辑解耦,更新只需更新后端

二、支持的平台

平台支持内容
YouTube搜索、趋势、频道、评论、播放列表、订阅、DASH 流、下载
Bilibili搜索、趋势、频道、评论、弹幕、播放列表
NicoNico搜索、趋势、频道、评论、弹幕、播放列表

三、功能全景

3.1 视频播放

  • 多平台视频播放,支持 DASH 流媒体(分离音视频流)
  • 媒体代理:当浏览器直接播放不可靠或需要特定请求头时,通过代理中转
  • 下载功能:通过独立下载服务将视频保存到 Garage S3 存储

3.2 库管理

  • 播放列表(Playlists)
  • 观看历史(History)
  • 订阅管理(Subscriptions)
  • 收藏(Favorites)
  • 稍后观看(Watch Later)
  • 观看进度同步

3.3 搜索与发现

  • 多服务同时搜索(YouTube + Bilibili + NicoNico)
  • 各平台趋势/热门
  • 频道页面浏览
  • 评论查看

3.4 数据导入

  • YouTube Takeout 数据导入
  • PipePipe 备份数据导入

3.5 下载

  • 通过独立下载服务将视频保存到本地存储
  • 支持多种格式选择

四、架构设计

TypeType 采用微服务架构,各组件职责清晰:

┌─────────────┐     ┌──────────────┐     ┌─────────────────┐
│  Web Client  │────▶│  API Backend │────▶│  PipePipeExtract │
│  (React/TS)  │     │  (Kotlin)    │     │  (视频流提取)    │
└─────────────┘     └──────┬───────┘     └─────────────────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
        ┌──────────┐ ┌──────────┐ ┌──────────┐
        │PostgreSQL│ │Dragonfly │ │  Media   │
        │(用户数据) │ │(缓存)    │ │  Proxy   │
        └──────────┘ └──────────┘ └──────────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
        ┌──────────┐ ┌──────────┐ ┌──────────┐
        │Downloader│ │  Token   │ │ Garage S3│
        │(下载服务) │ │(Token服务)│ │(存储)    │
        └──────────┘ └──────────┘ └──────────┘

五、部署方式

5.1 一键安装(推荐)

curl -fsSL https://raw.githubusercontent.com/Priveetee/TypeType/main/scripts/install-stack.sh | bash

安装脚本会自动创建 ~/typetype-stack 目录,生成必要的密钥,选择可用端口,启动所有服务,并初始化 Garage S3 存储。

5.2 手动 Docker Compose 部署

git clone https://github.com/Priveetee/TypeType.git
cd TypeType
cp .env.example .env
./scripts/bootstrap-env.sh
docker compose pull
./scripts/bootstrap-garage.sh
docker compose up -d

5.3 本地开发

bun install
cp apps/web/.env.example apps/web/.env
# 设置 VITE_API_URL=http://localhost:8080
bun run dev

六、默认本地端点

服务地址
Web 应用http://localhost:8082
API 后端http://localhost:8080
Token 服务http://localhost:8081
Garage S3http://localhost:3900

七、API 快速验证

部署完成后,可通过以下命令验证服务是否正常运行:

# 健康检查
curl -fsS http://localhost:8080/health

# YouTube 搜索
curl -fsS "http://localhost:8080/search?q=lofi&service=0"

# Bilibili 趋势
curl -fsS "http://localhost:8080/trending?service=5"

# NicoNico 视频流提取
curl -fsS "http://localhost:8080/streams?url=https%3A%2F%2Fwww.nicovideo.jp%2Fwatch%2Fsm9"

八、与同类项目的对比

特性TypeTypePipedInvidiousFreeTubeNewPipe
自托管❌(桌面端)❌(移动端)
多平台YouTube + BiliBili + NicoNicoYouTubeYouTubeYouTubeYouTube + 部分
服务端提取✅ Kotlin❌ 客户端❌ 客户端
下载功能✅ 独立下载服务
弹幕支持✅ NicoNico
数据导入YouTube Takeout + PipePipe
技术栈React + KotlinVue + JavaCrystalElectron/VueKotlin/Java

九、项目状态与注意事项

TypeType 目前仍处于早期阶段,但核心功能已可正常使用。需要注意:

  • 视频平台(YouTube、Bilibili、NicoNico)的接口频繁变化,提取逻辑、签名 URL、请求头、范围请求和缓存 TTL 可能随时失效。
  • 项目采用清晰的 HTTP 边界:Web 客户端只与 API 通信,视频流提取完全在 TypeType-Server 后端完成。
  • 许可证:主仓库为 MIT,TypeType-Server 因使用 PipePipeExtractor 而采用 GPLv3。

十、小结

TypeType 是一个架构清晰、功能完整的自托管视频平台。它的核心价值在于:隐私保护(数据自管)、多平台聚合(一个界面覆盖 YouTube/Bilibili/NicoNico)、架构优雅(前后端分离、服务端提取、Docker Compose 一键部署)。对于注重隐私、希望摆脱平台算法控制、又不想牺牲观看体验的用户来说,TypeType 是一个值得投入的选择。

项目地址:https://github.com/Priveetee/TypeType 

官方文档:https://priveetee.github.io/Docs-TypeType/