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.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 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 incore_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 Categories
Community categories are defined inkite_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)
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:
Field Reference
| Field | Type | Description |
|---|---|---|
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_language | ISO 639 language code | The 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_names | Object | Localized 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. |
feeds | Array of strings | One 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). Thesource_language field should reflect the dominant language of the feeds, but it does not gate translation.
Minimum Feed Requirement
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
Thedisplay_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.
Related
- See Contributing Feeds for a step-by-step guide to submitting a new community category.