有没有在「玩」AI编程的同学?是不是也开发了不少酷炫的小工具,但最后都只是躺在自己的电脑里,处于自嗨的「玩」的阶段?
说实话,开发的东西如果只在本地跑,那永远只是个玩具。真正的落地闭环,是把它发布出去,让全世界的用户都能用上。 对我们这些开发者来说,最直接的路径就是:开发浏览器插件,上架谷歌商店。
上周我开发了一个能帮助出海品牌个人更好利用Reddit做营销的插件:
今天,我们就以它为例,一步一步地把开发、支付、打包、审核这些拦路虎全干趴下,让你的创意真正在全球上亿用户面前落地!🚀
我整个流程拆解成了五个关键环节:
- 开发 & 调试:这是基本功,把插件的功能在本地实现并跑通。
- 注册 & 支付:解决"入场券"问题,这是第一个门槛。
- 打包 & 上传:把你的代码变成官方认可的"商品"。
- 信息 & 隐私填写:这是"面子工程",也是审核的重灾区,决定了你的插件能不能见人。
- 提交审核:直面最终Boss,搞定它就能成功落地。

下面,我们就按照这个SOP,一步一步往前推。
Step 1: 开发基石 - 把项目结构整明白!
典型的插件目录结构如下,每个部分各司其职,共同构成了插件的完整功能:
bash
- Chrome 插件目录/
- manifest.json # 插件的配置文件,核心中的核心
- background.js # 后台服务脚本 (Service Worker in V3)
- content_script.js # 注入到网页的脚本
- popup.html # 点击图标后的弹出界面
- popup.js # 弹出界面的逻辑脚本
- options.html # 插件的选项配置页面
- options.js # 选项页面的逻辑脚本
- icons/
- icon16.png # 16x16 像素图标
- icon48.png # 48x48 像素图标
- icon128.png # 128x128 像素图标
- styles/ # 样式文件目录
- assets/ # 其他静态资源目录
白了就是一堆HTML、CSS、JS文件,但核心是 manifest.json
配置文件。 这玩意儿就是插件的"身份证",是整个插件的入口和配置文件。它以 JSON 格式声明了插件的名称、版本、描述、所需权限、图标及各个功能模块的入口文件。必须遵循 Chrome 的规范,当前主流版本为 Manifest V3。
大白话就是告诉Chrome浏览器你的插件叫啥、有啥能耐、需要啥权限。
一个标准的V3版本manifest.json
长这样,关键信息我都加了注释,直接抄作业就行:
json
{
"manifest_version": 3,
"name": "AiReddit助手", // 你的插件大名
"version": "1.0", // 版本号,每次更新都要改
"description": "一款简洁实用的内容提取工具...", // 一句话介绍
"permissions": [ // 需要向浏览器申请的权限列表
"storage",
"activeTab",
"scripting",
"downloads"
],
"host_permissions": ["<all_urls>"], // 允许在哪些网站上运行
"action": {
"default_popup": "popup.html", // 点击图标弹出的窗口
"default_icon": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
},
"background": {
"service_worker": "background.js" // 后台运行的脚本
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content_script.js"] // 注入到网页里的脚本
}
]
}
-
content_script.js
: 此脚本被注入到指定的网页中,拥有访问和操作页面 DOM 的能力。它是实现页面内容抓取、样式修改等功能的核心。 -
background.js
(在 V3 中为service_worker
): 作为插件的事件处理中心,在后台持续运行,独立于任何特定页面。它负责监听浏览器事件(如标签页更新、用户点击图标)、处理耗时任务和发起跨域网络请求,因为内容脚本出于安全限制,不允许直接发起网络请求。 -
popup.html
与options.html
: 分别定义了用户点击插件图标时出现的弹出窗口和通过右键菜单访问的设置页面的用户界面。
OK,技术部分了解到这里就可以了,更复杂的东西,说实话,AI编程的时代都不要先去学习,让AI来解决即可。
另外,我还找到一个开发谷歌浏览器的Cursor规则,可以直接设置让Cursor开发插件不容易犯错。:
cursor.directory/chrome-exte...
diff
You are an expert Chrome extension developer, proficient in JavaScript/TypeScript, browser extension APIs, and web development.
Code Style and Structure
- Write clear, modular TypeScript code with proper type definitions
- Follow functional programming patterns; avoid classes
- Use descriptive variable names (e.g., isLoading, hasPermission)
- Structure files logically: popup, background, content scripts, utils
- Implement proper error handling and logging
- Document code with JSDoc comments
Architecture and Best Practices
- Strictly follow Manifest V3 specifications
- Divide responsibilities between background, content scripts and popup
- Configure permissions following the principle of least privilege
- Use modern build tools (webpack/vite) for development
- Implement proper version control and change management
Chrome API Usage
- Use chrome.* APIs correctly (storage, tabs, runtime, etc.)
- Handle asynchronous operations with Promises
- Use Service Worker for background scripts (MV3 requirement)
- Implement chrome.alarms for scheduled tasks
- Use chrome.action API for browser actions
- Handle offline functionality gracefully
Security and Privacy
- Implement Content Security Policy (CSP)
- Handle user data securely
- Prevent XSS and injection attacks
- Use secure messaging between components
- Handle cross-origin requests safely
- Implement secure data encryption
- Follow web_accessible_resources best practices
Performance and Optimization
- Minimize resource usage and avoid memory leaks
- Optimize background script performance
- Implement proper caching mechanisms
- Handle asynchronous operations efficiently
- Monitor and optimize CPU/memory usage
UI and User Experience
- Follow Material Design guidelines
- Implement responsive popup windows
- Provide clear user feedback
- Support keyboard navigation
- Ensure proper loading states
- Add appropriate animations
Internationalization
- Use chrome.i18n API for translations
- Follow _locales structure
- Support RTL languages
- Handle regional formats
Accessibility
- Implement ARIA labels
- Ensure sufficient color contrast
- Support screen readers
- Add keyboard shortcuts
Testing and Debugging
- Use Chrome DevTools effectively
- Write unit and integration tests
- Test cross-browser compatibility
- Monitor performance metrics
- Handle error scenarios
Publishing and Maintenance
- Prepare store listings and screenshots
- Write clear privacy policies
- Implement update mechanisms
- Handle user feedback
- Maintain documentation
Follow Official Documentation
- Refer to Chrome Extension documentation
- Stay updated with Manifest V3 changes
- Follow Chrome Web Store guidelines
- Monitor Chrome platform updates
Output Expectations
- Provide clear, working code examples
- Include necessary error handling
- Follow security best practices
- Ensure cross-browser compatibility
- Write maintainable and scalable code
Step 2: 调试神技 - 告别瞎猜式编程!
代码写完总有Bug,怎么调?不同脚本调试的地方不一样,别找错了。
结合前面的结构来看:
- Content Script : 由于其直接在网页上执行,调试方式与普通网页的 JavaScript 完全相同。在目标网页上按
F12
打开开发者工具,在 "Sources" 面板中即可找到并调试你的 content script。

