A help center that tells you what to write next.

Help Keeper is the open-source help site for a small product or shop. Write articles in Markdown, give customers a search that forgives typos, and read a weekly list of what they searched for and did not find. Below is the search the server uses, running on sample articles you can replace. Everything on this page runs in your browser; nothing you type is uploaded.

Try the search and the gap report

Content gaps

Searches no article answers in full, most frequent first. These are your next articles.

The server uses this exact code. It ranks with BM25 over the title, headings, tags and body, stems words, and matches words you have not used to the closest word you have. It is classic search, not a language model.

Why someone would use this

TodayCatchHelp Keeper
Help Scout Docs, Document360, Intercom Articles, HelpDocsMonthly fees, often per author; your content and search data live with themYour server, unlimited articles, no seat fee
Docusaurus, MkDocs, a static docs siteNo customer feedback, and no idea what people searched for and did not findVotes, comments and a content-gap report built in
A Notion or Google Docs pageWeak search, no analytics, awkward to brand or embedSearch, collections, clean addresses and a sitemap

Honest limits: one admin key (no separate editor logins or approval workflow), no translations or article versions, no image uploads (link to https images), and search is keyword-based rather than semantic. For a large team or a big documentation set, use a full documentation platform.

Run it yourself

git clone https://github.com/Duncan-Haywood/oss-monorepo && cd oss-monorepo/ventures/help-keeper
node --test
ADMIN_KEY=$(openssl rand -hex 16) SITE_NAME="Acme Help" CONTACT=help@acme.com node server.mjs

Open http://localhost:8080/admin (any user name, ADMIN_KEY as the password), write or import articles, and link to the site from your product. One-click Render deploy, Fly.io and Docker are in the README.

Questions

Why not just use Help Scout Docs, Document360, Intercom Articles or GitBook?

Those are polished and the right call if you need a team of editors with separate logins, translations, versioning workflows or an AI chatbot. They charge by the month, often per author, and your content and search data live on their servers. Help Keeper is one small Node server in your own account: Markdown articles, collections, ranked search that forgives typos, helpful votes and a report of what people searched for and did not find, with no per-seat fee. It suits a product or shop with a few dozen to a few hundred articles and one or two writers.

What is the content-gap report?

Every search is counted without any identity. The report lists searches that matched none of your articles in full, and searches people ran three or more times but rarely opened a result for, biggest first, each with a link to start an article with that title. It also lists articles readers marked not helpful and the comments they left. It tells you what to write next, which is usually the cheapest way to reduce support email.

How does the search work, and is it AI?

It is classic ranked search, not a language model. Words are reduced to their stems, scored with BM25 across the title, headings, tags and body (title matches count most), articles that match every word outrank partial ones, and words that are not in your articles are matched to the closest word you do use, so a typo like pasword still finds password. Everything runs on your server with no outside service.

Can I use it with Support Desk or my own site?

Yes. Add your support email or contact link in the admin and every no-result page and article ends with a Still stuck link. A JSON endpoint, /api/search?q=, returns titles, links and excerpts and allows cross-origin requests, so you can put a search box in your app or suggest articles in your support replies.

Is it good for SEO?

Published articles have clean addresses, a sitemap, a robots file, a canonical link when you set PUBLIC_URL, a description taken from the article and Article structured data. Search result pages and draft previews are marked noindex. Pages are plain server-rendered HTML with no scripts.

What does it store?

Your articles, aggregate counts of normalized search words with no identity (queries that look like an email address, a URL or a long number are dropped), view and vote counts, and short comments from readers who say an article was not helpful, in one JSON file you control. IP addresses are held in memory only for rate limiting. You are the operator and responsible for your privacy notice.

Part of the self-hosted SaaS stack: 27 open-source tools you run yourself.