Prompt Buttons for AI Chats

I no longer type most of the things I ask ChatGPT or Claude for. Prompts for article briefs, ready-made meta tags, keyword clustering, proofreading: they are all saved and waiting. For a long time they lived in a Google Doc, and every time it went the same way: open the doc, scroll, find the prompt, copy it, switch back to the chat tab, paste.

That added up to dozens of round trips a day. It annoyed me enough that I put the buttons right on the chat page. First it was a Tampermonkey script (I mentioned it in an article on automating SEO tasks, in Ukrainian), and later it grew into a standalone Chrome extension.

Below is how to use it and where everything is configured. The first six sections are enough to get started. The rest covers backups, moving buttons between chats, sound notifications, and the other settings.

Contents:

  1. What the extension is
  2. Which chats it works on
  3. Installation
  4. The control panel
  5. Creating a button
  6. How a button works
  7. Dragging and the button menu
  8. The settings window
  9. Which settings are per chat
  10. Security and privacy
  11. Troubleshooting
  12. FAQ
  13. Final thoughts

What the extension is

Prompt Buttons for AI is a free Chrome extension. Once it is installed, a small panel appears on the AI chat page, and you create buttons from it. Each button stores the text of a prompt.

You can give a button a name and a color, put it in a group, and place it anywhere on the screen.

Which chats it works on

The extension currently supports 13 chats:

ChatAddress
ChatGPTchatgpt.com
Claudeclaude.ai
Geminigemini.google.com
Grokgrok.com and Grok inside X (x.com/i/grok)
Perplexityperplexity.ai
Microsoft Copilotcopilot.microsoft.com
Poepoe.com
Mistral Le Chatchat.mistral.ai
DeepSeekchat.deepseek.com
Meta AImeta.ai
You.comyou.com
Qwen Chatchat.qwen.ai
Kimikimi.com

It does not run on any other sites, because the extension has no access to them.

Every chat has its own set of buttons. That is deliberate: I use Perplexity to find sources and Claude for long texts, so I need different prompts in each. If a button is useful in two chats, you can copy it over. More on that in the migration section.

Installation

You install the extension from the Chrome Web Store.

  1. On the extension page, click “Add to Chrome”.
  2. The browser asks you to confirm. Accept.
  3. To keep the icon on the toolbar, click the puzzle piece next to the address bar and pin the extension.

There is nothing to sign up for. The extension has no server, so there is nothing to log in to.

The icon shows whether the extension can see the current page. It is orange on the chats from the list above and gray on every other site.

If a chat is open but the icon is gray, reload the tab. This happens with tabs that were opened before the extension was installed.

The extension picks its interface language from your browser settings: Ukrainian if your browser is set to Ukrainian, English for everything else. You can change it on the “Other settings” tab in the settings.

The control panel

Open any chat from the list. A panel with icons appears at the top of the page: the plus (1) creates a new button, the sliders (2) open the settings, and the eye (3) hides or shows all buttons.

The eye came in handy when I started sharing my screen on calls. Nobody needs to see the buttons there, so I hide them with one click before I share and turn them back on after the call. While the buttons are hidden, the eye on the icon is crossed out. That state survives a page reload.

You can also move the panel itself. Hold the right mouse button on the panel, drag, and release. The position is remembered.

Why the right button? The left button is for clicking the icons, and if it also dragged the panel, the panel would keep sliding away every time a click was slightly off. Prompt buttons work the same way.

Chat pages are redrawn all the time: you start a new conversation, jump into your history. If the panel disappears when that happens, the extension puts it back on its own.

Creating a button

I click the plus and a form opens.

  1. Button name is the label on the button. I keep them short: “Title+Desc”, “Clusters”. The extension will not let you save two buttons with the same name in one chat. It ignores capitalization, so “FAQ” and “faq” count as the same name.
  2. Text to insert is the prompt itself. Any length works, and line breaks are preserved.
  3. Button color and text color. Picking the background color is enough; the text color adjusts automatically so it stays readable. If you don’t like it, change it by hand. The extension remembers the color of your previous button and pre-fills it in the next one, which is handy when I make several buttons for the same project.
  4. Group is optional. As you start typing a name, suggestions from your existing groups appear. If you enter a new name, a new group is created.