- Popup 和 Options 页面 : 对于
popup.html
,需将插件固定到工具栏,然后在其图标上右键,选择"审查弹出内容"。这同样会打开一个独立的开发者工具窗口。对于options.html
,在插件上右键选择"选项"进入页面后,可直接在该页面上按F12
进行调试。

- Background Script : 这家伙藏得最深。地址栏输入
chrome://extensions/
,打开"开发者模式",找到你的插件,点下面的"Service Worker"链接,独立的调试窗口就出来了。

Step 3: 注册拦路虎 - 搞定5美刀支付! ⚠️
想上架,先得花5美刀注册个开发者账号。但Google支付不支持国内方式,这是第一个大坑。
-
入口 :
https://chrome.google.com/webstore/devconsole/register
-
问题: 需要Visa或Mastercard等海外信用卡。
-
解决方案: 别慌,可以找个靠谱的虚拟信用卡平台(比如WildCard),用支付宝或微信充值后就能拿到一张虚拟卡来支付。问题轻松解决!
支付方式
这里可以自己搞一个虚拟卡,这里推荐用野卡,很方便的海外产品订阅服务
但开卡要钱、充值要手续费,大家可以自己甄选
我的邀请码:yeka.ai/i/BGGG

进入后如上图,找到Google
产品
就会看到订阅所需要的信用卡信息,先点充值

充5美金的费用:

注册谷歌开发者
准备好银行卡后,打开https://chrome.google.com/webstore/devconsole/register

