Update from Sync Service

This commit is contained in:
FNS Service
2026-04-21 22:40:15 +08:00
parent 4d64bbaeac
commit 7547721f2b
11 changed files with 1340 additions and 0 deletions

134
HomePage/bookmarks/README.md Executable file
View File

@@ -0,0 +1,134 @@
# MeNav 书签目录
## 目录
- [目录概述](#目录概述)
- [书签导入功能](#书签导入功能)
- [配置加载优先级(完全替换)](#配置加载优先级完全替换)
- [MarksVault 扩展集成](#marksvault-扩展集成)
- [书签导入流程](#书签导入流程)
- [确定性输出](#确定性输出)
- [支持的浏览器](#支持的浏览器)
- [书签格式要求](#书签格式要求)
- [文件处理机制](#文件处理机制)
## 目录概述
`bookmarks` 目录是 MeNav 项目中用于存放浏览器导出的书签文件的专用目录。该目录与书签导入功能直接关联,用于自动将浏览器书签转换为 MeNav 配置文件,从而快速生成个人导航站点。
## 书签导入功能
书签导入功能允许用户:
- 从浏览器导出书签为 HTML 文件
- 将书签文件放入此目录
- 通过自动处理将书签转换为网站配置
- 无需手动编辑即可批量导入网站链接
这一功能极大简化了网站内容的初始设置过程,特别适合需要迁移大量书签的用户。
## 配置加载优先级(完全替换)
书签页配置同样遵循项目的“完全替换”策略:系统只会选择一套配置目录加载,不会把 `user``_default` 混合合并。
- 若存在 `config/user/`:书签页配置应位于 `config/user/pages/bookmarks.yml`(通常由导入脚本生成)
- 否则:使用 `config/_default/pages/bookmarks.yml`(默认示例)
> 提示:一旦创建 `config/user/``config/_default/` 会被完全忽略,因此不要指望从默认配置“兜底补齐缺失项”。
## MarksVault 扩展集成
[MarksVault](https://github.com/rbetree/MarksVault) 浏览器扩展可与 MeNav 集成,实现书签自动同步:
- **一键推送书签**:扩展将书签 HTML 文件推送到仓库的 `bookmarks/` 目录
- **自动化处理**GitHub Actions 检测到书签文件后自动运行导入脚本生成配置
- **自动清理**:处理完成后会删除已导入的 HTML 文件,避免重复处理
## 书签导入流程
完整的书签导入流程如下:
1. 在浏览器中导出书签为 HTML 文件
2. 将导出的书签文件放入 `bookmarks` 目录
3. 运行书签处理工具:
```bash
npm run import-bookmarks
```
- 若 `config/user/` 不存在,导入脚本会先从 `config/_default/` 初始化一份用户配置(因为配置采用“完全替换”策略,需要完整配置才能正常生成站点)。
(可选)若希望生成结果保持确定性(便于版本管理,减少时间戳导致的无意义 diff
```bash
MENAV_BOOKMARKS_DETERMINISTIC=1 npm run import-bookmarks
```
4. 系统自动解析书签文件内容
5. 根据书签文件夹结构生成分类
6. 生成配置文件保存到 `config/user/pages/bookmarks.yml`
7. 构建网站应用新配置:
```bash
npm run build
```
> **重要说明**:在本地开发中,`npm run dev` 命令**不会**自动处理书签文件。您必须先手动运行 `npm run import-bookmarks` 命令处理书签,然后再运行 `npm run dev` 查看效果。这与 GitHub Actions 中的自动处理流程不同,请务必注意。
## 确定性输出
默认情况下,导入脚本会在生成的 `bookmarks.yml` 顶部写入时间戳注释,导致每次导入都会产生 diff。
若你希望生成结果尽量稳定(只有书签内容变化才产生 diff可使用环境变量开启确定性输出
```bash
MENAV_BOOKMARKS_DETERMINISTIC=1 npm run import-bookmarks
```
## 支持的浏览器
MeNav 书签导入功能支持从以下浏览器导出的书签文件:
- **Chrome** - 通过书签管理器导出
- **Firefox** - 通过书签库导出
- **Edge** - 通过收藏夹导出
- **Safari** - 通过书签菜单导出
- 其他支持标准 HTML 书签格式的浏览器
## 书签格式要求
导入的书签文件需满足以下要求:
- 文件格式HTML标准网络书签格式
- 文件编码UTF-8
- 文件结构:包含 `<DL>`、`<DT>` 和 `<A>` 标签的标准书签结构
- 文件大小:建议不超过 5MB约数千个书签
- 支持处理位于文件夹内的书签
- 支持处理不在任何文件夹内的根路径书签(自动归入"根目录书签"分类)
- 空文件夹会被忽略
## 文件处理机制
书签处理器 (`src/bookmark-processor.js`) 对书签文件进行以下处理:
1. **解析文件结构**
- 读取书签 HTML 文件
- 解析 DOM 结构获取书签层次
- 提取文件夹和链接信息
2. **分类提取**
- 将书签文件夹转换为网站分类
- 提取链接URL、标题和添加日期
3. **根路径书签处理**
- **自动分类**:根路径书签会被自动归入名为"根目录书签"的特殊分类
- **显示位置**:该分类始终位于所有其他分类之前(第一位)
- **图标标识**使用星标图标fas fa-star
- **条件生成**:只有存在根路径书签时才会创建该分类
- **自动映射**根路径书签同样支持基于URL的自动图标映射功能
4. **图标分配**
- 根据URL自动匹配合适的 Font Awesome 图标
- 为每个链接和分类分配图标
- 当 `icons.mode: favicon` 时,页面通常会优先显示站点 favicon配置里的 `icon` 主要用于回退显示或在 `icons.mode: manual` 时使用(详见 `config/README.md`
5. **配置生成**
- 创建符合 MeNav 配置格式的 YAML 文件
- 按层级组织分类和链接
- 应用自动生成的元数据
将书签放入此目录后,您可以立即利用 MeNav 的书签处理功能,快速将书签转化为个性化导航站点。