The preview is on the right. It updates instantly as you change the name or the color.

There are two save buttons. “Save” keeps the form open in case I want to tweak something else. “Save and close” closes it. A button without a name or without prompt text will not be saved, and the extension asks you to fill in the fields.

The new button appears under the panel. After your very first button, a one-time tip pops up on how to drag it and how to open the action menu.

How I write prompts for buttons

I write a prompt for a button a little differently from a regular one. Whatever changes from run to run (a query, a URL, a text) goes at the end. The last line says something like “Target keyword: ”. After the paste, the cursor is exactly where I need to keep typing.

I split the colors by task type: yellow for keywords, purple for texts, gray for utility buttons. After a week you find the right button by color alone.

How a button works

The first click pastes the prompt into the input field (1). The label on the button changes to “Send”, and the background gradually gets lighter. That is a timer (2).

If you click a second time while the timer is running, the extension presses the chat’s send button for you.

If you don’t click again, the button returns to normal after 5 seconds and the prompt stays in the field. You can change the timer duration in the settings, from 1 to 60 seconds.

In practice it looks like this: I copy a query from a semantics spreadsheet, click “Title+Desc”, press Ctrl + V, and click again. The whole thing takes a few seconds.

If 5 seconds isn’t enough to paste your data, increase the timer. And if you usually finish the prompt by hand and send it with Enter, shorten the timer so the button doesn’t stay stuck in “Send” mode.

Chats build their input fields differently: some use a plain textarea, others a rich-text editor. The extension knows where to find the input field and the send button for each chat. Multiline prompts are pasted with their line breaks intact.

Sometimes a chat updates its layout and the extension can’t find the send button. In that case it tries pressing Enter in the input field. If there is no input field on the page at all, you will see the message “Input field not found on this site”. Let me know if it happens in a regular conversation.

Dragging and the button menu

Buttons are dragged the same way as the panel: right mouse button, drag, release. The position is kept after a reload.

If you just right-click a button without dragging, four icons appear to its right.

  1. Pencil opens the same form as when you create a button, but already filled in. The button’s position on the screen doesn’t change after you edit it.
  2. Trash can deletes the button, but the extension asks for confirmation first. If it was the last button in a group, the group disappears from the list too.
  3. Copy creates a duplicate slightly below the original, with “copy” added to the name. If that name is already taken, a number is added. This is how I make prompt variations: copy, then change a couple of lines.
  4. Arrow moves the button to another chat. I check the chats I need and click “Apply”. The button shows up in the selected chat when I open or reload its page.

To hide the menu, right-click again. It also hides by itself about a second after the cursor leaves the icons.

The settings window

Settings open from the sliders icon on the panel. If the window covers something, you can move it by dragging its title with the left mouse button.

On the Buttons, Groups, and Backup tabs, changes apply only after “Save” or “Save and close”. Until then they are a draft. Click “Cancel” and everything goes back to how it was.

Buttons tab

This is the list of buttons in the open chat, with their names and groups. The tab is for actions on several buttons at once.

  1. I check the buttons (or use “Select all”). Above the list you can see how many are selected.
  2. I click “Change group” and pick a group, or “Delete selected”.
  3. I save.

When you have dozens of buttons with no system to them, sorting them here takes about a minute. It is also a convenient place to clear out old prompts when a project ends.

Groups tab

Here you can create an empty group, for example for a new project. Renaming applies to all the buttons in the group right away.

There are two kinds of deletion, and it’s worth not mixing them up. “Delete group” removes only the group; its buttons stay, just without a group. To remove the group’s buttons along with it, use the other action, “Delete all buttons”.

The checkbox next to a group controls whether its buttons are visible on the page. You see the result immediately, but it only sticks after you save.

Backup

While you have five buttons, nobody thinks about backups. When you have fifty, losing them hurts. This tab has two blocks: manual export/import and automatic backup.

“Export settings” downloads a JSON file with all the buttons of the current chat: texts, colors, groups, positions on the screen. The file name looks like this:

