Skip to main content

Feed — /feed (HTML) and /feed.xml (RSS)

The feed has two sibling surfaces. /feed is a human-readable stream of recent blog posts and knowledge-base entries with previews. /feed.xml is a valid RSS 2.0 file that any RSS reader can subscribe to. They share the same source data; they differ in audience.

TL;DR/feed for humans (cards, summaries). /feed.xml for RSS readers (Feedly, Inoreader, NewsBlur, FreshRSS). Both auto-update every build.

What is in the feed

Both surfaces include:

  • Blog posts with a publish date in the last 90 days.
  • Knowledge-base entries with a publish or refresh date in the last 90 days.

Older items are excluded by default (the /blog and /learn indexes are the canonical browse surfaces for older content). The cap on 90 days keeps the feed focused on recency.

/feed (the HTML page)

A single page rendering the recent items as cards:

  • Title (English + Urdu).
  • Publish or update date.
  • 1-2 sentence excerpt.
  • Type badge (Blog / Knowledge / Changelog).
  • Click to open the full entry.

Sorted reverse-chronological. Latest at the top.

The page also has prominent links to /feed.xml (the RSS counterpart) at both the top and bottom.

/feed.xml (the RSS counterpart)

A standards-compliant RSS 2.0 file. The structure:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>ImtehanHub — Blog and Knowledge Updates</title>
<link>https://imtehanhub.aoneahsan.com</link>
<atom:link href="https://imtehanhub.aoneahsan.com/feed.xml"
rel="self" type="application/rss+xml"/>
<description>Recent posts and refreshes from ImtehanHub.</description>
<language>en-us</language>
<lastBuildDate>Mon, 11 May 2026 00:00:00 +0500</lastBuildDate>
<item>
<title>How to revise Class 10 Physics in 30 days</title>
<link>https://imtehanhub.aoneahsan.com/blog/how-to-revise-class-10-physics</link>
<guid>https://imtehanhub.aoneahsan.com/blog/how-to-revise-class-10-physics</guid>
<pubDate>Wed, 08 May 2026 12:00:00 +0500</pubDate>
<category>Blog</category>
<description>A practical 30-day plan for board-exam revision.</description>
</item>
...
</channel>
</rss>

The feed includes:

  • <atom:link rel="self"> (validates against W3C RSS validator).
  • <lastBuildDate> updated each build.
  • <category> per item.
  • Absolute URLs for <link> and <guid>.

How to subscribe in an RSS reader

Add the URL https://imtehanhub.aoneahsan.com/feed.xml to any RSS reader. Tested combinations:

ReaderURL pattern
Feedly"+ Add Content" → paste the URL
Inoreader"Add subscription" → paste
NewsBlur"Add Site" → paste
FreshRSS"Subscriptions" → "Add" → paste
Thunderbird"Subscribe" → "Add" → paste

Most readers refresh feeds every 1-3 hours. ImtehanHub's feed updates on every site deploy.

How the feed is generated

A build-time script reads recent blogPosts/ and aiKnowledgeBase/ documents from Firestore (via the Firebase Admin SDK as a devDep, which is why deploys carry a service-account key file marked private). It writes:

  • public/feed.xml (RSS).
  • public/feed.html (the human-rendered version, prerendered).

The same script writes public/sitemap.xml (URL list with lastmod per page).

This is the same postbuild-seo.mjs pipeline that prerenders 660+ static HTML pages. See the SEO docs (lands in Batch 6) for full mechanics.

Common questions

Why two URLs (/feed and /feed.xml)?

Different audiences. Humans want a readable cards page. RSS readers want a strict XML file. Serving both is cheap and avoids forcing humans through a raw XML download.

Can I get a chapter-specific feed?

Not yet. The roadmap includes per-chapter and per-class feeds (e.g. /feed/c9-physics.xml).

Can I get an Atom feed instead?

The current feed is RSS 2.0 only. Atom can be added if there is genuine demand.

Is the feed translated?

The feed is one combined feed, not language-split. Items use their original language. A future ?lang=ur parameter could filter to Urdu items.

How do I follow without RSS?

Sign in and opt in to push notifications on /app/profile. Push notifications fire for new blog posts (opt-in, not on by default). See Notifications.

Next