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 aggregates content from RSS and Atom feeds organised into categories. The feed list is open source and community-maintained, which means you can add new regional or topical categories or improve existing ones by submitting a pull request. The more high-quality feeds a category has, the better the coverage Kagi News can offer.

Feed files

There are two files that define the feeds powering Kagi News:
  • kite_feeds.json — Community-curated categories. This is where regional news (e.g. “Australia | Victoria”), local city news, and niche topical feeds live. Anyone can submit a PR to add or edit entries here.
  • core_feeds.py — Kagi-maintained core categories covering World News, Business, Technology, Science, Sports, Culture, Politics, and other broad topics. These are primarily maintained by the Kagi team for quality and consistency, but community pull requests with improvements are welcome.

Entry structure

Each entry in kite_feeds.json follows this shape:
{
  "Category Name": {
    "category_type": "region",
    "source_language": "en",
    "display_names": {
      "en": "Category Name",
      "fr": "Nom de catégorie"
    },
    "feeds": [
      "https://example.com/feed.rss",
      "https://another.com/feed.xml"
    ]
  }
}
FieldDescription
category_typeDescribes the kind of category: "region" for geographic areas, "city" for city-level coverage, or "topic" for subject-based categories.
source_languageThe language code for the majority of feeds in this category (e.g. "en", "de"). The exact value is not critical — it is used as a hint, not an enforcer.
display_namesA map of language codes to localised category names shown in the app UI.
feedsAn array of RSS or Atom feed URLs.
A real entry from the file looks like this:
{
  "Australia | Victoria": {
    "category_type": "region",
    "source_language": "en",
    "display_names": {
      "en": "Australia | Victoria",
      "de": "Australien | Victoria",
      "fr": "Australie | Victoria",
      "ja": "オーストラリア | ビクトリア",
      "zh-Hans": "澳大利亚 | 维多利亚州"
    },
    "feeds": [
      "https://www.abc.net.au/news/feed/5470430/rss.xml",
      "https://www.bendigoadvertiser.com.au/rss.xml",
      "https://starweekly.com.au/feed/"
    ]
  }
}

Adding a new category

A minimum of 25 feeds is required for a new category to surface in Kagi News. This threshold ensures sufficient source diversity for meaningful event coverage. The more high-quality feeds you include, the better the results will be.
1

Fork and clone the repository

Fork kagisearch/kite-public on GitHub, then clone your fork locally:
git clone https://github.com/<your-username>/kite-public.git
cd kite-public
2

Edit kite_feeds.json

Open kite_feeds.json and add a new top-level key for your category. Follow the entry structure shown above. Make sure the JSON remains valid — no trailing commas, proper nesting.
3

Add at least 25 feeds

Populate the feeds array with at least 25 working RSS or Atom feed URLs. Verify each one loads correctly and contains recent articles published daily or near-daily.
4

Run the validation script

Check your feeds for broken URLs, stale content, and duplicate entries before opening a PR:
npx tsx scripts/validate-feeds.ts
The script fetches each feed you added (it compares against the base branch in CI), checks for HTTP errors, stale dates, thin headline-only content, and duplicate URLs within a category. Errors and warnings are printed to stderr with the feed URL and reason.
5

Submit a pull request

Push your branch and open a pull request against main. In the PR description, explain the category, the region or topic it covers, and why the included sources represent good-quality coverage.

Adding feeds to an existing category

To add one or more feeds to a category that already exists, simply append the feed URL(s) to its feeds array and submit a pull request. No minimum count applies when adding to an existing category.
"feeds": [
  "https://existing-feed.example.com/rss",
  "https://your-new-feed.example.com/feed.xml"
]

Feed quality guidelines

  • RSS/Atom only. Kagi News does not scrape websites. Only include URLs that point to valid, publicly accessible RSS or Atom feeds.
  • Working and active. Each feed must return a valid response and have content published at least daily. Stale feeds (last item older than 90 days) are flagged by the validator.
  • Quality sources. Choose sources with substantive editorial content. Avoid low-quality, gossip, or SEO-farm content.
  • No banned hosts. Feeds from rsshub.app and nitter.net are blocked by the validator and will be flagged automatically.
Feeds can be in any language. Kagi News translates all content automatically, so a single category should include feeds across all relevant languages. Do not create separate categories for different language editions of the same region — for example, combine Swiss German and Swiss French sources into one “Switzerland” category. The source_language field should reflect the language used by the majority of feeds; its exact value is informational only.

Validation script reference

The scripts/validate-feeds.ts script validates all feeds in kite_feeds.json (or only the feeds changed in the current branch when run in CI). It checks for:
CheckSeverity
HTTP 404 responseError — exit code 1
Other non-2xx HTTP response or fetch errorError
Non-XML content typeError
Response is not RSS/Atom XMLError
Duplicate feed URL within a categoryWarning
No items in feedWarning
Thin/headline-only contentWarning
Latest item older than 90 daysWarning
Banned host (rsshub.app, nitter.net)Warning
Run it locally before submitting your PR:
npx tsx scripts/validate-feeds.ts
The script outputs a unified diff suggesting removal of feeds that return errors, which you can apply directly to clean up your changes.

Not comfortable with pull requests?

If you’d like to suggest feeds but don’t know how to open a pull request, open an issue on the repository and describe the category and feeds you want to add. The Kagi team or a community contributor can incorporate your suggestion.

Build docs developers (and LLMs) love