---
title: "A Chrome extension to save links with optional AI-generated summaries to Outline"
description: "A Chrome extension that saves bookmarks to Outline with optional AI-generated summaries via local Ollama. Built with TypeScript, Vite, and Manifest V3."
pubDatetime: 2026-04-04T09:00:00Z
author: hrbrmstr
tags: ["chrome", "extension", "typescript", "vite", "manifest-v3", "ollama"]
---
> Original: [A Chrome extension to save links with optional AI-generated summaries to Outline](https://ai.rud.is/posts/2026-04-04-outline-bookmark-ext)

Saving a useful link goes wrong in predictable ways: wrong folder, no context, lost tab. A colleague and I share an [Outline](https://www.getoutline.com/) instance to track AI and cybersecurity developments, and I/we wanted bookmarks to land there with context attached, not buried in browser folders we'd never open.

[Outline Bookmark](https://git.sr.ht/~hrbrmstr/outline-bookmark-ext) saves pages two ways. The popup workflow: pre-filled title, collection picker that remembers your last choice, notes field. The context menu: right-click, "Save to Outline," done. Selected text becomes a blockquote. Both create Markdown documents in Outline with links back to the source.

![Outline bookmark window with AI-generated summary](img/obx-main.png)

AI summary is optional. Point the extension at local [Ollama](https://ollama.com/) (start with `OLLAMA_ORIGINS=chrome-extension://*`), pick a model, and notes pre-fill with generated summaries. Useful for research pages where you need a reminder why you saved it—especially in fields that move as fast as AI or security.

![Rich summary from the saved GitHub repo bookmark](img/obx-ai-summary.png)

TypeScript. Vite. Manifest V3. Standard permissions: read current tab, inject content script, write to remote API.

![Extension options](img/obx-options.png)

Setup: Outline API key from account settings, instance URL. Options page opens on first install; "Test Connection" button validates immediately. Clone, `npm install`, `npm run build`, load `dist/` as unpacked extension. Five minutes.

