English · 简体中文 · Français · Español · 日本語 · Português
EnhanceGPT is a Chrome extension that adds native-feeling bulk chat management, reusable prompt snippets, and conversation outlines to the ChatGPT web app. It is implemented as a restrained augmentation layer, avoiding full-page modals, heavy surfaces, and layout-shifting DOM changes.
Install • Development • Feature Showcase • Implementation Notes
- Bulk-select conversations from the left sidebar for faster multi-chat workflows.
- Archive or delete selected conversations from a focused bulk-action surface.
- Save, edit, and reuse prompt snippets from a compact dropdown above the composer.
- Generate a lightweight conversation outline in the right whitespace for quicker thread navigation.
- Keep the experience native-feeling, lightweight, and unobtrusive.
| Bulk Operation |
|---|
![]() |
| Prompt Manager |
![]() |
| Conversation Outline |
![]() |
Install EnhanceGPT from your browser's extension store:
- Node.js 20 or newer
- npm 10 or newer
- Chrome or a Chromium-based browser with Manifest V3 support
npm installBuild And Load In Chrome
npm run buildThen load the dist directory in Chrome:
- Open
chrome://extensions. - Enable Developer mode.
- Select "Load unpacked".
- Choose this repo's
distfolder.
public/manifest.json Manifest V3 extension manifest
src/content/ ChatGPT content script and injected UI
src/shared/ Shared constants and prompt types
vite.content.config.ts IIFE build for manifest content script
- The content script is scoped to
https://chatgpt.com/*andhttps://chat.openai.com/*. - Prompt snippets are stored in
chrome.storage.local, withlocalStoragefallback for non-extension development contexts. - Bulk delete/archive buttons currently emit
ecg:bulk-conversation-actionbrowser events instead of calling private ChatGPT APIs. This keeps the first version safe until a stable, explicit native-action adapter is implemented. - CSS is prefixed with
ecg-and loaded as a static content-script stylesheet. - Conversation outlines prefer ChatGPT's conversation JSON endpoint so long threads can be indexed before every message is mounted in the DOM.
npm run typecheck
npm run lint
npm run build- Chrome Manifest V3 and manifest structure: https://developer.chrome.com/docs/extensions/reference/manifest
- Static content scripts: https://developer.chrome.com/docs/extensions/reference/manifest/content-scripts
- Extension storage: https://developer.chrome.com/docs/extensions/reference/api/storage
- Extension icons: https://developer.chrome.com/docs/extensions/reference/manifest/icons


