ワンクリックで
extension-content-feeds
RssFeedProvider and SitemapProvider trait implementations for SEO and content syndication
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
RssFeedProvider and SitemapProvider trait implementations for SEO and content syndication
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Search the web for information using the WebSearch tool
Demonstrates governance blocking when plaintext secrets are detected in tool inputs
A simple demonstration skill that searches the web for information
Demonstration skill that attempts to use a plaintext secret, designed to be blocked by governance hooks
List, message, configure, and restart agents via the systemprompt CLI
View traffic, costs, agent stats, and bot detection via the systemprompt CLI
| name | Extension: Content Feeds |
| description | RssFeedProvider and SitemapProvider trait implementations for SEO and content syndication |
Feed providers generate RSS feeds and XML sitemaps for search engine optimization and content syndication. All traits live in crates/shared/provider-contracts/src/.
Generates RSS 2.0 feeds from content sources.
#[async_trait]
pub trait RssFeedProvider: Send + Sync {
fn feed_specs(&self) -> Vec<RssFeedSpec>;
async fn feed_metadata(&self, ctx: &dyn RssFeedContext) -> Result<RssFeedMetadata>;
async fn fetch_items(&self, ctx: &dyn RssFeedContext, limit: usize) -> Result<Vec<RssFeedItem>>;
}
| Field | Type | Description |
|---|---|---|
source | String | Content source to query |
path | String | URL path for the feed (e.g., /feed.xml) |
limit | usize | Maximum items in feed |
impl Extension for MyExtension {
fn rss_feed_providers(&self) -> Vec<Arc<dyn RssFeedProvider>> {
vec![Arc::new(BlogRssFeedProvider)]
}
}
Generates XML sitemaps for search engine indexing.
#[async_trait]
pub trait SitemapProvider: Send + Sync {
fn source_specs(&self) -> Vec<SitemapSourceSpec>;
fn static_urls(&self, base_url: &str) -> Vec<SitemapUrlEntry>;
async fn resolve_placeholders(
&self,
ctx: &dyn SitemapContext,
content: &[ContentItem],
placeholders: &[String],
) -> Result<Vec<SitemapUrlEntry>>;
}
| Field | Type | Description |
|---|---|---|
loc | String | Full URL |
lastmod | Option<DateTime> | Last modification date |
changefreq | Option | daily, weekly, monthly, yearly, never |
priority | Option | 0.0 to 1.0 (default: 0.5) |
impl Extension for MyExtension {
fn sitemap_providers(&self) -> Vec<Arc<dyn SitemapProvider>> {
vec![Arc::new(BlogSitemapProvider)]
}
}
| Practice | Implementation |
|---|---|
Sitemap at /sitemap.xml | Registered by SitemapGenerationJob |
RSS at /feed.xml | Standard feed location |
robots.txt references sitemap | Generated by RobotsTxtGenerationJob |
lastmod reflects actual changes | Use updated_at, not created_at |
| Priority reflects page importance | Homepage: 1.0, blog list: 0.8, posts: 0.7 |
| Rule | Rationale |
|---|---|
All providers are Send + Sync | Async multi-threaded context |
| RSS items sorted by date descending | Most recent first |
| Sitemap URLs must be absolute | Include full base_url prefix |
| Feed limits default to 20 items | Standard RSS practice |
Use DateTime<Utc> for dates | RFC 2822 for RSS, ISO 8601 for sitemap |