按下图,把前面野卡给的信用卡信息填进去即可。
付钱是没什么难度的。
此时正式进入后台。

现在Account
页面把插件作者名字和联系邮箱设置一下。

Step 4: 打包上传 - 临门一脚别踢歪!
根据前面Step2的方式调试完,确保运行无误后,把整个项目文件夹打包成一个.zip
文件。
这里我是把
chrome-mv3-prod
单独改名了

切换到Items
页面,把zip包扔进去。

莫名出现报错需要让我打开双重认证。

问题不大。

Step 5: 商店插件信息
这里就是对插件的基本信息进行填写,这相当于给你的插件做个详情页。

注意事项:
- 名称描述: 照实写,别夸大。
- 图标 : 128x128像素,千万别用透明背景 ,否则直接给你打回来,寄了。

如果像我一样用plasmo开发的话,在制定logo的时候,build打包好后会帮我生成多个图标,直接找到128尺寸的来用即可。

如果没有logo或者要切图的可以用这个网站:https://hotpot.ai/icon-resizer
- 截图: 至少一张1280x800或640x400的截图,把你的插件最酷炫的功能展示出来。

有信息不会填的话直接让AI帮忙生成就好了。
Step 6: 终极Boss战 - 硬刚隐私与权限审核!
欢迎来到最麻烦的环节。
这步是90%的人被拒的地方,打起精神!在"隐私权"标签页,你得为你申请的每一个权限写一个"正当理由"。
审核官最看重的是 "单一用途原则" ,你的插件功能要专一,别啥都想要。申请权限要遵循最小化原则 。
不知道怎么写?别怕,饼干哥哥把标准答案都给你准备好了,照着这个思路来:
bash
# 需请求storage权限的理由:
本插件使用storage权限来保存用户的个性化配置(例如主题颜色、默认选项等),以便在用户下次使用时提供连贯的个性化体验,我们不会存储任何用户个人身份信息。
# 需请求scripting权限的理由:
本插件的核心功能是在用户点击插件图标后,向当前活动页面注入脚本以提取指定的网页内容。scripting权限是实现此核心功能的必要条件,仅在用户主动触发时执行。
核心就是:我申请这个权限是为了实现我的核心功能,我只在必要的时候用,而且我保证不乱搞用户数据。把这个态度摆正,审核官就好说话。😊
如果想更丰富一些,写是不可能自己写的,复制下来,贴给Cursor写

参考提示词:
vbnet
我要把当前项目的浏览器插件上架到谷歌商店,现在填写Privacy的相关信息,请你根据我项目的情况,按以下要求,给我要填写的内容。确保项目可以通过谷歌的审核:
```
Privacy
To facilitate the compliance of your extension with the Chrome Web Store Developer Program Policies, you are required to provide the information listed below. The information provided in this form will be shared with the Chrome Web Store team. Please ensure that the information provided is accurate, as it will improve the review time of your extension and decrease the risk of this version being rejected.
Single purpose
An extension must have a single purpose that is narrow and easy-to-understand. Learn more....
```
给的指令很清晰了。

踩坑:有网友因为隐私政策链接随便填了个博客主页,结果被拒了。后来老老实实写了个简单的隐私声明页面才通过。所以,这里的每一个细节都不能马虎。

csharp
根据你的建议 帮我把build里的@/AIReddit v1.0 by 公众号:饼干哥哥AGI 创建一个github隐私政策页面,用于解决Privacy Policy URL的问题。
部署到了Github Pages
上后,把网址填到谷歌的隐私政策地址里。

填完按顺序点Distribution
,正常不用咋填。

此时,可以点击"提请审核",然后就是耐心等待了。

一般首次审核需要2-4天。当你收到那封"Your item has been published"的邮件时,恭喜你,成功上岸!

图自网络
在AI唾手可得的时代,单纯会写代码、会用AI,已经远远不够了。能够将你的创意产品化、商品化,并成功推向市场,这或许才是我们每个开发者和AI玩家,都应该建立的、真正的护城河。
今天我们上架的是一个Reddit助手,但这个方法论完全可以复用在你开发的任何一个Chrome插件上。你的下一个"爆款"插件,准备好了吗?
本文由稀土掘金作者【饼干哥哥】,微信公众号:【饼干哥哥AGI】,原创/授权 发布于稀土掘金,未经许可,禁止转载。