Reference → Blog Reference

Blog Reference

Taxonomy, RSS, sitemap, metadata, and related-posts logic for SGEN Blog.

Blog in SGEN is the time-series content surface built into SG-Core. Each post is a dated record. Posts are organized by categories and tags. Categories form a hierarchy; tags are free-form. The engine emits RSS for every category and for the full blog, generates sitemap entries for every published post and category archive, and surfaces related posts based on shared taxonomy. This page is the structural reference for how all of those systems work.

Blog — Post List

Published · Draft · Scheduled
+ Add New
TitleCategoryTagsStatusPublished
Brewing Guide 2026: Extraction Ratios ExplainedBrewing Guidesextraction, espresso, techniquePublished2026-05-20
New Roast: Ethiopia Yirgacheffe NaturalProduct Newsyirgacheffe, new-arrival, single-originPublished2026-05-14
How We Source: Direct Trade at OriginOur Storysourcing, direct-trade, sustainabilityPublished2026-05-07
Canvas Tote Bag — Now in SlateProduct Newsmerchandise, tote, new-arrivalScheduled2026-06-01 09:00
Behind the Roast: Guatemala AntiguaBrewing Guidesguatemala, roast-profile, filterDraft
Q2 2026 Subscriber Reportinternal, quarterlyDraft

What is this for?

Read this page when you need to know:

  • how blog categories are structured and how slugs are assigned,
  • how tags differ from categories and when to use each,
  • how RSS feeds are generated and what they include,
  • which posts and archives appear in the XML sitemap,
  • how related-posts logic selects content,
  • what per-post metadata fields are available,
  • or how category and tag archives are routed.

For operator how-to — creating categories, writing posts, scheduling, setting featured images — open SG-Admin Blog. For the underlying post-type model, open Pages & Posts.


Scope

This reference covers:

  • the category taxonomy (hierarchy, parent/child, slug rules, archive routing),
  • the tag taxonomy (free-form, flat, slug rules, archive routing),
  • RSS feed generation (per-category feeds, full-blog feed, what is included),
  • sitemap inclusion rules (published posts, category archives, tag archives),
  • related-posts logic (algorithm, weighting, override),
  • per-post metadata fields (excerpt, featured image, scheduling, canonical URL, custom meta),
  • and category vs tag decision guidance.

This reference does not cover:

  • the SG-Builder Posts component that renders blog content in templates (that lives in SG-Builder documentation),
  • operator UI flows for creating and managing posts (that lives in SG-Admin Blog),
  • or per-release changes to blog behavior (those appear in the Changelog).

Where to find it

Blog is accessed from the sidebar under SG-Core > Blog. The Posts list is the default view. Category management is under SG-Core > Blog > Categories. Tag management is under SG-Core > Blog > Tags.

The RSS feed URL for the full blog is:

https://<your-site-domain>/feed/

Per-category RSS feed URL:

https://<your-site-domain>/category/<category-slug>/feed/

Reference

Categories

Categories are the primary hierarchical taxonomy for blog posts. Every post should carry at least one category. Categories support a parent/child hierarchy up to unlimited depth, though more than two levels (top-level → sub-category) is uncommon in practice.

PropertyBehavior
HierarchyParent/child, unlimited depth
SlugDerived from category name on creation. Editable. Lowercase, hyphen-separated.
Archive URL/category/<slug>/ for top-level; /category/<parent-slug>/<child-slug>/ for nested
Default category"Uncategorized" exists by default. Posts saved without a category are assigned to Uncategorized.
Post countDisplayed on the category admin list. Excludes draft and private posts.
DeletionDeleting a category reassigns its posts to the configured fallback category (Uncategorized by default).
Slug rules

Category slugs are generated from the category name on creation. Spaces become hyphens. Characters outside the URL-safe character set are stripped. Casing folds to lowercase. The slug is editable after creation; changing a slug changes the archive URL. The engine does not auto-create redirects from old category URLs — if a category slug changes, any inbound links to the old archive URL will return a 404 until the operator adds a redirect via the Redirects pillar.

Hierarchy and archive URLs