magic-buttons_claude.ai_2026-09-23_18-40-12_manual.json

“Import settings” takes the buttons from such a file and adds them to the chat that is currently open. The file doesn’t have to come from the same chat. I, for example, exported buttons from Claude and imported them into DeepSeek. That is also how you move buttons to another computer.

If some of the buttons in the file already exist in the chat, the extension shows the number of matches and asks what to do:

OptionWhat happens
Skip duplicatesOnly new buttons are added
Update existingNo duplicates; existing buttons are updated with the data from the file
Add copiesEverything is added, even buttons that already exist
CancelThe import is canceled

Buttons count as identical if they have the same prompt text and the same group. After the import, the extension tells you how many buttons were added, updated, and skipped.

You turn on automatic backup like this:

  1. I click “Change folder” and choose a folder on my disk.
  2. Chrome asks for permission to write to that folder. Without it, files can’t be saved there, so I allow it.
  3. I check which actions should trigger a copy, and save.

A copy can be created once a day (the first time you open the chat that day) or after a specific action: creating, editing, copying, or deleting a button, or importing. Mine are set to “once a day” and “after deleting a button”.

A few caveats. Automatic backup doesn’t work without a selected folder, though manual export stays available. The interface shows only the folder name, not the full path, because Chrome doesn’t reveal the disk structure to extensions. The browser sometimes resets folder permission, and then you have to choose the folder again. The “Reset” button unlinks the folder completely.

One more thing: automatic backup is configured separately in each chat. You can point them all to the same folder, and the files won’t get mixed up because the domain is in the file name.

I chose a folder that Google Drive syncs, so the copies go to the cloud automatically. The extension itself sends nothing over the network; the upload is done by the Google Drive client.

Migration

This tab is for when you want the buttons from one chat to be available in another as well.

  1. I open a chat that already has the buttons and go to the “Migration” tab.
  2. I check the chats to move them to (several are allowed) and click “Migrate”.
  3. In the list, I check the buttons and click “Continue”.
  4. I open the target chat. If it is already open, I reload the page.

Once the target chat loads, the buttons appear with their colors, group, and position on the screen. The extension tells you how many buttons were added, updated, and skipped. If identical buttons already exist there, it asks what to do with them, just like during an import.

The extension won’t move the same button to the same chat twice. It remembers what it has already migrated and what you decided, even if that was “Cancel”. It won’t ask again after a page reload.

For a single button, the arrow in its menu is more convenient. And migration can’t reach another computer or another Chrome profile; for that, the only way is export and import.

Other settings

Language. Ukrainian or English. It is shared across all chats, so if you change it in ChatGPT, Claude gets the new language too.

Seconds for second click. This is the same second-click timer, from 1 to 60 seconds, 5 by default.

Play a sound when the answer finishes. When the model finishes its answer, the extension plays a signal. I find it useful on long requests while I’m answering email in another tab.

The sound is off by default. You turn it on with a checkbox, then pick one of six options: short beep, double beep, soft bell, bright chime, success chord, or click-pop. Volume is set with a slider from 0 to 300%. Above 100% the slider turns red and a warning says it may be too loud. When you change the sound or the volume, the signal plays right away, so you can tune it without waiting for a chat response.

One caveat: the browser doesn’t let a page play sound until you have interacted with it. So the signal works if you have clicked on the page or pressed a key at least once after opening the tab. That is usually the case, since you sent the prompt somehow.

Which settings are per chat

Almost everything is stored separately for each chat. Only the language is shared.

WhatWhere it applies
Buttons, their texts, colors, and positions on the screenSeparately for each chat
Groups and their visibilitySeparately for each chat
Control panel positionSeparately for each chat
Hide all buttons (the eye)Separately for each chat
Second-click timerSeparately for each chat
Sound, its type, and volumeSeparately for each chat
Backup folder and backup triggersSeparately for each chat
Interface languageShared

In Gemini, where I run long research tasks, my sound is loud. DeepSeek answers fast, so the sound is off there.

Security and privacy

Prompts sometimes contain work information you wouldn’t want to hand to anyone. So here is exactly what happens with your data.

