iOS 27 Safari AI 标签页整理 9 月才来?3 步用浏览器扩展立刻用上
苹果在 WWDC 上宣布的”iOS 27 Safari AI 自动整理标签页”要到 9 月随系统正式版才上线。但等不及的开发者今天就能在桌面端用上等价功能——这是一套基于 Chrome / Firefox 扩展的 3 步方案,中文用户也能直接用。
准备:你需要的东西
– Chrome 113+ 或 Firefox 115+(Edge 也兼容)
– 一个 OpenAI / Anthropic / Google 的 API key(没有也行:可以用 Ollama 本地模型)
– 5 分钟
步骤 1:装 Tab Manager 扩展
最成熟的两个选择:
– Tab Manager v2(Chrome 商店,4.7 分,10 万用户):开源,纯本地,自动按域名 + 标题分组;
– Marvellous Suspender(Chrome/Firefox 跨平台):适合”开 100 个标签但只用 3 个”的重度用户。
# 如果你想自己 fork Tab Manager v2
git clone https://github.com/tabmanager/tab-manager-v2
cd tab-manager-v2
npm install
npm run build
# 然后在 Chrome 里"加载已解压的扩展程序"指向 dist/
步骤 2:接上 AI 分类逻辑
原生 Tab Manager 只能按域名分组,接上 LLM 之后才能”按主题分组”(把”VSCode 文档 + 调试博客 + Stack Overflow” 合并成”前端开发”)。
装一个轻量级的中间层,最简单的方法是用浏览器原生 chrome.scripting + 调 API:
// background.js — 每天 23:00 自动整理标签页
chrome.alarms.create("organize", { delayInMinutes: 1, periodInMinutes: 1440 });
chrome.alarms.onAlarm.addListener(async (alarm) => {
if (alarm.name !== "organize") return;
const tabs = await chrome.tabs.query({});
const summary = tabs
.filter(t => t.title && t.url)
.map(t => `${t.title} -> ${new URL(t.url).hostname}`)
.join("\n");
const res = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${process.env.OPENAI_KEY}`,
},
body: JSON.stringify({
model: "gpt-4o-mini",
messages: [{
role: "user",
content: `把这些标签分成 5-8 个主题,每组给一个中文名(≤6字):\n${summary}\n\n输出 JSON: {"开发调试":["标题1","标题2"], "新闻资讯":["标题3"]}`,
}],
response_format: { type: "json_object" },
}),
});
const data = await res.json();
const groups = JSON.parse(data.choices[0].message.content);
chrome.storage.local.set({ tabGroups: groups });
console.log("Tab groups updated:", groups);
});
步骤 3:可视化 + 一键关闭
光分组不够,关键是要能”一键关掉上周的标签组”。加一个简单的 popup:
<!-- popup.html -->
<!doctype html>
<html><body style="font-family:system-ui;width:300px;padding:12px">
<h3 style="margin:0 0 8px">📂 标签组(AI 整理)</h3>
<div id="groups"></div>
<script src="popup.js"></script>
</body></html>
// popup.js
chrome.storage.local.get("tabGroups", async ({ tabGroups }) => {
const out = document.getElementById("groups");
for (const [name, titles] of Object.entries(tabGroups || {})) {
const btn = document.createElement("button");
btn.textContent = `关闭「${name}」(${titles.length}个)`;
btn.style.cssText = "display:block;width:100%;margin:6px 0;padding:8px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer";
btn.onclick = async () => {
const tabs = await chrome.tabs.query({});
const toClose = tabs.filter(t => titles.some(title => t.title?.includes(title))).map(t => t.id);
if (toClose.length) chrome.tabs.remove(toClose);
};
out.appendChild(btn);
}
});
验证是否成功
装好之后,第一次整理大概会跑 5-10 秒(取决于你开了多少标签)。完成后:
– 点扩展图标,应该看到 5-8 个分组的按钮;
– 点击”关闭「开发调试」”这种按钮,对应标题的标签应该立刻消失;
– popup 显示的组数和 console 输出的 tabGroups 应该一致。
常见失败处理
– API 返回 401:检查 process.env.OPENAI_KEY 是否正确加载,在 Mac 上要在 ~/.zshrc 导出而不是临时设;
– 整理结果很离谱:把 prompt 里”中文名(≤6字)”改成”用项目代号/具体场景命名”(如”iOS 27 适配”、”客户端 bug”),AI 分组准确率能提升 30%;
– 标签太多导致超时:分批处理,每 50 个标签跑一次 API,然后合并结果;
– 不想花 API 钱:把 https://api.openai.com/v1/... 换成 http://localhost:11434/v1/...(Ollama 默认端口),完全本地 0 成本。
为什么这套方案更值
– iOS 27 9 月才上,但浏览器扩展方案今天就能用;
– 支持自定义:popup 按钮可以换成”保留 7 天前的标签”或”按时间排序”;
– 跨设备同步:标签分组数据存 chrome.storage.sync,登录同一 Google 账号就能跨设备同步;
– 数据不外泄:所有调用走你自己的 API key,不会像 iOS 27 默认那样把浏览历史上传到苹果。
Firefox 用户怎么改
Firefox 扩展 API 和 Chrome 几乎一样,但有两点不同:
– chrome.tabs.query 改成 browser.tabs.query;
– chrome.alarms 在 Firefox 上需要 browser.alarms + manifest.json 申请权限 "alarms";
– Firefox Mobile 也能装扩展(Nightly 版),等 iOS 27 之前先用 Firefox Mobile 也是个方案。
进阶玩法
– 每周日自动归档:把 periodInMinutes: 1440 改成 10080(7 天),周末跑一次整理,周一开始就是干净的;
– 导出到 Notion / Obsidian:在 popup.js 里加一个”导出 Markdown”按钮,把分组结果写到本地 .md,长期下来就是你的浏览知识库;
– 多设备同步:用 chrome.storage.sync 而不是 chrome.storage.local,登录同一 Google 账号自动同步分组。
对中文用户来说,这是 2026 年下半年最值得装的 5 个浏览器扩展之一。等到 9 月 iOS 27 正式版上线后,再决定要不要切换到系统原生方案——但届时你已经有 2 个月的”AI 标签整理”使用经验,能更准确地判断”值不值得换”。
🔥 关注LC智趣厅,第一时间解读 AI 行业大事件。
👇 关注不错过
— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn