Skip to content

V-Linkin/ArchiveBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArchiveBox

macOS 本地跨平台内容归档器 + 私人搜索库

把各个平台的内容链接粘贴进来,解析后保存为本地可长期查看、可搜索、可整理的私人资料库。即使原平台内容被删除,本地仍有完整副本。

Platform Swift License


这个软件是做什么的?

你是不是经常在抖音、小红书、酷安、B站上看到不错的内容,想保存下来但又怕以后找不到?

ArchiveBox 就是解决这个问题的:

  1. 你在任意平台看到一条想保存的内容,复制它的链接
  2. 打开 ArchiveBox,粘贴链接,点击保存
  3. App 自动识别平台、解析内容、下载图片/视频到本地
  4. 以后随时可以在本地搜索、浏览、整理这些内容

关键区别: 这不是社交平台的同步工具,不同步你的点赞和收藏。它是你主动把链接粘贴进来,做一个本地的私人资料库


支持的平台

平台 支持内容 状态
抖音 图文笔记 + 视频 ✅ 已支持
小红书 图文笔记 ✅ 已支持
酷安 动态 / 文章 ✅ 已支持
B站 视频 ✅ 已支持

核心功能

一键归档

  • 粘贴链接 → 自动识别平台 → 解析内容 → 保存到本地
  • 支持短链接自动展开(如 v.douyin.comxhslink.comb23.tv

本地永久保存

  • 图片保存原图到本地文件系统
  • 视频尽量下载保存(失败不影响图文归档)
  • 封面图本地缓存
  • 即使原帖被删,本地仍有完整副本

智能去重

  • 同一链接重复粘贴不会创建重复记录
  • 三级去重策略:平台内容 ID → 标准化 URL → 原始 URL

全局搜索

  • 搜索标题和正文内容
  • 关键词高亮显示
  • 支持按平台、状态分类、内容类型筛选

二次整理

  • 四个状态分类:收藏 / 灵感 / 待整理 / 已归档
  • 文件夹二级结构,手动整理归类
  • 修改标题、正文、备注
  • 移动、删除、回收站、恢复、彻底删除

内容浏览

  • 网格视图 — 适合图片为主的视觉浏览
  • 列表视图 — 适合正文内容的信息检索
  • 内容详情页展示完整元数据、图片画廊、正文、备注

异常兜底

  • 解析失败也会保留一条记录(链接 + 平台 + 时间)
  • 媒体下载失败支持手动重试
  • 用户可手动补充标题、正文、备注

使用方式

方式一:Xcode(推荐)

# 克隆仓库
git clone https://github.com/V-Linkin/ArchiveBox.git
cd ArchiveBox

# 用 Xcode 打开
open ArchiveBox.xcodeproj
  1. 在 Xcode 中选择 ArchiveBox scheme
  2. 运行目标选 My Mac
  3. Cmd + R 编译运行

方式二:命令行

git clone https://github.com/V-Linkin/ArchiveBox.git
cd ArchiveBox

# 编译
swift build

# 运行
swift run

方式三:使用 xcodegen

# 安装 xcodegen
brew install xcodegen

# 生成 Xcode 项目
xcodegen generate

# 打开项目
open ArchiveBox.xcodeproj

使用流程

1. 打开 App
      ↓
2. 粘贴一个链接到首页输入框
      ↓
3. 系统自动识别平台(显示平台图标)
      ↓
4. 点击「保存」
      ↓
5. 系统解析内容 + 下载媒体文件
      ↓
6. 内容自动进入「待整理」分类
      ↓
7. 随时搜索、移动到文件夹、修改状态分类

项目结构

ArchiveBox/
├── Package.swift                    # Swift Package Manager 配置
├── project.yml                      # xcodegen 配置
├── Resources/Info.plist             # 应用配置
│
├── Sources/ArchiveBox/
│   ├── App/                         # 应用入口
│   │   ├── ArchiveBoxApp.swift      # @main App 入口
│   │   └── AppState.swift           # 全局状态管理
│   │
│   ├── Models/                      # 数据模型
│   │   ├── Enums.swift              # 所有枚举定义
│   │   ├── Item.swift               # 内容条目
│   │   ├── Folder.swift             # 文件夹
│   │   ├── MediaAsset.swift         # 媒体资源
│   │   ├── ImportTask.swift         # 导入任务
│   │   └── ParsedContent.swift      # 解析中间模型
│   │
│   ├── Database/                    # 数据库层 (GRDB/SQLite)
│   │   ├── DatabaseManager.swift    # 数据库连接管理
│   │   ├── Migrations/Migrations.swift
│   │   ├── ItemRepository.swift     # 内容 CRUD
│   │   ├── FolderRepository.swift   # 文件夹 CRUD
│   │   ├── MediaAssetRepository.swift
│   │   └── ImportTaskRepository.swift
│   │
│   ├── Parsers/                     # 平台解析器
│   │   ├── PlatformParser.swift     # 协议定义
│   │   ├── URLDetector.swift        # URL 识别
│   │   ├── URLNormalizer.swift      # URL 标准化
│   │   ├── ParserRegistry.swift     # 解析器注册中心
│   │   ├── DouyinParser.swift       # 抖音解析
│   │   ├── XHSParser.swift          # 小红书解析
│   │   ├── CoolapkParser.swift      # 酷安解析
│   │   └── BilibiliParser.swift     # B站解析
│   │
│   ├── Services/                    # 业务服务层
│   │   ├── ImportService.swift      # 导入流程编排
│   │   ├── MediaService.swift       # 媒体下载
│   │   ├── SearchService.swift      # 搜索服务
│   │   ├── DeduplicationService.swift
│   │   └── FileStorageManager.swift # 文件系统管理
│   │
│   ├── ViewModels/                  # MVVM ViewModel
│   │   ├── HomeViewModel.swift
│   │   ├── PlatformViewModel.swift
│   │   ├── FolderViewModel.swift
│   │   ├── DetailViewModel.swift
│   │   ├── SearchViewModel.swift
│   │   ├── TrashViewModel.swift
│   │   └── SettingsViewModel.swift
│   │
│   ├── Views/                       # SwiftUI 视图
│   │   ├── ContentView.swift        # 根视图
│   │   ├── Sidebar/                 # 侧边栏导航
│   │   ├── Home/                    # 首页(粘贴输入、最近导入)
│   │   ├── Platform/                # 平台分类页
│   │   ├── Folder/                  # 文件夹页
│   │   ├── Detail/                  # 内容详情页
│   │   ├── Search/                  # 搜索页
│   │   ├── Trash/                   # 回收站
│   │   ├── Settings/                # 设置页
│   │   └── Components/              # 通用组件
│   │
│   └── Utilities/                   # 工具类
│       ├── Constants.swift
│       ├── Extensions/
│       └── Helpers/
│
└── ArchiveBox/                      # 原始设计文件
    ├── SPEC.md                      # 产品设计文档
    └── Models/                      # 初始模型定义

技术栈

技术 用途 说明
SwiftUI UI 框架 macOS 14+ 原生开发
GRDB 7.x 本地数据库 SQLite 封装,支持 Migration
SwiftSoup HTML 解析 从网页中提取结构化内容
Swift Concurrency 异步任务 async/await 并发模型
URLSession 网络请求 媒体文件下载
ImageIO 图片处理 缩略图生成、尺寸获取
CryptoKit 哈希计算 文件 SHA256 校验

数据存储

所有数据保存在本地,不上传任何云端:

~/Library/Application Support/ArchiveBox/
├── ArchiveBox.sqlite              # 数据库(结构化数据)
├── Media/                         # 媒体文件
│   └── {item-id}/                 # 每条内容一个目录
│       ├── cover.jpg              # 封面图
│       ├── 001.jpg                # 图片文件
│       ├── 002.jpg
│       └── video.mp4              # 视频文件
└── Temp/                          # 下载临时文件

数据模型

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│     Item     │────▶│  MediaAsset  │     │    Folder    │
│  (内容条目)   │     │  (媒体资源)   │     │   (文件夹)    │
│              │◀────│              │     │              │
│ - title      │     │ - type       │     │ - name       │
│ - content    │     │ - localPath  │     │ - platform   │
│ - rawURL     │     │ - fileHash   │     │ - parentID   │
│ - platform   │     │ - fileSize   │     └──────────────┘
│ - status     │     │ - status     │
│ - folderID   │     └──────────────┘
└──────────────┘

开发计划

已完成 (v1.0 MVP)

  • 四平台 URL 识别与解析
  • 本地 SQLite 数据库
  • 媒体文件下载与存储
  • 全局搜索
  • 文件夹二级结构
  • 回收站
  • 去重机制
  • 网格/列表视图切换

后续计划

  • FTS5 全文搜索(提升搜索性能)
  • 视频完整保存与本地播放
  • 批量导入(粘贴多个链接)
  • 标签系统
  • Spotlight 集成
  • 本地备份与恢复
  • 深色/浅色模式适配

许可证

MIT License


贡献

欢迎提交 Issue 和 Pull Request。

如果你觉得这个项目有用,给个 Star 就是最好的鼓励 ⭐

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages