Back to skills
SKILL.md
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
Works with
Security analysis
96/100- Installs packages at runtime which could introduce malicious dependencies
Pro scans all 7 files and shows the line behind each finding
npx -y skills add wangjs-jacky/jacky-skills --skill chrome-ext-ai-script --agent claude-codeAre you the author of Chrome Ext Ai Script?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/wangjs-jacky-chrome-ext-ai-script)---
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.md
- references/ai-provider-registry.md
- references/architecture-decisions.md
- references/dom-snapshot.md
- references/streaming-chat.md
- references/tech-stack-setup.md
- references/world-main-injection.md
Attribution
Comments
Loading commentsâŠ
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.