A top-level category Brewing Guides produces the archive at /category/brewing-guides/. A child category Espresso under Brewing Guides produces the archive at /category/craft-guides/ceramics/. The parent category archive includes posts assigned directly to the parent; it does not automatically include posts assigned only to a child category. A post assigned to Espresso appears in /category/craft-guides/ceramics/ but not in /category/brewing-guides/ unless it is also explicitly assigned to the parent.

Blog Categories

Hierarchy view
+ Add New
NameSlugParentPostsArchive URL
Brewing Guidesbrewing-guides14/category/brewing-guides/
EspressoespressoBrewing Guides6/category/craft-guides/ceramics/
FilterfilterBrewing Guides8/category/brewing-guides/filter/
Product Newsproduct-news18/category/product-news/
New Arrivalsnew-arrivalsProduct News9/category/product-news/new-arrivals/
Our Storyour-story6/category/our-story/
SustainabilitysustainabilityOur Story3/category/our-story/sustainability/
Uncategorizeduncategorized0/category/uncategorized/

Tags

Tags are the flat, free-form taxonomy for blog posts. A post can carry zero or more tags. Tags are not hierarchical — there are no parent/child tag relationships. A tag is created the moment it is first assigned to a post.

PropertyBehavior
HierarchyNone — flat taxonomy
SlugDerived from tag name on creation. Editable. Lowercase, hyphen-separated.
Archive URL/tag/<slug>/
CreationAuto-created on first use, or pre-created from the Tags management screen
DeletionDeleting a tag removes the tag from all posts that carry it. The posts are not deleted.
Post countDisplayed on the tag admin list. Excludes draft and private posts.
Tag slug rules

Tag slug generation follows the same rules as category slugs. Tag slugs are editable; changing a tag slug changes the tag archive URL. The engine does not auto-create redirects from old tag archive URLs.


Category vs tag: decision guidance

The distinction is structural, not semantic. Use categories when the content must be organized into a discoverable, navigable hierarchy. Use tags when the content needs multiple parallel labels that do not fit a single hierarchy.

QuestionCategoryTag
Does this organize content into a tree visitors can browse?YesNo
Can a post belong to more than one at once without confusion?RarelyYes
Does this appear in the site navigation?TypicallyRarely
Is this a primary classification?YesNo
Is this a supplementary label?NoYes
Does this need an RSS feed of its own?Yes (auto-generated)No (tag archives have no RSS by default)

A post about a new Ethiopia Yirgacheffe roast fits in the New Arrivals category (primary, navigable, RSS-worthy) and carries tags yirgacheffe, single-origin, new-arrival (supplementary, cross-cutting, not worth a dedicated feed). The category is the structural home; the tags are the cross-cutting descriptors.


RSS feed generation

The engine generates RSS feeds automatically. No operator action is required beyond publishing posts.

FeedURLContents
Full blog feed/feed/10 most recent published posts, all categories
Category feed/category/<slug>/feed/10 most recent published posts in that category
Category + children feedNot available — category feeds are per-level, not hierarchical
Tag feedNot available by default
Author feed/author/<username>/feed/10 most recent published posts by that author

RSS feed items include:

  • Post title
  • Post URL (permalink)
  • Publication date (in RFC 2822 format)
  • Author name
  • Category name(s)
  • Excerpt (if set) or truncated body content (first 55 words)
  • Featured image (as <enclosure> or <media:content> depending on feed reader negotiation)

The feed item count (default 10) is a site-level setting under Blog configuration. Changing the count affects all feeds. There is no per-category feed item count override.

<item><title>Brewing Guide 2026: Extraction Ratios Explained</title><link>https://yoursite.com/brewing-guide-2026-extraction-ratios/</link><pubDate>Tue, 20 May 2026 09:00:00 +0000</pubDate><author>sarah@yoursite.com (Sarah Okonkwo)</author><category>Brewing Guides</category><description>A precise extraction ratio is the difference between a flat shot and a balanced one. This guide covers the 1:2 to 1:3 range...</description><enclosure url="https://yoursite.com/media/brewing-guide-hero.jpg" type="image/jpeg" length="184320"/></item>

Sitemap inclusion rules

The XML sitemap at /sitemap.xml includes blog content according to these rules:

Content typeIncludedCondition
Published postsYesStatus = Published and post is not set to noindex
Draft postsNo
Scheduled postsNo — added after publish time passes
Private postsNo
Category archivesYesCategory has at least one published post
Tag archivesYesTag has at least one published post
Uncategorized archiveNo by defaultConfigurable in Blog settings

Post sitemap entries include:

  • Post URL (permalink)
  • Last modified date (most recent save date)
  • Change frequency (weekly default; configurable per-post)
  • Priority (0.6 default for posts; 0.4 default for category archives; configurable)

Category archive entries appear in the sitemap even if the category has child categories with more posts than the parent — the archive URL exists and is indexable regardless of how deep the hierarchy goes.

Sitemap — Blog Entries Preview

Current sitemap entries for blog content
+ Add New
URLLast ModifiedPriorityChange Freq
/brewing-guide-2026-extraction-ratios/2026-05-200.6weekly
/new-roast-ethiopia-yirgacheffe-natural/2026-05-140.6weekly
/how-we-source-direct-trade-at-origin/2026-05-070.6weekly
/category/brewing-guides/2026-05-200.4weekly
/category/craft-guides/ceramics/2026-04-300.4monthly
/tag/direct-trade/2026-05-070.3monthly

Related-posts logic

Related posts are surfaced by the engine on post detail pages. The algorithm determines which posts are "related" to the current post.

Algorithm:

  1. Find all published posts that share at least one category with the current post.
  2. Score each candidate post:
  • +3 points per shared category
  • +1 point per shared tag
  1. Sort candidates by score descending, then by publication date descending for ties.
  2. Return the top N results (default: 3).
VariableDefaultConfigurable
Result count3Yes, in Blog settings
Category weight+3No
Tag weight+1No
Include same-author postsNoNo
Exclude current postAlways

A post with no shared categories with any other published post will have no related posts surfaced. Tags alone do not drive the related-posts output — at least one shared category is required.

Override: Individual posts can carry a manual related-posts override. When set, the override list replaces the algorithm output entirely. The override accepts up to 6 post IDs. Posts in the override list do not need to share any taxonomy with the current post.


Per-post metadata

Each blog post carries a set of metadata fields in addition to its title and body content.

FieldDescriptionRequiredDefault
TitleDisplay title. Used in RSS, sitemap, related-posts.Yes
SlugURL slug. Derived from title on creation. Editable.YesAuto-generated
ExcerptShort summary. Used in RSS, listing templates, related-posts cards, search results.NoAuto-generated from first 55 words if blank
Featured imagePrimary image. Used in listing cards, RSS enclosure, social sharing.No
CategoryTaxonomy assignment. One or more categories.RecommendedUncategorized
TagsSupplementary taxonomy. Zero or more tags.No
Publish dateThe date and time the post goes live.YesCurrent datetime on Publish action
AuthorThe attributed author. Linked to a user account.YesLogged-in user
StatusDraft / Published / Scheduled / PrivateYesDraft
Canonical URLOverride for the canonical <link> tag. Leave blank to use the post's own URL.NoPost permalink
Meta titleOverride for the <title> tag in search results. Leave blank to use the post title.NoPost title
Meta descriptionOverride for the <meta name="description"> tag. Leave blank to use the excerpt.NoExcerpt
noindexFlag to exclude this post from search engine indexing and the sitemap.Nofalse
Scheduling

Scheduling sets a future publish date and time. The post status changes from Scheduled to Published automatically when the scheduled time passes. Scheduled posts are not visible to public visitors until the status flips to Published. The publish time uses the site's configured timezone — set under Site Settings > General > Timezone. A post scheduled for 09:00 on a site configured to Asia/Manila (UTC+8) will publish at 09:00 Manila time, not UTC.

SG-Core / Blog / New Post / Scheduling

Post — Schedule Settings

Featured image

The featured image is drawn from Media Library. It is not embedded in the post body; it is a separate metadata attachment. Templates can choose to display the featured image above the post title, in listing cards, in RSS feed enclosures, and in social-sharing og:image tags. A post without a featured image will use the site's default OG image fallback for social sharing.

Excerpt