The extension has no server and no accounts. Your buttons, prompts, and settings never leave the browser. There is no analytics, advertising, or tracking in the code. The extension doesn’t load code from the network: only what is in its own files runs, and those are reviewed by the Chrome Web Store. It doesn’t read your conversations with the chat.

For the sound, it doesn’t need the answer text either. It watches the stop-generation button: while it is on the page, the chat is still answering, and when it disappears, the signal plays.

The extension has two permissions, plus site access:

PermissionWhy it is needed
storageTo save buttons and settings in the browser
tabsTo tell whether a tab has one of the listed chats open, so the icon can switch between orange and gray
Site accessOnly the 13 chats from the list. The extension doesn’t ask for access to all sites (<all_urls>)

You can check this yourself: chrome://extensions → Prompt Buttons for AI → “Details”.

Your data lives in two places, both on your computer. The first is the chat site’s localStorage, which is where buttons are loaded from when a page opens. The second is the extension’s own storage (chrome.storage.local), which holds a safety copy. If you clear site data in Chrome, the buttons in localStorage disappear, but the next time you open the chat, the extension restores them from its own storage.

Uninstalling the extension is a different story. Chrome then erases its storage too. Before you uninstall, reinstall, or move to another computer, make an export.

Don’t put passwords, tokens, or API keys in buttons. localStorage belongs to the chat’s domain, which means it is technically accessible to the site’s own scripts. That doesn’t matter for prompts, since you send them to that chat anyway, but an API key shouldn’t end up there.

A JSON backup is plain text, and every prompt in it is visible. Before you send the file to a colleague, take a look at what’s inside.

There is no sync between devices, because there is no server. To move buttons, use export and import. You can revoke access to the backup folder with the “Reset” button on the backup tab or in Chrome’s site settings.

Troubleshooting

Chats update their interfaces regularly, so something may break from time to time. Here is what I would check first:

ProblemWhat to do
The panel is missing from the pageReload the tab. If the extension icon is gray, the site isn’t supported
“Input field not found on this site”Switch to a regular conversation: service pages of a chat (settings, library) have no input field. If it keeps happening in a conversation too, let me know
The text was pasted, but the second click doesn’t send itCheck whether the send button in the chat itself is active. It is blocked while a file is uploading or the previous answer is being generated
The buttons disappearedCheck the eye on the panel, then the checkboxes on the Groups tab. If the buttons aren’t in the list on the Buttons tab either, restore them from a backup
A button is outside the windowMaximize the browser and drag the button closer to the center
No soundSound is turned on separately for each chat. Then check the volume in the settings and whether the tab is muted. And click on the page at least once after opening it
Automatic backup files don’t appearChoose the folder again: the browser may have reset the permission
“Extension context invalidated” in the consoleThis is normal after the extension updates. Reload the chat page

FAQ

Is the extension paid?
No. Enjoy!

Does it work in Edge, Brave, and Opera?
These browsers are Chromium-based and can usually install extensions from the Chrome Web Store. I test in Chrome. If a browser doesn’t support folder selection, automatic backup won’t work and you will see a message about it. Manual export will still work.

How many buttons can I create?
There is no limit. The only thing you run into is screen size, which is what groups and the eye are for.

I double-clicked by accident and the message was sent. How do I avoid that?
Set the timer to 1–2 seconds. Then an accidental second click almost always comes too late.

My chat isn’t on the list.
Tell me which one it is. To add a chat, I need to specify where the input field and the send button are on its page, and that is doable.

Final thoughts

I haven’t counted how much time the buttons have saved me. But I definitely don’t want to go back to a Google Doc full of prompts. What matters most is that it saves my nerves, especially these days.

Small repetitive actions like these exist in almost every workflow. Earlier, for example, I set up text autoreplacement with Espanso (in Ukrainian) for the phrases I type every day.

If you find a bug, the buttons don’t work in some chat, or a feature is missing, message me on Telegram or LinkedIn. Messages like that are how I keep improving the extension.

And do subscribe to my channel, SEO Okun. Every now and then I post something either useful or silly there. And I don’t spam.