我用 Gemini CLI 将 600+ 浏览器书签批量导入 Obsidian

Author: Gemini & 我

起因

最近都在看MCP相关的教程, 看到Gemini CLI 的技术文档时,我突然灵光一闪:为什么不试试用 AI 来帮我整理那堆放了十年, 早已死掉发臭了的浏览器书签堆呢?

我用Edge 浏览器时, 看到有趣的都会点一下收藏, 但从来没有回顾. 书签的数量早已不可计数.
我的目标很明确, 不直接在浏览器上操作, 我将所有的书签放到Obsidian里面来管理.
所以我需要AI帮我做的事情有:

  • 将每一个书签转换成一个独立的 .md 文件。
  • 利用 Gemini 自动为书签打上分类 (tags)。
    后续, 我会这些 .md 文件存入我的 Obsidian 仓库,使用 Dataview 或其他插件进行统一管理。

具体步骤

Step 01: 拿到浏览器书签数据

浏览器的书签并不是明文存储的,而是一个 JSON 格式的文件。
首先,我们需要定义书签文件的路径(以 macOS 上的 Microsoft Edge 为例):
Bash

# 在你的 .zshrc 或 .bash_profile 中定义,或者直接在终端中执行
BOOKMARKS_FILE="$HOME/Library/Application Support/Microsoft Edge/Default/Bookmarks"

接下来,我们需要从这个庞大的 JSON 文件中提取出我们需要的“名称 (name)”和“链接 (url)”。这里我使用 jq,它是一个轻量级的命令行 JSON 处理器。
(根据你的上下文,你使用的是 Mac,所以) 如果你没有安装 jq,可以使用 Homebrew 安装:
Bash

brew install jq

然后,运行以下命令将数据提取并存为 data.md
Bash

cat "$BOOKMARKS_FILE" | jq -r '.. | objects | select(.type == "url") | "\(.name) - \(.url)"' >> data.md

这一步完成后,data.md 文件里就会包含所有书签的列表,格式为 书签名称 - 链接

Step 02: AI 指令 (Prompt)

prompt.txt

[任务]
你是一个整理助手。这里有一个浏览器书签列表,格式为 "名称 - 链接"。
请你帮我为列表中的 *每一个* 书签完成两件事:
1.  根据 [分类] 列表,为书签分配一个最合适的分类。
2.  按照 [md模板] 的格式,生成对应的 Markdown 内容。
[分类]
- 资源网站: 网站提供下载资源
- 在线视频: 播放指定视频
- 博客
- 工具: 提供在线工具的网站. 例如removeBG.
- 成人内容
[/分类]
[md模板]
---
tags:
  - {{分类名}}
platform: Browser
url: {{书签URL}}
---
# {{书签名称}}
(请在这里为该书签自动生成一句简短的中文介绍)
[/md模板]
[输出要求]
- 你必须处理 "data.md" 中的 *所有* 书签。
- 每一个书签生成的 md 内容之间,必须使用 "---[SEPARATOR]---" 这一行作为唯一的分隔符。
- "tags" 必须严格从 [分类] 列表中选取。
- "url" 必须是书签的原始URL。
- "书签名称" 必须是书签的原始名称。

Step 03: 执行 Gemini CLI

准备好 prompt.txtdata.md 后,执行以下命令,并将所有输出保存到一个文件中:
Bash

@prompt.txt @data.md 开干吧.

问题: 关于“输出限制”的提示:

书签太多,一次性处理还是可能会报错。处理方式很简单, 就是告诉AI继续干活.
意外的好用 😄😄😄

总结与展望

整个流程(包括调试 Prompt)花费了 60 分钟左右, 还好使用的是额度更多的"gemini-2.5-flash"。
不试不知道,我浏览器中竟然有 600+ 的书签"垃圾堆"。未来可以研究一下如何只处理新增的书签,或者干脆写一个真正的 Obsidian 插件来实现浏览器书签的双向同步。