[
](https://developer.chrome.com/docs/extensio## 🛠️ 技术栈
| 技术 | 用途 | 版本 |
|---|---|---|
| Plasmo | 现代浏览器扩展框架 | 0.90.5 |
| TypeScript | 类型安全开发 | 5.3.3 |
| React | UI 组件 | 18.2.0 |
| Tailwind CSS | 样式框架 | 3.4.17 |
| OpenAI SDK | LLM 集成 | 5.16.0 |
| Dexie.js | 收藏功能的 IndexedDB 封装 | 4.0.8 |
| Stripe | 支付处理 | 9.8.0 |
| Chrome Identity API | OAuth2 认证 | 内置 |
—TypeScript](https://www.typescriptlang.org/)
🚀 Selectly 是一款 AI 驱动的浏览器扩展,通过智能操作增强文本选择功能。使用大语言模型(LLM)的上下文感知文本处理能力,改变你的浏览体验。
| English | 中文文档 |
利用大语言模型的强大能力即时处理选中的文本:
触手可及的快速实用操作:
git clone https://github.com/1850298154/selectly.git
cd selectly
pnpm install
pnpm dev
这将启动支持热重载的开发服务器。
chrome://extensions/build/chrome-mv3-dev 目录在任意网页选择文本,操作按钮会自动出现!
你可以创建自定义的 AI 驱动功能:
功能键名: code_review
提示词: 请审查以下代码并提供改进建议:\n\n{text}
模型: default(或指定模型)
自动执行: false
功能键名: simplify
提示词: 简化以下文本,使其更易于理解:\n\n{text}
功能键名: brainstorm
提示词: 生成 5 个与以下内容相关的创意想法:\n\n{text}
你可以配置功能以:
selectly/
├── core/ # 核心业务逻辑
│ ├── config/
│ │ └── llm-config.ts # 配置管理
│ ├── services/
│ │ ├── llm-service.ts # LLM 服务(提供商无关)
│ │ ├── action-service.ts # 操作处理
│ │ ├── collect-service.ts # 收藏管理
│ │ ├── collect-sync-service.ts # 收藏云同步
│ │ ├── collect-sync-api.ts # 同步 API 客户端
│ │ ├── collect-sync-types.ts # 同步类型定义
│ │ ├── subscription-service-v2.ts # 订阅管理
│ │ ├── cloud-sync-subscription-service.ts # 云订阅同步
│ │ ├── model-service.ts # LLM 模型解析
│ │ ├── image-generator-service.ts # 分享图片生成
│ │ └── notification-service.ts # 用户通知
│ ├── storage/
│ │ ├── secure-storage.ts # 加密存储封装
│ │ ├── collect-db.ts # 收藏的 IndexedDB
│ │ ├── dictionary-db.ts # 词典 IndexedDB
│ │ ├── sync-queue-db.ts # 同步队列数据库
│ │ ├── crypto.ts # 加密工具
│ │ ├── migration.ts # 存储迁移
│ │ └── security-test.ts # 安全测试
│ ├── auth/
│ │ ├── auth-service.ts # OAuth2 认证
│ │ └── auth-background-bridge.ts # 认证后台桥接
│ ├── i18n/ # 国际化
│ │ ├── index.ts # i18n 入口
│ │ ├── types.ts # i18n 类型定义
│ │ ├── hooks/ # i18n React hooks
│ │ └── locales/ # 翻译文件
│ ├── hooks/
│ │ └── useSubscription.ts # 订阅 React hook
│ ├── content/
│ │ ├── Selectly.tsx # 主内容脚本 UI
│ │ └── content-styles.ts # 内容脚本样式
│ ├── oauth/ # OAuth 工具
│ ├── premium-api-v2.ts # 高级 API 客户端
│ └── user-info.tsx # 用户信息组件
├── components/
│ ├── content/
│ │ ├── ActionButtons.tsx # 浮动操作按钮
│ │ ├── StreamingResult.tsx # 流式 LLM 响应显示
│ │ ├── ShareImageRenderer.tsx # 分享图片生成
│ │ ├── SharePreview.tsx # 分享预览组件
│ │ └── ErrorBoundary.tsx # 错误处理
│ ├── options/
│ │ ├── GeneralPage.tsx # 通用设置页面
│ │ ├── LLMPage.tsx # LLM 配置页面
│ │ ├── FunctionsPage.tsx # 功能配置页面
│ │ ├── FunctionCard.tsx # 功能配置卡片
│ │ ├── SubscriptionPage.tsx # 订阅页面
│ │ ├── SubscriptionManagerV3.tsx # 订阅管理器 UI
│ │ ├── SubscriptionStatus.tsx # 订阅状态显示
│ │ ├── CollectionsPage.tsx # 收藏管理页面
│ │ ├── DictionaryPage.tsx # 词典页面
│ │ ├── OptionsHeader.tsx # 选项页面头部
│ │ ├── PopupHeader.tsx # 弹窗头部
│ │ ├── Sidebar.tsx # 选项侧边栏
│ │ ├── TabsBar.tsx # 设置标签页
│ │ ├── Drawer.tsx # 抽屉组件
│ │ ├── constants.ts # UI 常量
│ │ └── forms/ # 表单组件
│ ├── shared/
│ │ └── PremiumCrown.tsx # 高级标识组件
│ └── ui/ # 可复用 UI 组件 (shadcn/ui)
│ ├── badge.tsx
│ ├── button.tsx
│ ├── input.tsx
│ └── separator.tsx
├── lib/
│ └── utils.ts # 工具函数
├── utils/
│ ├── icon-utils.ts # 图标工具
│ └── url-utils.ts # URL 工具
├── locales/ # 旧版本地化文件
├── scripts/
│ └── generate-keys.js # 密钥生成工具
├── background.ts # Service Worker(事件处理)
├── content.tsx # 内容脚本入口
├── popup.tsx # 扩展弹窗
├── options.tsx # 选项页面
├── style.css # 全局样式
├── tailwind.config.js # Tailwind 配置
├── postcss.config.js # PostCSS 配置
├── tsconfig.json # TypeScript 配置
└── package.json # 项目依赖
遵循单一职责和模块化设计:
# 开发模式,支持热重载
pnpm dev
# 生产构建
pnpm build
# 打包扩展(创建 zip)
pnpm package
# 生成 OAuth 密钥
pnpm generate-keys
# 格式化所有文件
pnpm format
# 检查格式化状态
pnpm format:check
欢迎贡献!以下是你可以提供帮助的方式:
使用以下优秀的开源项目构建:
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
如果你遇到问题或有疑问:
如果这个项目对你有帮助,请考虑给它一个 ⭐ star!
用 ❤️ 为开源社区打造