APolish
A polish for your text with AI
English |
简体中文 |
繁體中文 |
日本語 |
Español |
Português |
Français |
Deutsch |
Русский |
हिन्दी
A privacy-first Chrome extension that polishes text on any webpage using AI. Select text, click the polish button, and get AI-enhanced suggestions with visual diff comparison.
Features
- Multi-Provider AI Support: Choose between OpenAI, Claude, or Gemini using your own API key
- Text Polishing: Select any text and polish it with AI
- Multiple Presets: Standard, Professional, Native Speaker, Simplified, Emotional Intelligence, or Custom prompts
- Model Choice: Pick any model your API key can access, per provider — the list is fetched live
- Quick Toggle: Enable or disable the extension from the toolbar popup
- Visual Diff: See changes highlighted with insertions (green) and deletions (red)
- Privacy First: Your API key stays local, no data collection or telemetry
- Universal Compatibility: Works on any webpage including Gmail, Google Docs, and more
Installation
From Source
- Clone the repository:
git clone https://github.com/changliu0828/apolisher-chrome.git
cd apolisher-chrome
- Install dependencies:
- Build the extension:
- Load in Chrome:
- Open
chrome://extensions
- Enable “Developer mode”
- Click “Load unpacked”
- Select the
dist folder
Usage
- Setup: Choose your AI provider (OpenAI, Claude, or Gemini) and add your API key in the extension settings
- Select: Highlight text on any webpage
- Polish: Click the
button that appears
- Review: View the diff comparison in the modal
- Accept: Click the checkmark to apply changes
Configuration
Access settings by clicking the extension icon or right-clicking and selecting “Options”:
- AI Provider: Choose between OpenAI (GPT-5.6 Luna), Claude (Haiku 4.5), or Gemini (3.1 Flash Lite)
- API Key: Your provider-specific API key (stored securely in Chrome sync storage)
- Model: Pick the model for the selected provider; the list is fetched with your API key (defaults to the model above)
- Prompt Presets: Choose from Standard, Professional, Native, Simplified, Emotional Intelligence, or Custom
- Max Tokens: Control response length (100-4000 tokens, default: 2000)
Tech Stack
- React + TypeScript - UI components
- Vite - Build system with @crxjs/vite-plugin
- Tailwind CSS - Styling
- Chrome Extension Manifest V3 - Extension architecture
- Multi-Provider AI: OpenAI (GPT-5.6 Luna), Claude (Haiku 4.5), or Gemini (3.1 Flash Lite)
- Shadow DOM - Style isolation for content script
- chrome.i18n - Native internationalization (10 locales)
- Vitest + happy-dom - Unit tests (264 tests)
Development
Every command below is also available via make (make on its own lists the
targets, make check runs type-check + lint + tests):
# Install dependencies
npm install
# Development build with HMR
npm run dev
# Production build
npm run build
# Run linter
npm run lint
# Type check
npm run type-check
# Run tests
npm run test:run
# Build and package for the Chrome Web Store
npm run package
Project Structure
src/
├── background/ # Service worker for API calls
├── content/ # Content script and UI components
├── hooks/ # Shared settings hook
├── i18n/ # Chrome i18n helpers and typed message keys
├── options/ # Settings page
├── popup/ # Toolbar popup (enable/disable toggle)
├── prompts/ # Prompt presets
├── services/ # Multi-provider AI services (OpenAI, Claude, Gemini)
├── test/ # Vitest setup, mocks, and fixtures
├── types/ # TypeScript types
└── utils/ # Utilities
Support This Project
If you find apolisher-chrome useful, please consider sponsoring! Your support helps keep this project free and open-source.

Ways to support:
- ⭐ Star this repository
- 💖 Become a sponsor (starting at $3/month)
- 🐛 Report bugs and contribute code
- 📢 Share with others who might find it useful
Thank you to all our sponsors! 🙏
Become the first sponsor and get your name here!
License
MIT