---
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.


```json
[
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://ai.rud.is/posts/2026-04-04-outline-bookmark-ext",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://ai.rud.is/posts/2026-04-04-outline-bookmark-ext"
    },
    "headline": "A Chrome extension to save links with optional AI-generated summaries to Outline",
    "datePublished": "2026-04-04T09:00:00Z",
    "description": "A Chrome extension that saves bookmarks to Outline with optional AI-generated summaries via local Ollama. Built with TypeScript, Vite, and Manifest V3.",
    "url": "https://ai.rud.is/posts/2026-04-04-outline-bookmark-ext",
    "keywords": [
      "chrome",
      "extension",
      "typescript",
      "vite",
      "manifest-v3",
      "ollama"
    ],
    "author": [
      {
        "@type": "Person",
        "name": "hrbrmstr",
        "url": "https://rud.is"
      }
    ],
    "publisher": {
      "@type": "Organization",
      "name": "hrbrmstr",
      "url": "https://ai.rud.is/",
      "sameAs": [
        "https://mastodon.social/@hrbrmstr",
        "https://bsky.app/profile/hrbrmstr.bsky.social",
        "https://github.com/hrbrmstr",
        "https://sr.ht/~hrbrmstr"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "item": {
          "@id": "https://ai.rud.is/",
          "name": "ai.rud.is"
        }
      },
      {
        "@type": "ListItem",
        "position": 2,
        "item": {
          "@id": "https://ai.rud.is/posts/2026-04-04-outline-bookmark-ext",
          "name": "A Chrome extension to save links with optional AI-generated summaries to Outline"
        }
      }
    ]
  }
]
```
