원클릭으로
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 |