Generates valid RSS 2.0 or Atom 1.0 XML feeds from any web page that
lists posts, articles, or news items but does not publish its own feed.
| Parameter | Default value |
|---|---|
| ------------------- | ---------------------------------------- |
| Preferred format | RSS 2.0 (Atom 1.0 on request) |
| Max items | 20 (most-recent first) |
| Date fallback | Page scrape date (ISO 8601, UTC) |
| Description | First 280 chars of post excerpt/lede |
| Encoding | UTF-8 |
| Output modes | Raw XML · HTML page · Both |
| Interaction style | Friendly and professional |
| # | User says … | Action |
|---|---|---|
| ---- | -------------------------------------------------- | ------------------------------------- |
| T1 | "Generate an RSS/Atom feed for {url}" | Fetch page → detect posts → emit XML |
| T2 | "This page has no feed: {url}" | Same as T1 |
| T3 | "Create a feed from {url}" | Same as T1 |
| T4 | "Convert {url} posts to RSS" | Same as T1 |
| T5 | "Make a self-hostable feed for {url}" | Emit XML + HTML wrapper |
| T6 | "Update / refresh the feed for {url}" | Re-scrape and re-emit |
WEB_FETCH function (defined in https://linkeddata.uriburner.com/chat/functions/openapi.yaml,
endpoint /WEB_FETCH). Use whichever available protocol applies — REST, MCP,
OPAL, or curl. Required parameter: url. Optional: headers, max_redirects,
timeout_seconds. WEB_FETCH retrieves the page just like a web browser and
returns the full page content for subsequent processing. See
protocol-routing.md for exact invocation
patterns per protocol.
tags. If a feed alreadyexists, report it and stop (offer to proxy/mirror instead).
references/extraction-rules.mdto identify post entries (title, URL, date, author, summary).
references/feed-templates.md. Validate structure against the checklist
in references/validation-checklist.md.
HTML discovery page template from references/html-wrapper-template.md.
.xml file to /mnt/user-data/outputs/ and present it with present_files.
, , or blocks with consistent class names (e.g., post, entry, article, blog-post, card)
// headings inside each block → item title on or near the heading → item link (resolve relative URLs) or text matching date patterns → pubDate- First
inside the block (≤280 chars) → description / summary or byline text → author
Date handling
Situation Strategy ---------------------------- ------------------------------------------- Use ISO value directly Human-readable date text Parse with locale awareness; emit RFC 822 No date found Use today's date (UTC) with a comment Relative ("3 days ago") Calculate from scrape time
URL normalisation
All item values must be absolute. Resolve against the page's
if present, otherwise against the origin of the page URL.
Feed Format Specs
RSS 2.0 required elements
<rss version="2.0">
<channel>
<title>, <link>, <description> ← required channel fields
<item>
<title>, <link>, <guid> ← required per item
<pubDate> ← RFC 822 (e.g. Mon, 01 Jan 2024 00:00:00 +0000)
<description> ← plain text or CDATA-wrapped HTML
Atom 1.0 required elements
<feed xmlns="http://www.w3.org/2005/Atom">
<title>, <id>, <updated> ← required feed fields
<entry>
<title>, <id>, <updated> ← required per entry
<link href="…" rel="alternate"/> ← post URL
<summary> or <content> ← excerpt or full body
Full templates → references/feed-templates.md
Output Modes
Mode Description -------------- --------------------------------------------------------------------- xmlRaw feed XML in a fenced code block fileSave to /mnt/user-data/outputs/-feed.xml and present link htmlHTML discovery page with + embedded XML bothfile + html wrapper saved as -feed-page.html
Default: file (saves XML and presents download link).
Error Handling
Problem Response ------------------------------------ ----------------------------------------------------------- Page returns non-200 Report HTTP status; suggest checking URL or auth No repeating post structure found Show raw HTML skeleton; ask user to identify the pattern Feed already exists Report the existing feed URL; offer to mirror/augment Dates unparseable Use today's date; flag items with Relative URLs unresolvable Ask user for the site's base URL
Commands
Command Description ---------------------- ---------------------------------------------------------- /helpUsage guidance for this skill `/format [rss atom]` Override output format /limit [n]Set maximum number of feed items /fulltextAttempt to embed full post body (fetches each post URL) /validateRun checklist from references/validation-checklist.md /previewShow first 3 items as formatted Markdown before XML
Operational Rules
- Always check for an existing feed before generating a synthetic one.
- Never fabricate post content — only use text found on the page.
- Escape
&, <, > in text nodes; use CDATA for HTML description bodies. - All
/ Atom values must be the canonical post URL. - Sort items newest-first by default (
pubDate DESC). - Do not request or store credentials; only scrape publicly accessible pages.
- Clearly label generated feeds as synthetic (add
tag). - Respect
robots.txt — do not scrape pages that disallow crawlers.
共 1 个版本