Turn any vague idea into a master-class prompt instantly. Free. Open source. No sign-up.
MetaPrompt is a browser extension that acts as your personal Prompt Engineer. It rewrites and structures your prompts before you send them to ChatGPT, Claude, or Gemini β so you always get dramatically better AI responses with zero extra effort.
- How It Works
- Features
- Quick Start β Download & Install
- Browser-by-Browser Install Guide
- Setup: Gemini API Key (Optional)
- How to Use
- Prompt Techniques Guide
- Model Tier Guide
- Reloading After Code Changes
- Testing Guide
- Project Structure
- Troubleshooting
- Contributing
MetaPrompt works in two distinct modes depending on where you are:
Goal: Turn vague ideas into master-class prompts.
- You type: "make a snake game in python"
- MetaPrompt: Picks an Expert Persona (Senior Dev) + Chain of Thought structure.
- Result: You get a professional, structured prompt that gets perfect code on the first try.
Goal: Write better messages, DMs, and responses instantly.
- You type intent: "tell her about her beauty and eyes"
- MetaPrompt: Writes the actual message in a charming, casual tone.
- You type a draft: "hey i want to meeting tomorrow at 5"
- MetaPrompt: Polishes it into a professional invitation.
MetaPrompt is more than just a prompt tool β it's your personal AI ghostwriter.
- πΌ Professional (LinkedIn/Email): Transform rough notes into articulate, high-level business communication. Perfect for cold DMs, follow-ups, and networking.
- β€οΈ Personal & Casual (Instagram/DMs): Express yourself better. Whether you want to be heartfelt, playful, flirty, or deeply romantic, MetaPrompt understands your intent and writes the actual message for you.
- βοΈ Grammar & Correctness: Fix typos and punctuation while keeping your original voice perfectly intact.
| Feature | Optimizer Mode | Refiner Mode |
|---|---|---|
| Core Job | Rewrites prompts to AI | Writes/Polishes messages for people |
| Best For | Coding, Writing, Analysis | DMs, Emails, Social Media |
| Platforms | ChatGPT, Gemini, Claude | LinkedIn, Instagram, WhatsApp, Gmail |
| Output | "Act as a..." structure | Direct, ready-to-send text |
- π― Dual-Engine Logic β Automatically switches between Prompt Engineering and Message Ghostwriting.
- π§ 6 Prompt Techniques β Auto, Expert Persona, Chain of Thought, Few-Shot, Zero-Shot, ReAct.
- π¨ 3 Refining Tones β Professional, Casual/Personal, and Grammar-Only.
- π Intent Detection β Understands if you are giving instructions ("tell her...") or a draft ("hey ur pretty") and responds accordingly.
- βοΈ Dynamic Model Selection β Choose exactly which model to use from a live dropdown.
- π Live Model Discovery β Detects which Gemini models are available on your API key.
- π‘οΈ Smart Fallback β If a model is down or removed, silently tries the next working one.
- π΄ Works Offline β Built-in smart templates need zero internet.
- π Privacy First β Your API key never leaves your browser.
- β¨οΈ Keyboard Shortcut β
Alt + Shift + Pto enhance any prompt instantly. - β External Site Support β Use MetaPrompt on ANY website (Instagram, LinkedIn, etc.) by adding them in the settings.
- βΎοΈ Always Alive β Dual keep-alive strategy prevents service worker sleep.
Option A β Direct ZIP Download (Easiest):
- Download the extension: Download MetaPrompt (ZIP)
- Extract the ZIP anywhere on your computer (e.g.,
C:\MetaPrompt\or~/MetaPrompt/) - The extracted folder
exts-maincontains the extension files.
Option B β Clone with Git:
git clone https://github.com/jigs1188/exts.gitSee the full browser-specific guide below.
- Go to chatgpt.com, claude.ai, or gemini.google.com
- Type any idea into the chat box
- Click the β¨ floating button (bottom-right corner) or press
Alt+Shift+P - Your prompt is instantly upgraded! π
Versions supported: Chrome 88+
- Open a new tab and go to:
chrome://extensions - In the top-right corner, enable the Developer mode toggle
- Click "Load unpacked" (appears after enabling Developer mode)
- In the file picker, navigate to where you extracted the ZIP (or cloned the repo)
- Select the
exts-main(orexts) folder β click Select Folder - MetaPrompt appears in your extensions list β
- Click the puzzle icon π§© in the toolbar β click the π pin icon next to MetaPrompt
Verify it works: Visit chatgpt.com β you should see the β¨ button floating at the bottom-right.
Versions supported: Edge 88+ (Chromium-based)
- Open a new tab and go to:
edge://extensions - In the bottom-left sidebar, enable the Developer mode toggle
- Click "Load unpacked" in the top-left
- Navigate to your extracted folder and select
exts-main(orexts) - Click Select Folder β MetaPrompt appears β
- Click the puzzle icon π§© in the toolbar β pin MetaPrompt
Verify it works: Visit chatgpt.com β β¨ button should appear.
Versions supported: Brave 1.20+ (Chromium-based)
- Open a new tab and go to:
brave://extensions - Enable Developer mode toggle (top-right)
- Click "Load unpacked"
- Select the
exts-main(orexts) folder - Click Select Folder β MetaPrompt is loaded β
Brave Shield note: If the β¨ button doesn't appear on some sites, click the Brave Shield π‘οΈ icon in the address bar and set "Shields" to Down for that site. MetaPrompt doesn't need this normally, but Brave's aggressive blocking occasionally affects injected UI elements.
Versions supported: Opera 74+ (Chromium-based)
- Open a new tab and go to:
opera://extensions
(Opera GX:operagx://extensions) - Enable Developer mode (top-right toggle)
- Click "Load unpacked"
- Select the
exts-main(orexts) folder β click OK β
Because Firefox handles background scripts slightly differently than Chrome, we have a build script that automatically prepares the Firefox version for you.
Step 1: Build for Firefox
- Ensure you have Node.js installed.
- Open your terminal in the extension folder and run:
npm install npm run build
- This creates a
dist/firefoxfolder with the correct Firefoxmanifest.json.
Step 2: Load into Firefox (Temporary) Firefox removes unpacked extensions when you restart the browser. For immediate testing:
- Open Firefox, go to:
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on..."
- Navigate to the
dist/firefoxfolder you just built. - Select the
manifest.jsonfile inside it and click Open. - β MetaPrompt is ready to use!
Step 3: Make it Permanent To keep the extension permanently in Firefox without it disappearing on restart:
- You must sign the extension using Mozilla's
web-exttool. - Install the tool globally:
npm install -g web-ext - Generate an API key from Mozilla Add-ons (AMO)
- Run the sign command inside the
dist/firefoxfolder:cd dist/firefox web-ext sign --api-key=YOUR_API_KEY --api-secret=YOUR_API_SECRET - This generates a
.xpifile in theweb-ext-artifactsfolder. You can drag and drop this.xpifile into Firefox for a permanent installation!
If you modify the source code, change settings that seem stuck, or the extension hits a rate limit glitch, you must do two things:
- Reload the Extension: Go to your browser's extensions page (
chrome://extensionsorabout:debugging) and click the Reload π icon next to MetaPrompt. - Refresh the AI Chat Page (CRITICAL): Go to your open ChatGPT / Claude / Gemini tab and press
Ctrl + R(orCmd + Ron Mac).- Why? Browsers do not automatically update the code injected into already-open web pages. If you don't refresh the page, you will still be using the old, pre-reload version of the extension on that specific tab!
Since this is an open-source project, new AI models, prompt techniques, and bug fixes are pushed to the GitHub repository directly.
How to get notified of updates:
- Go to the MetaPrompt GitHub Repository page.
- In the top right corner, click the Watch ποΈ button.
- Select "Custom" -> check "Releases" (to only get notified of major updates) OR select "All Activity" to get an email whenever code changes.
- When an update drops, simply run
git pull(or download the ZIP again) and reload the extension in your browser!
Requires: macOS 12+, Xcode 14+, Safari 15+
Safari requires converting the extension to a native Mac app. This is a one-time process.
Prerequisites: Install Xcode from the App Store.
# Convert the extension to a Safari extension project
xcrun safari-web-extension-converter /path/to/exts-main --project-location ~/Desktop
# Example with actual path:
xcrun safari-web-extension-converter ~/Downloads/exts-main --project-location ~/DesktopThen:
- Xcode opens automatically with the generated project
- Click the βΆ Run button in Xcode (builds the app)
- Open Safari β Safari menu β Settings β Extensions
- Enable MetaPrompt in the list β
- If you don't see it: Safari menu β Develop β Allow Unsigned Extensions (requires Developer menu enabled in Settings β Advanced)
MetaPrompt works without an API key using built-in local templates. For AI-powered optimization:
- Go to Google AI Studio
- Sign in with your Google account
- Click "Create API Key" β select any project (or create new)
- Copy the key (starts with
AIza...)
- Click the β¨ MetaPrompt icon in your browser toolbar
- Paste your key into the "Gemini API Key" field
- Click πΎ Save Key
- Optionally click π Check My Available Models to see which models work on your key
π Privacy: Your key is stored in
chrome.storage.sync(local browser storage). It is sent only togenerativelanguage.googleapis.com(Google's official Gemini API). Never to any third-party server.
π‘ Free tier limits: The free Gemini API tier has generous limits β typically 15 requests/minute and 1 million tokens/day with
gemini-1.5-flash. MetaPrompt uses ~200-500 tokens per optimization.
- Open any supported AI chat site (ChatGPT, Gemini, Claude) or a Custom External Site.
- Type your raw idea or message in the input box.
- Click the β¨ purple floating button at the bottom-right corner of the page.
- Your text is enhanced instantly!
If you are on a complex site like LinkedIn DMs or Instagram, use this much more reliable method:
- Type your message or instruction (e.g., "tell her I love her eyes").
- Highlight/Select the text with your mouse.
- Click the β¨ floating button.
- MetaPrompt will optimize only the selected part and replace it exactly where it was.
While the cursor is in any input box:
- Press
Alt + Shift + P - The text is optimized instantly.
MetaPrompt isn't just for AI platforms. You can use it as a professional ghostwriter on LinkedIn, Instagram, Reddit, Gmail, or ANY other website.
- Click the β¨ icon in your browser toolbar to open the MetaPrompt Popup.
- Find the "External Sites (Optional)" section.
- Type the domain name (e.g.,
linkedin.comorinstagram.com). - Click β Add Site.
- Refresh the website you just added β the β¨ floating button will now appear there!
- LinkedIn: Turn a rough draft into a high-level professional message.
- Instagram/Social: Craft charming, flirty, or heartfelt responses.
- Support/Emails: Polish your tone to be perfectly professional or casual.
- Forums: Structure long posts or technical questions automatically.
- Click the β¨ icon in the toolbar to open the popup
- Change your Technique or Model Tier
- Return to the chat and click the floating button
Open the popup and choose how you want your prompt structured:
| Technique | Icon | Best For | Example Output Style |
|---|---|---|---|
| Auto | π€ | Everything β safest default | Gemini picks the best technique per prompt |
| Expert Persona | π | Domain-specific tasks | "Act as a Senior Python Game Developer..." |
| Chain of Thought | π§ | Math, logic, debugging | "Think through this step by step. Stage 1: ..." |
| Few-Shot | π | Creative, format-specific output | "Example 1: [input] β [output]... Now: ..." |
| Zero-Shot | β‘ | Simple, fast, direct tasks | "Role: ... Task: ... Constraints: ... Format: ..." |
| ReAct | π | Research, planning, investigation | "Thought: ... Action: ... Observation: ..." |
Which to use?
- π€ Auto β when unsure, this is always a great pick
- π§ Chain of Thought β
"why does this code fail","solve this math problem" - π Few-Shot β
"write an email in this style","generate data in this format" - π Expert Persona β
"build a REST API","write a blog post about AI" - β‘ Zero-Shot β
"summarize this","translate to French" - π ReAct β
"research and plan a marketing strategy","debug this step by step"
| Tier | Icon | Models Used | Cost | Quality | Best For |
|---|---|---|---|---|---|
| Auto | π | Best β stable, in order | Varies | βββββ | Recommended default |
| Flash | β‘ | gemini-2.0-flash β 1.5-flash | Lowest | ββββ | Everyday use, fast responses |
| Pro | π§ | gemini-1.5-pro β 1.5-pro-latest | Medium | βββββ | Complex prompts, better reasoning |
| Latest | π | gemini-2.5-flash-preview β 2.5-pro | Highest | βββββ+ | Cutting-edge, may not exist on free tier |
Fallback behavior: Each tier has an ordered list of models. If the first model is unavailable (deprecated, not on your plan, etc.), MetaPrompt silently tries the next one. You always get a result.
- Add your API key β click π Check My Available Models in the popup
- Each model shows β Available or β Not found
- Results are cached for 24 hours (click the button again to force a recheck)
- Use this to decide which tier makes sense for your API key
When you edit any extension file, you need to reload the extension AND the target page.
chrome://extensions β find MetaPrompt β click the π Reload icon
Then refresh the AI chat page (Ctrl+R / Cmd+R).
Just refresh the AI chat page (Ctrl+R). Content scripts reload with the page.
Just close and reopen the popup β no reload needed.
Must reload extension AND refresh all open tabs.
You can also add a bookmark with this JavaScript to reload instantly:
javascript:chrome.runtime.reload()
Or use the Extensions Reloader Chrome extension for one-click reloads.
If you started Firefox with web-ext run, it auto-reloads on every file save. No manual action needed.
If you installed manually:
- Go to
about:debugging#/runtime/this-firefox - Find MetaPrompt β click Reload
- Refresh the AI chat tab
- Make your code changes
- In Xcode β click βΆ Run again to rebuild
- Safari will prompt to reload the extension
- Install the extension in your browser
- Open chatgpt.com (or claude.ai, gemini.google.com)
- Look for the β¨ purple button in the bottom-right corner β if it's there, the extension loaded β
- Type
"explain recursion"in the chat box - Click the β¨ button
- The text should transform into a structured, expert-level prompt β
For each technique below, type the same prompt and switch techniques between tests:
Test prompt: "write a function to find prime numbers"
| Technique | What to check in output |
|---|---|
| Auto | Smart structure β likely Expert Persona or Zero-Shot |
| Expert Persona | Starts with "Act as a Senior Software Engineer..." |
| Chain of Thought | Contains numbered reasoning steps |
| Few-Shot | Contains 2-3 examples before the actual ask |
| Zero-Shot | Contains labeled sections: Role, Task, Constraints, Format |
| ReAct | Contains Thought β Action β Observation structure |
How to test:
- Open popup β select technique
- Go to chat site β type the test prompt β click β¨
- Check the output matches the expected structure
- Repeat for each technique
- Add your Gemini API key in the popup
- Click the π Refresh button next to the Model Dropdown
- The dropdown will populate with the exact models your API key has access to (e.g.,
gemini-2.0-flash).
Verify fallback works:
- Select Auto (Best available) in the dropdown.
- Optimize any prompt
- Open the browser console (F12 β Console tab)
- Look for:
[MetaPrompt] Trying: gemini-3.1-flash-lite-preview - If that model fails:
[MetaPrompt] gemini-3.1-flash-lite-preview failed (404) β trying next - Then it tries the next model automatically β
- Open the popup β click the π Refresh button
- The button will spin while it fetches models from the Gemini API.
- Close the popup and reopen it β the models load instantly from local storage.
- The cache automatically expires after 24 hours to ensure your model list is always up to date.
- Clear any saved API key (popup β ποΈ Clear)
- Optimize any prompt β should still work using local templates
- The result won't use the selected Technique or Model (those require the API)
- A structured, useful prompt is still produced β
SETUP
[ ] Extension loads without errors in chrome://extensions
[ ] β¨ floating button appears on chatgpt.com
[ ] β¨ floating button appears on claude.ai
[ ] β¨ floating button appears on gemini.google.com
[ ] Popup opens when clicking the toolbar icon
[ ] Popup shows Technique Picker (6 chips)
[ ] Popup shows Model Tier Picker (4 cards)
WITHOUT API KEY
[ ] Prompt optimization works (uses local templates)
[ ] Alt+Shift+P keyboard shortcut works
[ ] No error messages appear
WITH API KEY
[ ] API key saves and persists after popup close
[ ] API key clears with Clear button
[ ] "Check My Models" button works and shows results
[ ] Model discovery results persist after popup close/reopen
[ ] Flash tier produces a result
[ ] Pro tier produces a result
[ ] Latest tier falls back gracefully if model unavailable
[ ] Auto technique works
[ ] Expert Persona technique produces "Act as..." style output
[ ] Chain of Thought produces step-by-step structure
[ ] Few-Shot produces examples before the task
[ ] Zero-Shot produces Role/Task/Constraints/Format sections
[ ] ReAct produces Thought/Action/Observation structure
PERSISTENCE
[ ] Selected technique is remembered after popup close
[ ] Selected model tier is remembered after popup close
[ ] Stats (enhancement count) increase after each use
exts/ β Root repo (clone this)
β
βββ README.md β This file
βββ .gitignore
β
βββ manifest.json β Extension config (MV3)
βββ background.js β Service worker: Gemini API + keep-alive
βββ LICENSE
βββ README.md
β
βββ icons/
β βββ icon16.png
β βββ icon48.png
β βββ icon128.png
β
βββ content/
β βββ content.js β Page init + keyboard shortcut
β βββ observer.js β Floating button injection + notifications
β βββ optimizer.js β Local templates + API call dispatcher
β
βββ utils/
β βββ detectPlatform.js β ChatGPT/Gemini/Claude detection & text I/O
β
βββ ui/
βββ panel.html β Extension popup UI
βββ panel.css β Popup styles
βββ panel.js β Popup logic (API key, technique, model, discovery)
Storage keys used (all local, never transmitted):
| Key | Type | Purpose |
|---|---|---|
geminiApiKey |
sync |
Your Gemini API key |
selectedTechnique |
sync |
Chosen prompt technique |
selectedModel |
sync |
Chosen model tier |
enhanceCount |
local |
Total enhancements counter |
lastUsed |
local |
Timestamp of last use |
modelAvailability |
local |
Cached model discovery results |
modelCheckTimestamp |
local |
When the last check was run |
- Make sure you're on a supported URL:
chatgpt.com,claude.ai, orgemini.google.com - Reload the page (Ctrl+R)
- Check
chrome://extensionsβ ensure MetaPrompt is enabled (toggle is blue) - If the button still doesn't appear: disable/enable the extension, then reload the page
- Verify your API key is correct (check AI Studio)
- Your key may have hit the free tier rate limit β wait 1 minute and try again
- The extension falls back to local templates automatically β you still get a result
- Click inside the chat input box first, then click β¨
- Some pages re-render the input β the text may appear briefly then disappear; type a character in the box to stabilize it
- The service worker went to sleep between your browser session and the next day
- Just click β¨ a second time β it reconnects automatically
- This should be rare since we use dual keep-alive (alarm heartbeat + port connection)
- This is normal if you used
about:debugging(temporary install). - To keep it permanently, you must use Firefox Developer Edition, build an
.xpiviaweb-ext, and disable extension signatures inabout:config. For most users, reloading viaabout:debuggingis recommended.
- Make sure you clicked Develop β Allow Unsigned Extensions in Safari's menu bar
- If Develop menu is missing: Safari β Settings β Advanced β check "Show Develop menu"
- If you manually selected a model like
gemini-2.5-proand it fails, it means your API key lacks access or quota for that specific model. - Switch the dropdown to Auto (Best available) β it will automatically hunt for a working model.
Pull requests are welcome! Areas especially needing help:
- π Adding support for new AI platforms (Perplexity, Mistral, Grok, etc.)
- π§ Improving prompt templates for specific domains
- π Internationalization (non-English prompts)
- π§ͺ Writing automated tests with
web-ext
To contribute:
- Fork the repo
- Create a branch:
git checkout -b feature/your-feature-name - Make your changes in the codebase
- Test in at least Chrome and Firefox
- Submit a pull request
MIT License β see LICENSE for details.
Free to use, modify, fork, and distribute. No attribution required (but appreciated!).
Built with β€οΈ for the AI community. Star β the repo if MetaPrompt helps you!