4.2 KiB
Adding a Feed Post
The Feed section (/feed/) is for short announcements and social-media
style updates — things that don't warrant a full content/blog/
article, but are still worth publishing and syndicating via RSS.
Feed posts work exactly like blog posts (one markdown file per post, in its
own directory), but live under content/feed/ instead of content/blog/,
and are published under /feed/ instead of /blog/.
Both sections share a single combined RSS feed at
/rss.xml (see gatsby-plugin-feed in
gatsby-config.js), so a new Feed post automatically
appears in the RSS feed the next time the site is built — no extra
configuration required.
A visible "RSS Feed" link (pointing to /rss.xml) is rendered in two places
so visitors can discover and subscribe to it:
- The site-wide
Footer, under "Other Resources". - The "Subscribe" section of the shared
SideBar, shown on Blog and Feed list/post pages.
1. Create a new post directory
Create a new folder under content/feed/, named after the post slug (this
becomes the URL):
content/feed/my-new-announcement/index.md
2. Write the frontmatter + content
---
title: 'My New Announcement'
description: A one or two sentence summary used for SEO and RSS.
date: '2024-06-01 09:00:00'
author: 'Your Name'
authorLink: https://www.linkedin.com/in/yourprofile/
tags:
- Announcements
---
Your announcement content goes here, written in regular Markdown.
Notes on frontmatter fields:
| Field | Required | Notes |
|---|---|---|
title |
Yes | Post title, used on the page, in the sidebar and in the RSS item. |
description |
Yes | Short summary, used for SEO meta tags and the RSS item description. |
date |
Yes | Format 'YYYY-MM-DD HH:MM:SS'. Controls sort order and the archive. |
author |
Yes | Displayed under the post title. |
authorLink |
No | If set, the author name links out (e.g. to a LinkedIn profile). |
tags |
Yes | One or more tags. Used for the sidebar category list and RSS <category>. |
previewImg |
No | Optional relative path to an image in the same folder (e.g. './cover.png'). Feed posts commonly omit this since they're short-form. |
3. Add any images (optional)
If you use previewImg or reference images in the body, place the image
files in the same post directory and reference them with a relative path,
the same as for blog posts.
4. Build / preview
npm run develop
Your new post will be available at /my-new-announcement/, and will appear:
- On the
/feed/listing page (with pagination, sidebar archives and tag categories under/feed/...). - In the site search index.
- In the combined RSS feed at
/rss.xml, alongside blog posts.
How it differs from a Blog post
| Aspect | Blog | Feed |
|---|---|---|
| Content directory | content/blog/ |
content/feed/ |
| Listing page | /blog/ |
/feed/ |
| Year archive | /{year}/ |
/feed/{year}/ |
| Category page | /category/{tag}/ |
/feed/category/{tag}/ |
| Template | src/templates/blog-post.tsx, src/templates/blog-list.tsx |
src/templates/feed-post.tsx, src/templates/feed-list.tsx |
| RSS | Included in /rss.xml |
Included in /rss.xml |
Feed archive/category routes are prefixed with /feed/ specifically to avoid
colliding with the equivalent Blog routes, since both content types are
rendered by the shared src/templates/sidebar.tsx
component (via its basePath prop).