Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kagisearch/kite-public/llms.txt

Use this file to discover all available pages before exploring further.

Kagi News organizes every story into a category. Categories are backed by collections of RSS feeds, and the quality and breadth of those feeds directly determines how well an event is covered. There are two kinds of categories: core categories maintained by the Kagi team, and community categories contributed by the public via pull request.
Kagi News only uses publicly available RSS feeds — it does not scrape websites. Every feed in both core_feeds.py and kite_feeds.json must be a valid, publicly accessible RSS or Atom URL.

Core Categories

Core categories are defined in core_feeds.py and are maintained directly by the Kagi team to ensure consistent quality across the most essential news verticals. They form the foundation of every daily batch and are always present in the app. Current core categories include:
  • World News
  • Business
  • Technology
  • Science
  • Sports
  • Culture
  • Politics
  • And other specialized topics
Community contributions to core feeds are welcome via pull request, but editorial review is stricter than for community categories.

Community Categories

Community categories are defined in kite_feeds.json and are open to anyone who wants to add regional, local, or topical news coverage. Every community category is a top-level category in the app — there is no hierarchy. Common types of community categories include:
  • Local (city) — city-level news (e.g., “UK | London”, “USA | Houston”)
  • Regional (region) — country or sub-national region news (e.g., “Australia | Victoria”, “Canada | Quebec”)
  • Topical (topic) — subject-matter categories (e.g., AI, Health, Agriculture, 3D Printing)
To contribute a new category or improve an existing one, submit a pull request editing kite_feeds.json. If you are not familiar with pull requests, you can open an issue instead and share the feeds you want added.

The kite_feeds.json Structure

Each key in the file is a category name. The value is an object with the following fields:
{
  "Australia | Victoria": {
    "category_type": "region",
    "source_language": "en",
    "display_names": {
      "en": "Australia | Victoria",
      "fr": "Australie | Victoria",
      "de": "Australien | Victoria",
      "ja": "オーストラリア | ビクトリア"
    },
    "feeds": [
      "https://www.theage.com.au/rss/feed.xml",
      "https://www.abc.net.au/news/feed/5470430/rss.xml",
      "https://www.theguardian.com/australia-news/victoria/rss"
    ]
  }
}

Field Reference

FieldTypeDescription
category_type"region" | "topic" | "city"Classifies the kind of category. region is a geographic area larger than a city; city is a metropolitan area; topic is a subject-matter category.
source_languageISO 639 language codeThe language used by the majority of feeds in the category. This is informational — its exact value is not critical because all content is translated automatically.
display_namesObjectLocalized display names for the category keyed by language code. These are the names shown to users in the UI when they have selected a given language.
feedsArray of stringsOne or more RSS/Atom feed URLs. All feeds must be publicly accessible and contain recent (ideally daily) content.

Multi-Language Feeds

Feeds can be in any language. Kagi News automatically translates all article content and AI-generated fields, so a single category can and should contain feeds in multiple languages. Do not create separate categories for different language editions of the same region (for example, do not split “Switzerland” into a German-language category and a French-language category — keep all Swiss feeds in one category). The source_language field should reflect the dominant language of the feeds, but it does not gate translation.

Minimum Feed Requirement

A community category must have at least 25 feeds before it appears in Kagi News. The more high-quality feeds a category has, the more comprehensively events in that region or topic will be covered. When adding feeds, prioritize:
  • Sources with daily or near-daily publication frequency
  • High-quality journalism — avoid low-quality, gossip, or SEO-driven sites
  • Diverse outlets to maximize multi-source clustering
  • Feeds that actually work (check that the URL returns valid RSS/Atom XML)
This threshold exists to ensure that every category that surfaces in the app has enough source diversity to produce well-clustered, multi-perspective stories. A category with only a handful of feeds would produce thin coverage that does not meet the quality bar Kagi News aims for.

Localized Display Names

The display_names object allows a category to show its name in the user’s selected language. The key is a BCP 47 language code (e.g., "en", "fr", "zh-Hans", "zh-Hant") and the value is the translated category name. When a language is not present in display_names, the app falls back to the English name.
"display_names": {
  "en": "Canada | Quebec",
  "fr": "Canada | Québec",
  "de": "Kanada | Québec",
  "ar": "كندا | كيبيك",
  "ja": "カナダ|ケベック",
  "zh-Hans": "加拿大 | 魁北克"
}

Build docs developers (and LLMs) love