From b5d7bf03e171384b28dadc898396f850811d55eb Mon Sep 17 00:00:00 2001 From: Zain Date: Wed, 17 Dec 2025 11:03:25 +0800 Subject: [PATCH] =?UTF-8?q?docs(store):=20=E6=B7=BB=E5=8A=A0Edge=E5=95=86?= =?UTF-8?q?=E5=BA=97=E6=90=9C=E7=B4=A2=E5=85=B3=E9=94=AE=E8=AF=8D=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E5=92=8C=E8=A1=A5=E5=85=85=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在edge-addons-listing.md中添加详细的搜索关键词策略 - 创建edge-supplemental-info.md作为Edge商店提交指南 - 更新README.md文档结构和路径说明 - 调整CI工作流触发条件,移除tag触发 --- .github/workflows/complete-tests.yml | 6 +- CLAUDE.md | 395 +++++++++++++++ docs/store-assets/README.md | 59 ++- docs/store-assets/edge-addons-listing.md | 26 + docs/store-assets/edge-supplemental-info.md | 503 ++++++++++++++++++++ 5 files changed, 974 insertions(+), 15 deletions(-) create mode 100644 CLAUDE.md create mode 100644 docs/store-assets/edge-supplemental-info.md diff --git a/.github/workflows/complete-tests.yml b/.github/workflows/complete-tests.yml index 8f294f9..45bba64 100644 --- a/.github/workflows/complete-tests.yml +++ b/.github/workflows/complete-tests.yml @@ -24,10 +24,8 @@ on: schedule: - cron: '0 0 * * 1' - # Release 标签触发 - push: - tags: - - 'v*.*.*' + # 注意:tag 推送时只触发 release.yml + # 本工作流专用于定时运行和手动触发 # 环境变量 env: diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..711b107 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,395 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +Cloud Drive Renamer (云盘批量重命名工具) - A Chrome/Edge extension for batch renaming files on cloud storage platforms. Currently supports Quark Drive (夸克网盘) with architecture ready for Aliyun Drive and Baidu Drive expansion. + +**Tech Stack:** +- TypeScript 5.9+ with strict mode +- Vite 5.4+ for building (with @crxjs/vite-plugin for Chrome extension support) +- Lit 3.3+ for Web Components UI +- Vitest for unit/integration tests, Playwright for E2E tests +- Chrome Extension Manifest V3 + +## Common Development Commands + +### Development Workflow +```bash +# Start development server with hot reload +npm run dev + +# Run tests in watch mode during development +npm test + +# Before committing: full validation (lint + typecheck + tests) +npm run validate + +# Production build with complete quality gates +npm run build +``` + +### Testing +```bash +# Unit tests with coverage +npm run test:coverage + +# E2E tests +npm run test:e2e + +# E2E tests with UI +npm run test:e2e:ui + +# Run single test file +npx vitest run tests/unit/executor.test.ts + +# Run test with specific pattern +npx vitest run -t "should handle batch execution" +``` + +### Code Quality +```bash +# Lint check +npm run lint + +# Auto-fix lint issues +npm run lint:fix + +# TypeScript type checking (no emit) +npm run typecheck +``` + +### CI/CD +```bash +# Full CI pipeline (used in GitHub Actions) +npm run ci + +# Verify release package integrity +npm run verify:release +``` + +### Utilities +```bash +# Sync version between package.json and manifest.json +npm run sync:version + +# Resize images for store assets (parameterized) +npm run resize screenshot # Store screenshots (1280x800) +npm run resize logo # Logo (300x300) +npm run resize small-promo # Small promo tile (440x280) +npm run resize large-promo # Large promo tile (1400x560) +``` + +## Architecture Overview + +### Core Design Patterns + +**Adapter Pattern for Platform Support:** +- `src/adapters/base/adapter.interface.ts` - Base adapter interface +- `src/adapters/quark/` - Quark Drive implementation +- `src/adapters/aliyun/` and `src/adapters/baidu/` - Planned for future + +**Strategy Pattern for Rename Rules:** +- `src/rules/base-rule.ts` - Base rule class +- `src/rules/rule-factory.ts` - Rule factory for creating rule instances +- 5 concrete rule implementations: replace, prefix, suffix, numbering, sanitize + +**Executor Pattern for Batch Processing:** +- `src/core/executor.ts` - BatchExecutor with rate limiting (800ms interval) +- `src/core/retry.ts` - Exponential backoff retry mechanism +- `src/core/crash-recovery.ts` - Crash recovery with idempotency +- `src/core/conflict-detector.ts` - Duplicate name detection + +### Key Architectural Components + +**Content Script Architecture:** +``` +Content Script (ISOLATED world) +├── UI Components (Lit Web Components) +│ ├── rename-dialog.ts - Main dialog +│ ├── rename-preview.ts - Preview list +│ ├── progress-dialog.ts - Progress tracking +│ └── floating-button.ts - Trigger button +└── Platform Adapter Integration + +Page Script (MAIN world) - For API interception +└── src/adapters/quark/page-script.ts +``` + +**Message Communication:** +- Content Script ↔ Background Service Worker via `chrome.runtime.sendMessage` +- Content Script ↔ Page Script via `window.postMessage` (cross-world communication) +- See `src/types/message.ts` for message protocol definitions + +**Batch Execution Flow:** +1. Get selected files via platform adapter +2. Apply rename rules via RuleFactory +3. Preview changes with conflict detection +4. Execute batch rename with: + - 800ms request interval (rate limiting) + - Concurrent execution with staggered delays + - Progress tracking via event system + - Automatic retry with exponential backoff + - Crash recovery support + +## Critical Implementation Details + +### Chrome Extension Specifics + +**Manifest V3 Requirements:** +- Service Worker background script (not persistent) +- Separate content scripts for ISOLATED and MAIN worlds +- Web-accessible resources for iframe-based dialog +- Host permissions for target cloud platforms + +**Build Configuration:** +- Vite with @crxjs/vite-plugin automatically handles: + - Content script injection + - Icon copying + - Manifest processing +- Web Components polyfill loaded via `src/content/polyfills.ts` + +**Testing Chrome Extension Features:** +- Vitest config excludes `quark-adapter.test.ts` (requires Chrome extension mock environment) +- Playwright config uses special launch options: + ```javascript + launchOptions: { + args: [ + '--disable-extensions-except=./dist', + '--load-extension=./dist' + ] + } + ``` + +### Platform Adapter Implementation + +When adding a new platform adapter: + +1. **Implement `PlatformAdapter` interface:** + - `getSelectedFiles()` - Extract selected files from DOM + - `renameFile(fileId, newName)` - Call platform API + - `checkNameConflict(fileName, parentId)` - Validate uniqueness + - `getFileInfo(fileId)` - Fetch file metadata + +2. **Add content script entry in manifest.json:** + ```json + { + "matches": ["https://newplatform.com/*"], + "js": ["src/content/index.ts"], + "run_at": "document_idle" + } + ``` + +3. **Add host permissions:** + ```json + "host_permissions": ["https://newplatform.com/*"] + ``` + +### Rename Rule Implementation + +When adding a new rename rule: + +1. **Extend `BaseRule` class:** + ```typescript + export class NewRule extends BaseRule { + execute(fileName: string, index: number, total: number): string { + // Implementation + } + validate(config: any): boolean { + // Validation + } + } + ``` + +2. **Add to `RuleFactory.create()` switch statement** + +3. **Update `RuleType` union in `src/types/rule.ts`** + +4. **Create params interface** (e.g., `NewRuleParams`) + +## Testing Strategy + +### Test Structure +- `tests/unit/` - Unit tests for individual modules +- `tests/integration/` - Integration tests for workflows +- `tests/performance/` - Performance benchmarks (not run in CI) +- `tests/e2e/` - Playwright E2E tests + +### Testing Best Practices +- Mock Chrome APIs using `vi.mock('chrome', ...)` +- Use `vi.stubGlobal()` for global DOM APIs +- Integration tests focus on BatchExecutor workflows +- E2E tests validate actual extension behavior in browser + +### Coverage Requirements +- All new features must include unit tests +- Critical paths (executor, rules, adapters) require integration tests +- Coverage reports generated in `coverage/` directory + +## Build and Release Process + +### Version Management +- Version is single source of truth in `package.json` +- `npm run sync:version` syncs to `manifest.json` and `src/shared/version.ts` +- Automatically run before `dev` and `build` commands + +### Quality Gates in Build +The `npm run build` command enforces quality gates in this order: +1. ✅ Sync version +2. ✅ ESLint check +3. ✅ TypeScript type check +4. ✅ Unit tests with coverage +5. ✅ TypeScript compilation +6. ✅ Vite build + +**Important:** Do NOT skip quality checks. If build fails, fix the root cause. + +### CI/CD Workflows + +**`.github/workflows/ci.yml`:** +- Triggered on: PR to main, push to main +- Runs: `npm run ci` (validate + build) +- Verifies: dist artifacts exist and are valid + +**`.github/workflows/release.yml`:** +- Triggered on: Tag push (v*.*.*) +- Steps: build → test → package → GitHub Release +- Outputs: `cloud-drive-renamer-{version}.zip` + +**`.github/workflows/complete-tests.yml`:** +- Manual trigger workflow for comprehensive testing +- Includes E2E tests and performance benchmarks + +### Release Process +```bash +# 1. Update version in package.json +npm version patch|minor|major + +# 2. Build and verify +npm run build +npm run verify:release + +# 3. Create and push tag +git push origin main --tags +``` + +## Code Style and Conventions + +### Naming Conventions +- Classes: PascalCase (e.g., `RuleFactory`, `BatchExecutor`) +- Methods/functions: camelCase (e.g., `getSelectedFiles`) +- Constants: UPPER_SNAKE_CASE (e.g., `MAX_RETRY_COUNT`) +- Files: kebab-case (e.g., `rule-factory.ts`) + +### TypeScript Guidelines +- Strict mode enabled - all code must pass strict type checking +- Prefer `interface` over `type` for object shapes +- All public APIs must have explicit type annotations +- Use `Record` sparingly, prefer specific types +- Enable unused variables check (exception: prefix with `_`) + +### Import Aliases +- `@/` alias maps to `src/` +- Example: `import { RuleFactory } from '@/rules/rule-factory'` + +### ESLint Rules +- No `console.log` (use `console.warn` or `console.error` for production) +- No `any` type without explicit warning suppression +- Prefer `const` over `let`, never use `var` +- Unused parameters must be prefixed with `_` + +## Critical Error Patterns to Avoid + +### Chrome Extension Pitfalls +- **DO NOT** use synchronous storage APIs (use `chrome.storage.local.get/set`) +- **DO NOT** assume background script is persistent (Manifest V3) +- **DO NOT** use `eval()` or inline scripts (CSP restrictions) +- **DO NOT** forget to declare permissions in manifest.json + +### TypeScript/Build Issues +- **DO NOT** bypass quality checks with `build:only` (command removed intentionally) +- **DO NOT** use relative paths for type imports across distant directories +- **DO NOT** import test files in production code +- **DO NOT** forget to run `npm run sync:version` before manual version changes + +### Testing Issues +- **DO NOT** use real Chrome APIs in unit tests (always mock) +- **DO NOT** run E2E tests in parallel (set workers: 1) +- **DO NOT** skip type checking in test files + +## Special Files and Scripts + +### Utility Scripts (scripts/) +- `sync-version.js` - Version synchronization logic +- `verify-release.js` - Release package validation +- `resize-screenshots.js` - Image processing with Sharp +- `optimize-icon.js` - Icon optimization + +### Configuration Files +- `tsconfig.json` - Strict TypeScript configuration +- `.eslintrc.cjs` - ESLint rules for webextensions +- `vite.config.ts` - Vite build with @crxjs plugin +- `vitest.config.ts` - Test configuration with jsdom +- `playwright.config.ts` - E2E test configuration + +### Important Exclusions +- `tests/performance/` - Not run in standard CI +- `tests/e2e/` - Handled by Playwright, not Vitest +- `**/quark-adapter.test.ts` - Excluded until Chrome mock environment ready + +## Debugging Tips + +### Development Mode +1. Run `npm run dev` +2. Load unpacked extension from `dist/` directory +3. Check console in: + - Extension popup (DevTools on popup.html) + - Content script (DevTools on cloud platform page) + - Background service worker (chrome://extensions/ → "service worker") + +### Common Debug Scenarios +- **Content script not loading:** Check matches pattern in manifest.json +- **API calls failing:** Verify host_permissions includes platform domain +- **Rules not applying:** Check RuleFactory registration and type definitions +- **Build artifacts missing:** Run `npm run verify:release` to diagnose + +### Logging Strategy +- Use `console.warn()` for expected issues (user-facing) +- Use `console.error()` for unexpected errors +- Prefix logs with `[CloudDrive Renamer]` for filtering +- See `src/utils/logger.ts` for structured logging + +## Store Assets and Documentation + +The `docs/store-assets/` directory contains materials for Chrome Web Store and Edge Add-ons submission: +- Listing descriptions in markdown format +- Privacy policy (required for store submission) +- Submission checklist and guides +- Screenshot specifications + +Screenshots are processed using the `npm run resize` command with predefined presets matching store requirements. + +## Performance Considerations + +- **Rate Limiting:** 800ms interval between rename requests (configurable via `requestInterval`) +- **Concurrent Execution:** Uses `Promise.allSettled()` with staggered delays, not sequential +- **Virtual Scrolling:** Large file lists use `@lit-labs/virtualizer` in preview +- **Bundle Size:** Lit is chosen for its small footprint (~20KB) vs React/Vue +- **Memory:** Crash recovery stores minimal state in chrome.storage.local + +## Future Expansion Points + +**Platform Adapters (Planned):** +- `src/adapters/aliyun/` - Aliyun Drive (architecture ready) +- `src/adapters/baidu/` - Baidu Drive (architecture ready) + +**Potential Rule Types:** +- Regex-based rules (mentioned in roadmap) +- Conditional rules based on file type/size +- Template-based batch rules + +**Testing Gaps:** +- `quark-adapter.test.ts` requires Chrome extension mock environment +- Performance benchmarks not yet integrated in CI +- E2E tests for all platforms (currently Quark only) diff --git a/docs/store-assets/README.md b/docs/store-assets/README.md index af33bb5..9593d9d 100644 --- a/docs/store-assets/README.md +++ b/docs/store-assets/README.md @@ -7,10 +7,11 @@ ## 📁 目录结构 ``` -store-assets/ +docs/store-assets/ ├── README.md # 本文件 ├── chrome-web-store-listing.md # Chrome商店列表信息 ├── edge-addons-listing.md # Edge商店列表信息 +├── edge-supplemental-info.md # Edge补充信息(搜索关键词等) ├── PRIVACY_POLICY.md # 隐私政策(中英文) ├── SUBMISSION_GUIDE.md # 详细提交指南 └── CHECKLIST.md # 快速检查清单 @@ -49,6 +50,7 @@ store-assets/ - 简短描述(150字符以内) - 完整描述(中英文版本) - 分类和标签 +- **搜索关键词**(新增) - 截图说明文字 - 权限和数据使用说明 - 隐私政策信息 @@ -58,7 +60,27 @@ store-assets/ **如何使用**: 1. 打开Microsoft Partner Center 2. 从此文件复制相应内容到商店列表表单 -3. 为每种语言创建单独的列表 +3. 特别注意填写搜索关键词(Properties部分) +4. 为每种语言创建单独的列表 + +### 2.1 edge-supplemental-info.md + +**用途**: Edge Add-ons特定字段的详细说明和最佳实践 + +**包含内容**: +- 搜索关键词详细说明和策略 +- 分类选择建议 +- 市场和可用性设置 +- 描述优化建议 +- 截图优化指南 +- Edge特定注意事项 +- 与Chrome的差异对比 +- 提交表单快速参考 + +**如何使用**: +- 填写搜索关键词时参考第1节 +- 优化描述和截图时参考相应章节 +- 作为Edge提交的完整指南 ### 3. PRIVACY_POLICY.md @@ -80,6 +102,10 @@ store-assets/ **推荐URL格式**: ``` +https://github.com/lhly/cloud-drive-renamer/blob/main/docs/store-assets/PRIVACY_POLICY.md +``` +或者复制到项目根目录: +``` https://github.com/lhly/cloud-drive-renamer/blob/main/PRIVACY_POLICY.md ``` @@ -176,25 +202,32 @@ cd .. ### 发布隐私政策 ```bash -# 复制隐私政策到项目根目录 -cp store-assets/PRIVACY_POLICY.md ./PRIVACY_POLICY.md - -# 提交到Git -git add PRIVACY_POLICY.md +# 隐私政策已在docs/store-assets/目录下 +# 直接提交到Git +git add docs/store-assets/PRIVACY_POLICY.md git commit -m "docs: add privacy policy for store submission" git push origin main + +# 或者如果需要在项目根目录也放一份 +cp docs/store-assets/PRIVACY_POLICY.md ./PRIVACY_POLICY.md +git add PRIVACY_POLICY.md +git commit -m "docs: add privacy policy to project root" +git push origin main ``` ### 提交到商店 1. **Chrome Web Store**: - 打开 [开发者控制台](https://chrome.google.com/webstore/devconsole/) - - 参考 `SUBMISSION_GUIDE.md` 中的Chrome章节 + - 参考 `chrome-web-store-listing.md` 获取完整内容 + - 参考 `SUBMISSION_GUIDE.md` 中的Chrome章节了解流程 - 使用 `CHECKLIST.md` 确保所有项完成 2. **Microsoft Edge Add-ons**: - 打开 [Partner Center](https://partner.microsoft.com/dashboard) - - 参考 `SUBMISSION_GUIDE.md` 中的Edge章节 + - 参考 `edge-addons-listing.md` 获取完整内容 + - **重要**: 参考 `edge-supplemental-info.md` 填写搜索关键词 + - 参考 `SUBMISSION_GUIDE.md` 中的Edge章节了解流程 - 使用 `CHECKLIST.md` 确保所有项完成 --- @@ -242,7 +275,7 @@ git push origin main - **项目主页**: https://github.com/lhly/cloud-drive-renamer - **问题反馈**: https://github.com/lhly/cloud-drive-renamer/issues -- **隐私政策URL**: https://github.com/lhly/cloud-drive-renamer/blob/main/PRIVACY_POLICY.md +- **隐私政策URL**: https://github.com/lhly/cloud-drive-renamer/blob/main/docs/store-assets/PRIVACY_POLICY.md --- @@ -303,7 +336,11 @@ npm run sync:version ## 📝 更新记录 -- **2025-12-16**: 初始版本创建,包含所有必需的商店资料 +- **2025-12-16**: + - 初始版本创建,包含所有必需的商店资料 + - 添加Edge搜索关键词说明 + - 创建edge-supplemental-info.md补充文档 + - 更新文档路径为docs/store-assets/ --- diff --git a/docs/store-assets/edge-addons-listing.md b/docs/store-assets/edge-addons-listing.md index 0a844ba..74f085f 100644 --- a/docs/store-assets/edge-addons-listing.md +++ b/docs/store-assets/edge-addons-listing.md @@ -151,6 +151,32 @@ Project Homepage: https://github.com/lhly/cloud-drive-renamer ### 主要分类 - **Category**: Productivity (生产力工具) +### 搜索关键词 (Search Terms) + +Edge Add-ons允许添加搜索关键词以提高扩展的可发现性。 + +**推荐关键词(英文)**: +``` +rename, batch rename, file rename, cloud drive, cloud storage, quark drive, file management, bulk rename, batch operations, productivity +``` + +**推荐关键词(中文)**: +``` +重命名, 批量重命名, 文件重命名, 云盘, 网盘, 夸克网盘, 文件管理, 批量操作, 效率工具 +``` + +**关键词策略说明**: +- 核心功能词:rename, batch rename, file rename(重命名、批量重命名) +- 平台相关:cloud drive, quark drive(云盘、夸克网盘) +- 使用场景:file management, productivity(文件管理、效率) +- 操作类型:batch operations, bulk operations(批量操作) + +**注意事项**: +- Edge限制关键词数量,建议选择5-10个最相关的 +- 避免使用与功能无关的热门词汇 +- 不要重复扩展名称中已有的词 +- 关键词应该反映用户可能的搜索习惯 + ### 补充标签 - File Management - Cloud Storage diff --git a/docs/store-assets/edge-supplemental-info.md b/docs/store-assets/edge-supplemental-info.md new file mode 100644 index 0000000..a06f37e --- /dev/null +++ b/docs/store-assets/edge-supplemental-info.md @@ -0,0 +1,503 @@ +# Edge Add-ons 补充信息 + +本文档补充Microsoft Edge Add-ons申请表单中的额外必填字段和最佳实践。 + +--- + +## 1. 搜索关键词 (Search Terms) + +### 什么是搜索关键词 + +搜索关键词帮助用户在Edge Add-ons商店中发现您的扩展。这些关键词应该反映用户可能的搜索习惯和扩展的核心功能。 + +### 推荐关键词列表 + +#### 英文关键词(5-10个) + +**核心推荐**: +``` +rename, batch rename, file rename, cloud drive, quark drive, file management, productivity +``` + +**完整列表**(可选择性使用): +- `rename` - 核心功能 +- `batch rename` - 批量操作 +- `file rename` - 文件重命名 +- `cloud drive` - 云盘 +- `cloud storage` - 云存储 +- `quark drive` - 夸克网盘 +- `file management` - 文件管理 +- `bulk rename` - 批量重命名 +- `batch operations` - 批量操作 +- `productivity` - 效率工具 + +#### 中文关键词(供参考) + +虽然Edge主要使用英文关键词,但如果支持中文商店,可以考虑: +``` +重命名, 批量重命名, 文件重命名, 云盘, 网盘, 夸克网盘, 文件管理, 批量操作, 效率工具 +``` + +### 关键词策略 + +#### 优先级排序 + +1. **高优先级(必选)**: + - `rename` - 直接描述核心功能 + - `batch rename` - 用户最可能搜索的词 + - `file management` - 功能分类 + +2. **中优先级(推荐)**: + - `cloud drive` - 目标平台 + - `quark drive` - 具体支持的服务 + - `productivity` - 使用场景 + +3. **低优先级(可选)**: + - `bulk operations` - 功能描述 + - `cloud storage` - 同义词 + - `file rename` - 功能变体 + +#### 关键词组合策略 + +Edge允许使用**短语关键词**: +``` +✅ 好的做法: +"batch rename" (短语,用户常搜索) +"file management" (短语,描述准确) +"cloud drive" (短语,目标明确) + +❌ 避免的做法: +"best rename tool" (主观词汇) +"free software" (与功能无关) +"windows" (过于宽泛) +``` + +### 关键词最佳实践 + +#### ✅ 应该做的 + +1. **使用用户语言** + - 想象用户会如何搜索这个功能 + - 使用常见的行业术语 + - 包含产品的核心价值 + +2. **保持相关性** + - 所有关键词都应与功能直接相关 + - 反映扩展的实际能力 + - 匹配目标用户群体的搜索习惯 + +3. **覆盖不同搜索意图** + - 功能词:rename, batch + - 场景词:file management, productivity + - 平台词:cloud drive, quark + +#### ❌ 不应该做的 + +1. **关键词堆砌** + ``` + ❌ 错误示例: + "rename file rename batch rename bulk rename mass rename" + ``` + +2. **使用无关热门词** + ``` + ❌ 错误示例: + "AI, ChatGPT, popular, trending" + ``` + +3. **重复扩展名称** + ``` + ❌ 如果扩展名称已包含"Renamer",避免再用"renamer"作为关键词 + ``` + +4. **使用品牌名称** + ``` + ❌ 错误示例: + "Microsoft Edge, Chrome, Windows" + ``` + +### 填写方式 + +在Edge Add-ons Partner Center中: + +**位置**:Properties → Search terms + +**格式**:用逗号分隔的关键词列表 + +**推荐填写**: +``` +rename, batch rename, file rename, cloud drive, file management, productivity +``` + +**备选方案**(如果需要更具体): +``` +batch rename, cloud drive, quark drive, file management, bulk operations +``` + +--- + +## 2. 分类选择 (Category) + +### 主要分类 + +**推荐选择**:`Productivity`(生产力工具) + +**理由**: +- ✅ 扩展帮助用户提高文件管理效率 +- ✅ 适合办公和日常文件整理场景 +- ✅ 与同类工具归在同一类别,便于用户发现 + +### 其他可考虑的分类 + +虽然Productivity是最佳选择,但以下分类也相关: + +1. **Developer Tools**(开发者工具) + - 如果您强调对开发者的价值 + - 例如:批量重命名项目文件 + +2. **Utilities**(实用工具) + - 如果商店有这个分类 + - 强调通用工具性质 + +**不推荐**: +- ❌ Shopping - 与电商无关 +- ❌ News & Weather - 内容不匹配 +- ❌ Entertainment - 不是娱乐工具 + +--- + +## 3. 市场和可用性 (Markets & Availability) + +### 推荐设置 + +**市场选择**:`All markets`(所有市场) + +**可见性**:`Public`(公开) + +**理由**: +- ✅ 云盘服务全球可用 +- ✅ 扩展支持多语言(中文、英文、繁体中文) +- ✅ 功能通用,适合全球用户 + +### 特定市场考虑 + +如果需要针对特定市场: + +**亚太市场**: +- 中国大陆(如果适用) +- 中国台湾 +- 中国香港 +- 日本、韩国 + +**理由**:夸克网盘主要用户群在亚太地区 + +**注意**:全球发布可以覆盖所有用户,除非有特殊的合规或业务需求。 + +--- + +## 4. 详细描述优化建议 + +### 描述结构最佳实践 + +#### 开场白(前100字) + +这是最重要的部分,因为用户首先看到的就是这里: + +**好的开场**: +``` +一款强大的云盘文件批量重命名工具,专为提升文件管理效率而设计。 + +支持夸克网盘(阿里云盘和百度网盘开发中),提供5种智能重命名规则:替换、前缀、后缀、编号、清理。所有操作在本地完成,不收集任何数据。 +``` + +**为什么好**: +- ✅ 立即说明核心价值 +- ✅ 明确支持的平台 +- ✅ 强调隐私保护 +- ✅ 简洁有力 + +#### 功能列表 + +使用**清晰的层级结构**: + +``` +✨ 核心特性 + +🎯 多平台支持 +• 夸克网盘 - 完全支持 +• 阿里云盘 - 开发中 +• 百度网盘 - 开发中 + +🔧 五大重命名规则 +1. 替换规则 - 批量替换特定文本 +2. 前缀规则 - 添加统一前缀 +... +``` + +#### 使用场景 + +**包含实际例子**让用户能立即理解价值: + +``` +📝 典型使用场景 + +1. 整理照片集 + IMG_001.jpg → Tokyo2025_001.jpg + +2. 清理文档命名 + 报告@2024#最终版.docx → 报告2024Final.docx +``` + +### 描述优化清单 + +- [ ] 开场白在100字内说明核心价值 +- [ ] 使用emoji增强可读性(适度) +- [ ] 功能描述具体且可量化 +- [ ] 包含实际使用例子 +- [ ] 强调隐私和安全 +- [ ] 提及开源和透明 +- [ ] 包含技术栈(可选,显示专业性) +- [ ] 提供项目主页链接 + +--- + +## 5. 截图优化建议 + +### 截图命名和说明 + +每张截图都应该有清晰的说明文字: + +#### 中文说明 + +1. **主界面截图** + ``` + 直观的批量重命名界面 - 支持多种规则配置 + ``` + +2. **预览功能截图** + ``` + 实时预览功能 - 所见即所得的重命名效果 + ``` + +3. **执行进度截图** + ``` + 智能执行进度追踪 - 批量操作一目了然 + ``` + +#### 英文说明 + +1. **Main Interface** + ``` + Intuitive batch rename interface - Support multiple rule configurations + ``` + +2. **Preview Feature** + ``` + Real-time preview feature - WYSIWYG rename results + ``` + +3. **Progress Tracking** + ``` + Smart execution progress tracking - Batch operations at a glance + ``` + +### 截图最佳实践 + +#### ✅ 好的截图 + +- 清晰的界面展示 +- 突出核心功能 +- 包含实际数据(示例文件名) +- 展示前后对比效果 +- 分辨率符合要求(1366x768或1280x800) + +#### ❌ 避免的问题 + +- 截图模糊或压缩过度 +- 包含个人隐私信息 +- 界面元素被截断 +- 没有展示实际功能 +- 文字太小难以阅读 + +--- + +## 6. Edge Add-ons特定注意事项 + +### 审核差异 + +Edge的审核与Chrome有以下不同: + +#### 更严格的隐私审查 + +- 必须清楚说明每个权限的用途 +- 数据使用必须透明 +- 隐私政策必须详细且易于访问 + +#### 更注重用户体验 + +- 截图质量要求更高 +- 描述必须准确且专业 +- 不允许夸大宣传 + +#### 技术标准 + +- 必须与最新版Edge完全兼容 +- 不能有控制台错误或警告 +- 性能必须良好 + +### 常见拒绝原因(Edge特定) + +1. **权限说明不充分** + - 解决:参考本文档的权限说明模板 + - 每个权限都要有具体用途说明 + +2. **描述与功能不符** + - 解决:确保描述准确反映实际功能 + - 不要承诺未实现的功能 + +3. **隐私政策不完整** + - 解决:使用提供的PRIVACY_POLICY.md模板 + - 确保URL可访问 + +4. **截图不清晰** + - 解决:使用高分辨率截图 + - 确保文字清晰可读 + +--- + +## 7. 提交表单快速参考 + +### Edge Add-ons Properties 部分 + +#### Category(分类) +``` +Productivity +``` + +#### Search Terms(搜索关键词) +``` +rename, batch rename, file rename, cloud drive, file management, productivity +``` + +#### Logo(图标) +``` +上传: public/icons/icon128.png (128x128 PNG) +``` + +### Listings 部分(中文简体) + +#### Extension Name(扩展名称) +``` +云盘批量重命名工具 +``` + +#### Short Description(简短描述) +``` +强大的批量重命名工具,支持夸克网盘文件批量重命名(阿里云盘和百度网盘开发中) +``` + +#### Long Description(详细描述) +``` +从 edge-addons-listing.md 复制"完整描述"的中文版本 +``` + +#### Screenshots(截图) +``` +上传3张截图,每张附带说明文字(见上文第5节) +``` + +### Availability 部分 + +#### Markets(市场) +``` +All markets +``` + +#### Visibility(可见性) +``` +Public +``` + +### Privacy 部分 + +#### Privacy Policy URL(隐私政策) +``` +https://github.com/lhly/cloud-drive-renamer/blob/main/PRIVACY_POLICY.md +``` + +#### Website(网站) +``` +https://github.com/lhly/cloud-drive-renamer +``` + +#### Support Email(支持邮箱) +``` +lhlyzh@qq.com +``` + +#### Permissions Justification(权限说明) +``` +storage: 在浏览器本地保存用户的重命名规则配置和任务状态 +tabs: 识别当前访问的云盘平台,加载对应的功能模块 +host_permissions: 在云盘页面注入重命名工具界面并调用云盘API执行重命名操作 + +所有权限直接支持扩展的核心功能:批量文件重命名。 +``` + +--- + +## 8. 审核准备清单 + +### 提交前验证 + +- [ ] 搜索关键词已填写(5-10个相关词汇) +- [ ] 分类选择正确(Productivity) +- [ ] 扩展名称符合规范(45字符以内) +- [ ] 简短描述吸引人(150字符以内) +- [ ] 详细描述完整且专业 +- [ ] 3-5张高质量截图已上传 +- [ ] 每张截图都有说明文字 +- [ ] 图标为128x128 PNG格式 +- [ ] 隐私政策URL可访问 +- [ ] 权限说明清晰详细 +- [ ] 支持邮箱有效 +- [ ] 在Edge浏览器中测试通过 + +### 提交后追踪 + +- [ ] 记录提交日期 +- [ ] 保存扩展ID +- [ ] 设置邮件提醒 +- [ ] 定期检查审核状态 +- [ ] 准备好回复审核反馈 + +--- + +## 9. 与Chrome Web Store的差异对比 + +| 项目 | Chrome Web Store | Edge Add-ons | +|------|------------------|--------------| +| 搜索关键词 | 不支持 | 支持,需要填写 | +| 分类选择 | 必需 | 必需 | +| 简短描述字数限制 | 132字符 | 150字符 | +| 单一用途说明 | 必需 | 不需要单独说明 | +| 远程代码声明 | 必需 | 不需要单独声明 | +| 审核时间 | 1-3天 | 3-7天 | +| 注册费用 | $5(一次性) | 免费 | +| 多语言列表 | 自动根据locale | 需要手动创建 | + +--- + +## 10. 完成状态 + +- [x] 搜索关键词准备完成 +- [x] 分类和标签确定 +- [x] 描述优化建议 +- [x] 截图说明文字 +- [x] 权限说明模板 +- [x] 提交表单快速参考 +- [x] 审核准备清单 + +**准备完毕!** + +使用本文档补充Edge Add-ons申请表单中的搜索关键词等信息,确保提交内容完整专业。