diff --git a/quartz/plugins/emitters/contentIndex.ts b/quartz/plugins/emitters/contentIndex.ts
index f24ae6dc..bcb1e307 100644
--- a/quartz/plugins/emitters/contentIndex.ts
+++ b/quartz/plugins/emitters/contentIndex.ts
@@ -18,12 +18,14 @@ export type ContentDetails = {
interface Options {
enableSiteMap: boolean
enableRSS: boolean
+ rssLimit?: number
includeEmptyFiles: boolean
}
const defaultOptions: Options = {
enableSiteMap: true,
enableRSS: true,
+ rssLimit: 10,
includeEmptyFiles: true,
}
@@ -39,7 +41,7 @@ function generateSiteMap(cfg: GlobalConfiguration, idx: ContentIndex): string {
return `${urls}`
}
-function generateRSSFeed(cfg: GlobalConfiguration, idx: ContentIndex): string {
+function generateRSSFeed(cfg: GlobalConfiguration, idx: ContentIndex, limit?: number): string {
const base = cfg.baseUrl ?? ""
const root = `https://${base}`
@@ -53,13 +55,17 @@ function generateRSSFeed(cfg: GlobalConfiguration, idx: ContentIndex): string {
const items = Array.from(idx)
.map(([slug, content]) => createURLEntry(simplifySlug(slug), content))
+ .slice(0, limit ?? idx.size)
.join("")
+
return `
${escapeHTML(cfg.pageTitle)}
${root}
- Recent content on ${cfg.pageTitle}
+ ${!!limit ? `Last ${limit} notes` : "Recent notes"} on ${
+ cfg.pageTitle
+ }
Quartz -- quartz.jzhao.xyz
${items}
@@ -102,7 +108,7 @@ export const ContentIndex: QuartzEmitterPlugin> = (opts) => {
if (opts?.enableRSS) {
emitted.push(
await emit({
- content: generateRSSFeed(cfg, linkIndex),
+ content: generateRSSFeed(cfg, linkIndex, opts.rssLimit),
slug: "index" as FullSlug,
ext: ".xml",
}),