镜像自地址
https://github.com/lhly/cloud-drive-renamer.git
已同步 2026-10-20 13:47:47 +08:00
docs(store): 添加Edge商店搜索关键词说明和补充文档
- 在edge-addons-listing.md中添加详细的搜索关键词策略 - 创建edge-supplemental-info.md作为Edge商店提交指南 - 更新README.md文档结构和路径说明 - 调整CI工作流触发条件,移除tag触发
这个提交包含在:
父节点
4b224761b6
当前提交
b5d7bf03e1
6
.github/workflows/complete-tests.yml
vendored
6
.github/workflows/complete-tests.yml
vendored
@ -24,10 +24,8 @@ on:
|
||||
schedule:
|
||||
- cron: '0 0 * * 1'
|
||||
|
||||
# Release 标签触发
|
||||
push:
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
# 注意:tag 推送时只触发 release.yml
|
||||
# 本工作流专用于定时运行和手动触发
|
||||
|
||||
# 环境变量
|
||||
env:
|
||||
|
||||
395
CLAUDE.md
普通文件
395
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<string, any>` 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)
|
||||
@ -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/
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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申请表单中的搜索关键词等信息,确保提交内容完整专业。
|
||||
正在加载...
在新工单中引用
屏蔽一个用户