The excerpt is a short summary of the post. When left blank, the engine auto-generates an excerpt from the first 55 words of the post body, stripping HTML tags. The auto-generated excerpt is used in RSS, listing templates, and meta description fallback. Setting an explicit excerpt overrides the auto-generated one everywhere it appears.


Examples

Example 1 — A specialty roastery sets up a category hierarchy for their blog

The team runs a specialty goods retail site. Their blog covers brewing technique, product news, and company story. They create three top-level categories: Brewing Guides, Product News, Our Story. Under Brewing Guides they add two child categories: Espresso and Filter. Under Product News they add New Arrivals.

Posts about espresso technique get assigned to Espresso (child of Brewing Guides). Posts about new beans get assigned to New Arrivals (child of Product News). Posts about the company's sourcing philosophy get assigned to Our Story.

Each category has its own RSS feed. A product enthusiast subscribing to /category/craft-guides/ceramics/feed/ receives only craft technique posts, not product news. The sitemap includes all three top-level archives and both child archives.

Example 2 — Related posts drive content discovery

A visitor reads a post about Ethiopia Yirgacheffe in the New Arrivals category with tags yirgacheffe, single-origin, new-arrival.

The related-posts algorithm finds all published posts in New Arrivals. It also checks Product News (the parent category is not auto-included — only directly assigned categories count). It scores shared-tag overlap as a tiebreaker.

The result: three related posts appear at the bottom of the page — all from New Arrivals — ordered by score then recency. A post tagged new-arrival and single-origin that shares two tags scores higher than a post that shares only new-arrival.

Example 3 — Scheduling a product launch post with precise timing

The marketing team plans a post announcing a new tote bag for June 1 at 09:00 Manila time. They write the post, assign it to Product News > New Arrivals, add tags merchandise, tote, new-arrival, attach the product photo as featured image, and set the publish date to 2026-06-01 09:00. The site timezone is Asia/Manila.

The post status shows as Scheduled. It does not appear on the blog index, in RSS, or in the sitemap until 09:00 Manila time on June 1. At that moment the status flips to Published automatically. The post appears in the full-blog RSS feed, the New Arrivals RSS feed, and the sitemap within the next cache cycle.


Edge cases

A category is deleted while it still has posts. Posts are reassigned to the configured fallback category (Uncategorized by default). The deleted category's archive URL returns 404 immediately. Inbound links and search index entries pointing to the old archive URL will land on a 404 until the operator adds a redirect via the Redirects pillar.

A category slug is changed after the category has been in the sitemap. The old archive URL returns 404. The new URL appears in the sitemap on next regeneration. The engine does not auto-redirect. Add a redirect from the old slug to the new one in Redirects.

Two posts are scheduled for exactly the same time. Both publish. Publication order for same-time posts is not guaranteed — do not rely on second-precision ordering.

A post is published, then set back to Draft. The post immediately disappears from the public blog index, RSS feeds, and related-posts output. The sitemap entry is removed on next regeneration. The post permalink returns 404 for public visitors. Inbound links to the post URL will 404 until the post is republished or a redirect is set.

A tag is created but never assigned to any published post. The tag archive URL (/tag/<slug>/) exists in the database but is excluded from the sitemap (no published posts). The archive page renders an empty state.

Excerpt is blank and the post body is shorter than 55 words. The auto-generated excerpt uses the full post body (stripped of HTML). No truncation occurs.

noindex is set on a post after it has already been indexed by search engines. The sitemap entry is removed on next regeneration. The noindex meta tag is present on the page. Search engines that respect the directive will remove the page from their index on next crawl. SGEN does not actively submit deindex requests.


Related features

  • Pages & Posts — blog posts are a post-type in the SG-Core record model; this reference sits alongside the Pages & Posts reference.
  • Custom Objects — if the blog taxonomy model does not fit your content shape, Custom Objects lets you build a parallel record type with its own taxonomy.
  • SG-Admin Blog — the operator how-to surface for writing, scheduling, categorizing, and managing blog content.
  • SG-Admin Categories — the category management surface.
  • Redirects — use Redirects when category or tag slugs change, to preserve inbound link equity.
  • Media Library — the source for all featured images attached to posts.
On this page