back

AnchorGPT (ChatGPT Pins)

Pin important assistant messages in ChatGPT so you can jump back to them later. A lightweight Chrome extension built with React 18 and Manifest V3.

Features

  • Pin/unpin any assistant message in ChatGPT with a small πŸ“Œ button
  • Quick-jump sidebar: hover the right edge to reveal your pinned steps
  • Click a pin to scroll to and briefly highlight the original message
  • Pins are stored per chat and synced via chrome.storage.sync
  • Safe Shadow DOM UI, no CSS bleed; zero external network requests
  • Built on React 18 + Webpack 5; Manifest V3 compatible

How it works

  • A content script injects a Shadow DOM app into ChatGPT pages and watches for new assistant messages.
  • Each assistant message gets a πŸ“Œ button; clicking it toggles a pin with id, label, and timestamp.
  • Pins are saved under the current chat id (parsed from the URL) in chrome.storage.sync.
  • A minimal sidebar appears when you move your mouse to the right edge; use it to navigate or clear pins for the current chat.

Prerequisites

  • Node.js β‰₯ 16
  • Yarn or npm
  • Google Chrome (MV3-supported)

Setup

git clone <your-repo-url>
cd chatgpt-pins
yarn   # or: npm install

Build

Create a production build into dist/:

yarn build

Development (watch rebuilds)

Rebuild on file changes into dist/:

yarn dev

Then keep chrome://extensions open and click Reload on the extension after changes. (Manifest V3 does not auto-reload content scripts.)

Load in Chrome

  1. Open chrome://extensions
  2. Enable Developer mode (top-right)
  3. Click β€œLoad unpacked” and select the dist/ folder
  4. Open ChatGPT and you should see small πŸ“Œ buttons on assistant messages

Usage

  • Click the πŸ“Œ on any assistant message to pin/unpin it
  • Hover the far right edge of the window to reveal the sidebar
  • Click a pin to jump to the original message (it will briefly highlight)
  • Use the β€œClear” button in the sidebar to remove all pins for the current chat

Scripts

  • yarn dev – watch and rebuild into dist/
  • yarn build – production build into dist/
  • yarn zip – package the current dist/ as extension.zip

Permissions & Privacy

  • Permissions: storage only
  • Data: Pins are stored in chrome.storage.sync under a single key; no external requests; no analytics

Privacy Policy

Effective date: 2025-08-09

AnchorGPT (ChatGPT Pins) is a client-side Chrome extension that helps you pin and quickly navigate to assistant messages in ChatGPT. We care about your privacy and designed this extension to operate without sending any data to external servers.

Information We Collect

The extension stores only the minimal data necessary to provide pinning and navigation features:

  • Pinned item metadata (id, label, timestamp)
  • Associated chat identifier (derived from the page URL) used as the storage key

How Your Data Is Stored

Pins are saved using chrome.storage.sync, which may sync across your Chrome profiles if you are signed in and sync is enabled. Data is stored locally by your browser and is not transmitted to any third‑party servers by this extension.

Data Sharing

We do not sell, rent, or share your data with third parties. The extension does not include analytics, tracking pixels, or external network requests.

Data Retention and Control

  • You can remove individual pins or clear all pins for a chat from the sidebar.
  • Uninstalling the extension will remove its stored data from your browser.

Children’s Privacy

AnchorGPT is intended for general audiences and does not knowingly collect personal information from children.

Changes to This Policy

We may update this policy to reflect improvements or legal requirements. Material changes will be reflected in the effective date above.

Contact

Questions or concerns? Contact us at hello@chethiya.me.

Compatibility

Chrome (MV3). Likely compatible with Edge/Brave/Arc. Firefox is not supported (MV3 differences).

Project structure

chatgpt-pins/
β”œβ”€ public/
β”‚  └─ manifest.json           # MV3 manifest (name: AnchorGPT)
β”œβ”€ src/
β”‚  β”œβ”€ content.jsx             # Injects the app into ChatGPT pages
β”‚  β”œβ”€ background.jsx          # Service worker (MV3)
β”‚  β”œβ”€ popup.{html,jsx}        # Browser action popup
β”‚  β”œβ”€ ui/                     # Shadow DOM UI (Sidebar, Pins, etc.)
β”‚  └─ lib/                    # DOM helpers, observer, storage, router, styles
β”œβ”€ webpack*.js                # Webpack base/dev/prod configs
└─ dist/                      # Build output (load this in Chrome)

Tech stack

  • React 18, React DOM 18
  • Webpack 5, Babel
  • Manifest V3

License

ISC

Hello