This documentation is also published as Markdown for efficient machine reading: the whole site is indexed at /llms.txt, and every page has a clean Markdown copy under /_llms/. These are generated from the same source and cost far fewer tokens to read than this rendered HTML.

Skip to main content Skip to navigation

BlogContentService Pennington.DocSite.Services

Surfaces the blog index route (/blog) the static build cannot otherwise discover, and declares the /blog/ llms.txt subtree. Browse-by-tag routes come from the registered AddTaxonomy<BlogPostFrontMatter, string> axis; post pages from the markdown source; post data, pagination, and RSS from the shared BlogPostQuery. Stateless — it reads no files and holds no cache.

Properties

DefaultSectionLabel string
Default section label applied to discovered items that do not supply one via front matter.
SearchPriority int
Relative priority for ordering results in the search index (higher values rank first).

Methods

DiscoverAsync

#
public IAsyncEnumerable<DiscoveredItem> DiscoverAsync()

Discover all content items this service is responsible for.

Returns

IAsyncEnumerable<DiscoveredItem>

GetContentTocEntriesAsync

#
public Task<ImmutableList<ContentTocItem>> GetContentTocEntriesAsync()

Navigation entries for table of contents.

Returns

Task<ImmutableList<ContentTocItem>>

GetContentToCopyAsync

#
public Task<ImmutableList<ContentToCopy>> GetContentToCopyAsync()

Static files to copy to output (images, downloads, etc.)

Returns

Task<ImmutableList<ContentToCopy>>

GetCrossReferencesAsync

#
public Task<ImmutableList<CrossReference>> GetCrossReferencesAsync()

Cross-references for xref resolution.

Returns

Task<ImmutableList<CrossReference>>

GetLlmsSubtreesAsync

#
public Task<ImmutableList<LlmsSubtree>> GetLlmsSubtreesAsync()

Declares /blog/ as an llms.txt subtree so posts split out of the front-door llms.txt into a dedicated /blog/llms.txt. Always declared — the service is only registered when the content project has a blog folder.

Returns

Task<ImmutableList<LlmsSubtree>>

Pennington.DocSite.Services.BlogContentService

namespace Pennington.DocSite.Services;

/// Surfaces the blog index route (/blog) the static build cannot otherwise discover, and declares the /blog/ llms.txt subtree. Browse-by-tag routes come from the registered AddTaxonomy<BlogPostFrontMatter, string> axis; post pages from the markdown source; post data, pagination, and RSS from the shared BlogPostQuery. Stateless — it reads no files and holds no cache.
public class BlogContentService
{
    /// Default section label applied to discovered items that do not supply one via front matter.
    
public string DefaultSectionLabel { get; }
/// Discover all content items this service is responsible for.
public IAsyncEnumerable<DiscoveredItem> DiscoverAsync()
; /// Navigation entries for table of contents.
public Task<ImmutableList<ContentTocItem>> GetContentTocEntriesAsync()
; /// Static files to copy to output (images, downloads, etc.)
public Task<ImmutableList<ContentToCopy>> GetContentToCopyAsync()
; /// Cross-references for xref resolution.
public Task<ImmutableList<CrossReference>> GetCrossReferencesAsync()
; /// Declares /blog/ as an llms.txt subtree so posts split out of the front-door llms.txt into a dedicated /blog/llms.txt. Always declared — the service is only registered when the content project has a blog folder.
public Task<ImmutableList<LlmsSubtree>> GetLlmsSubtreesAsync()
; /// Relative priority for ordering results in the search index (higher values rank first).
public int SearchPriority { get; }
}