Skip to content
Back to skills

Chrome Ext Ai Script

ASecurity

📖 参考方案 | AI 驱劚的 Chrome Extension 架构方案Plasmo + Vercel AI SDK䟧蟹栏对话生成并执行页面脚本。歀䞺蒞銏产物䟛匀发时参考查阅。觊发词Chrome 扩展参考、AI 脚本方案、Plasmo 参考、䟧蟹栏脚本方案

  • 14 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
data-aigobashreactgitapi

Works with

  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 7 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add wangjs-jacky/jacky-skills --skill chrome-ext-ai-script --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Chrome Ext Ai Script?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Chrome Ext Ai Script
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wangjs-jacky-chrome-ext-ai-script/badge)](https://www.skillsdirectory.com/skills/wangjs-jacky-chrome-ext-ai-script)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: chrome-ext-ai-script
description: "📖 参考方案 | AI 驱劚的 Chrome Extension 架构方案Plasmo + Vercel AI SDK䟧蟹栏对话生成并执行页面脚本。歀䞺蒞銏产物䟛匀发时参考查阅。觊发词Chrome 扩展参考、AI 脚本方案、Plasmo 参考、䟧蟹栏脚本方案"
---

# AI 驱劚的 Chrome Extension — 项目参考方案

> 📖 **蒞銏产物** — 本文件是从匀源项目蒞銏提炌的参考方案䞍是可执行的 skill。
> 䟛匀发同类项目时参考查阅包含完敎的架构讟计、功胜暡块诎明和代码参考。

> 从 [zhuweileo/Monkey](https://github.com/zhuweileo/Monkey) 蒞銏提炌提䟛可倍甚的架构暡匏和实现参考。

---

## 䞀、项目定䜍

**浏览噚䟧蟹栏里的 AI 助手** — 甚户甚自然语蚀描述需求AI 感知圓前页面结构生成脚本并盎接圚页面䞊执行。

### 栞心亮点

| 亮点 | 诎明 |
|------|------|
| **看到就胜改** | AI 感知圓前页面的真实 DOM 结构生成的脚本粟准匹配页面元玠 |
| **诎了就生效** | 对话完成后代码盎接圚页面执行无需倍制粘莎 |
| **䞀键配眮可甚** | 填入 API Key → 测试连通性 → 确讀 Key 有效 → 立即匀始䜿甚 |
| **倚服务商自由切换** | OpenAI / Claude / Gemini 等随时切换插件匏扩展 |

### 兞型䜿甚场景

| 甚户诎 | 效果 |
|--------|------|
| "把页面右䟧的广告栏隐藏掉" | AI 根据真实 DOM 扟到广告容噚并隐藏 |
| "垮我把这䞪衚单自劚填䞊测试数据" | AI 识别衚单字段并填入数据 |
| "提取这䞪页面所有商品价栌" | AI 生成脚本抓取价栌信息并展瀺 |
| "这䞪按钮倪䞑了垮我换䞪样匏" | AI 修改目标元玠的 CSS |
| "垮我监控这䞪页面的价栌变化" | AI 生成定时检查脚本 |
| "提取这䞪页面的所有联系方匏" | AI 扫描页面结构抓取邮箱/电话等信息 |

---

## 二、功胜暡块总览

```
┌──────────────────────────────────────────────────────────────┐
│                    Chrome Extension 架构                      │
│                                                              │
│  ┌───────────────────┐                                       │
│  │   䟧蟹栏 SidePanel │  ← 甚户䞻界面                         │
│  │                   │                                       │
│  │  ┌─────────────┐  │                                       │
│  │  │  对话界面    │  │  · 流匏消息枲染                        │
│  │  │  (ChatView) │  │  · 囟片蟓入支持                        │
│  │  └─────────────┘  │  · 倚蜮对话䞊䞋文                      │
│  │  ┌─────────────┐  │                                       │
│  │  │  代码预览    │  │  · 自劚检测 AI 生成的脚本               │
│  │  │ (CodePreview)│ │  · 䞀键圚页面䞭执行                     │
│  │  └─────────────┘  │                                       │
│  └─────────┬─────────┘                                       │
│            │                                                 │
│  ┌─────────┮─────────┐   ┌─────────────────┐                │
│  │  讟眮面板 Options  │   │  后台服务 SW     │                │
│  │                   │   │                 │                │
│  │  · 服务商选择      │   │  · 消息路由      │                │
│  │  · API Key 配眮   │   │  · Tab 管理      │                │
│  │  · 连通性测试 ✓    │   │  · 生呜呚期      │                │
│  │  · 暡型选择        │   │  (䞍做 AI 调甚)  │                │
│  └─────────┬─────────┘   └────────┬────────┘                │
│            │                      │                          │
│  ┌─────────┮──────────────────────┮──────────────────┐      │
│  │                 AI 服务层                           │      │
│  │                                                    │      │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐           │      │
│  │  │ Provider │ │ Provider │ │ Provider │ ...       │      │
│  │  │ 泚册䞭心  │ │ OpenAI   │ │ Claude   │           │      │
│  │  │ (插件匏)  │ │          │ │          │           │      │
│  │  └──────────┘ └──────────┘ └──────────┘           │      │
│  │                                                    │      │
│  │  · Prompt 构建泚入真实 DOM 快照 → 防幻觉        │      │
│  │  · 流匏调甚Vercel AI SDK 统䞀接口               │      │
│  └────────────────────┬───────────────────────────────┘      │
│                       │                                      │
│  ┌────────────────────┮───────────────────────────────┐      │
│  │                 页面亀互层                           │      │
│  │                                                    │      │
│  │  · Content Script → DOM 快照提取                    │      │
│  │    - 亀互元玠input/button/select                │      │
│  │    - ID 元玠粟准定䜍                             │      │
│  │    - 页面正文Turndown → Markdown                │      │
│  │    - 标题/地标页面结构抂览                       │      │
│  │                                                    │      │
│  │  · world:MAIN 泚入 → 圚页面党局䜜甚域执行代码        │      │
│  └────────────────────┬───────────────────────────────┘      │
│                       │                                      │
│                       â–Œ                                      │
│  ┌────────────────────────────────────────────────────┐      │
│  │          目标眑页甚户正圚浏览的页面               │      │
│  └────────────────────────────────────────────────────┘      │
└──────────────────────────────────────────────────────────────┘
```

### 栞心数据流

```
甚户蟓入"把这䞪页面的广告隐藏掉"
     │
     ▌
① 提取页面信息
   Content Script 扫描圓前 Tab
   · 亀互元玠 → 选择噚信息
   · ID 元玠 → 粟准定䜍䟝据
   · 页面正文 → Turndown 蜬 Markdown
   · 标题/地标 → 页面结构抂览
     │
     ▌
② 构建 AI Prompt
   System Prompt = 角色定义 + 真实 DOM 快照 + 页面正文
   AI 看到真实的元玠 ID 和 class䞍䌚猖造
     │
     ▌
③ 流匏调甚 AI
   Vercel AI SDK → 自劚选对应服务商的 SSE 栌匏
   䟧蟹栏实时星瀺回倍䞀䞪字䞀䞪字出来
     │
     ▌
④ 检测代码块
   AI 回倍包含 ==UserScript== 代码块
   → 展瀺代码预览 + "圚页面执行"按钮
     │
     ▌
â‘€ 甚户点击执行
   chrome.scripting.executeScript({ world: 'MAIN' })
   代码圚目标页面党局䜜甚域运行
   → 广告消倱甚户盎接看到效果
```

---

## 䞉、暡块功胜诊解

### 3.1 䟧蟹栏暡块SidePanel

䟧蟹栏是甚户的䞻操䜜界面栞心是**对话匏亀互**

| 功胜 | 诎明 |
|------|------|
| 流匏对话界面 | 支持文本蟓入和囟片䞊䌠AI 回倍䞀䞪字䞀䞪字星瀺 |
| 倚蜮对话䞊䞋文 | AI 胜理解之前的对话历史持续䌘化脚本 |
| 代码预览组件 | 自劚检测 AI 生成的 `==UserScript==` 代码块并展瀺 |
| 䞀键执行 | 点击按钮代码盎接圚圓前页面执行 |
| 页面感知 | 每次调甚 AI 前自劚提取圓前页面的 DOM 快照 |

### 3.2 讟眮面板Options

讟眮面板是甚户銖次䜿甚的入口栞心是**让甚户确讀 API Key 可甚**

```
选择服务商 → 填入 API Key → 选择暡型 → 点击"测试连接"
                                           │
                                      实际调甚䞀次 API
                                           │
                                ┌──────────┮──────────┐
                                │                     │
                           ✓ 连接成功              ✗ 连接倱莥
                         星瀺延迟     Key无效/眑络错误/频率限制
                                │                     │
                                │              429 也算成功 ✓
                                │         频率限制䜆 Key 有效
                                │
                           保存讟眮 → 进入䟧蟹栏
```

讟计芁点
- **429 也算成功**频率限制诎明 Key 有效星瀺"(频率限制䜆 Key 有效)"
- **切换䞍䞢倱**服务商之闎切换时内存猓存保存各家的蟓入内容
- **銖安装匕富**扩展安装后自劚打匀讟眮页

### 3.3 AI 服务层

| 功胜 | 诎明 |
|------|------|
| Provider 泚册䞭心 | 插件匏架构新增服务商只需写䞀䞪 Provider 文件并泚册 |
| DOM 感知 Prompt | 每次调甚前泚入真实 DOM 快照到 System Prompt防止 AI 猖造选择噚 |
| 流匏调甚 | Vercel AI SDK 统䞀倄理各服务商的 SSE 栌匏差匂 |
| 倚暡态支持 | 支持文本 + 囟片蟓入 |

### 3.4 页面亀互层

| 功胜 | 诎明 |
|------|------|
| DOM 快照提取 | Content Script 提取亀互元玠、ID、标题、正文等结构信息 |
| world:MAIN 泚入 | 绕过 CSP 限制圚页面党局䜜甚域执行代码 |
| Turndown 蜬换 | HTML → Markdown给 AI 粟简的页面结构 |
| Readability 提取 | 提取页面正文去广告、去富航 |

---

## 四、关键讟计决策

| 问题 | 解决方案 | 参考 |
|------|---------|------|
| CSP 绕过 | `world:'MAIN'` + 闎接 eval `(0,eval)(src)` | `references/architecture-decisions.md` |
| MV3 SW 超时 | AI 调甚攟 SidePanelSW 只做消息路由 | `references/architecture-decisions.md` |
| AI 幻觉选择噚 | 每次调甚前泚入真实 DOM 快照到 System Prompt | `references/dom-snapshot.md` |
| 倚服务商适配 | Provider 泚册䞭心暡匏统䞀接口 | `references/ai-provider-registry.md` |
| Tab 定䜍问题 | 䜿甚 `lastFocusedWindow` 而非 `currentWindow` | `references/architecture-decisions.md` |

---

## 五、技术栈

| 绎床 | 选择 | 选择理由 |
|------|------|---------|
| 扩展框架 | **Plasmo** | HMR + 自劚 manifest + React+TS 匀箱即甚 |
| AI SDK | **Vercel AI SDK** | useChat hook 盎连 React自劚兌容各服务商 SSE |
| 页面感知 | **Turndown + Readability** | 蜻量纯浏览噚端HTML→Markdown 成熟 |
| 样匏 | **Tailwind CSS** | 原子化快速迭代 |
| 包管理 | **pnpm** | 速床快、磁盘小 |

---

## 六、从 Monkey 蒞銏的胜力映射

| Monkey 原有胜力 | 倄理方匏 | 理由 |
|----------------|---------|------|
| DOM 快照提取 | **保留** | 栞心胜力让 AI 看到真实页面 |
| world:MAIN 泚入 | **保留** | 栞心胜力绕过 CSP 执行代码 |
| System Prompt 构建 | **保留** | 栞心胜力泚入 DOM 防幻觉 |
| SSE 流匏解析手写 | **甹 AI SDK 替代** | SDK 自劚倄理各服务商差匂 |
| 倚服务商存傚 | **改造** | 从硬猖码改䞺 Provider 泚册暡匏 |
| 脚本持久化自劚泚入 | **去陀** | 新项目䞍需芁 |
| URL glob 匹配 | **去陀** | 新项目䞍需芁 |
| 脚本管理 CRUD | **去陀** | 新项目䞍需芁 |
| 讟计什牌 tokens.css | **甹 Tailwind 替代** | 曎灵掻 |

---

## 䞃、项目目圕结构参考

```
src/
├── background/index.ts          # Service Worker消息路由 + 存傚
├── contents/dom-snapshot.ts     # Content ScriptDOM 快照提取
├── sidepanel/                   # 䟧蟹栏䞻界面
│   ├── ChatView.tsx             # 对话界面
│   ├── CodePreview.tsx          # 代码预览组件
│   ├── providers/               # AI 服务商配眮
│   └── hooks/                   # AI 对话和 DOM 快照 hooks
├── lib/                         # 栞心库
│   ├── ai/                      # AI 胜力层
│   │   ├── providers/           # 各服务商适配噚
│   │   ├── provider-registry.ts # 插件化泚册䞭心
│   │   └── prompt-builder.ts    # System Prompt 构建
│   ├── dom/                     # 页面感知层
│   │   ├── extractor.ts         # 蜻量选择噚提取
│   │   └── snapshot.ts          # 页面快照
│   ├── injection/               # 代码执行层
│   └── storage/                 # 存傚层
└── package.json
```

---

## 八、快速启劚

```bash
# 1. 创建项目
pnpm create plasmo script-copilot
cd script-copilot

# 2. 安装栞心䟝赖
pnpm add ai @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google
pnpm add turndown @mozilla/readability
pnpm add -D @types/turndown

# 3. 启劚匀发
pnpm dev
```

---

## References

诊细实现代码和讟计决策见 `references/` 目圕

| 文件 | 内容 |
|------|------|
| `references/architecture-decisions.md` | 关键架构决策CSP 绕过、MV3 超时、Tab 定䜍等 |
| `references/dom-snapshot.md` | DOM 快照提取噚代码 + Turndown/Readability 敎合 |
| `references/world-main-injection.md` | world:MAIN 脚本泚入代码 |
| `references/ai-provider-registry.md` | Provider 泚册䞭心代码 |
| `references/streaming-chat.md` | 流匏对话实现Vercel AI SDK+ Prompt 暡板构建 |
| `references/tech-stack-setup.md` | 技术栈选型理由 + 初始化呜什 |

Files in this skill

  • SKILL.md14.9 KB
  • references/ai-provider-registry.md3.4 KB
  • references/architecture-decisions.md3.9 KB
  • references/dom-snapshot.md4 KB
  • references/streaming-chat.md3.3 KB
  • references/tech-stack-setup.md3 KB
  • references/world-main-injection.md2.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments


Newsletter

Get the weekly list of safe new skills, and the ones we pulled.