{"skill":{"slug":"feed-to-md","displayName":"Feed To Md","summary":"Convert RSS or Atom feed URLs into Markdown using the bundled local converter script. Use this when a user asks to turn a feed URL into readable Markdown, op...","description":"---\nname: feed-to-md\ntitle: Feed to Markdown\ndescription: Convert RSS or Atom feed URLs into Markdown using the bundled local converter script. Use this when a user asks to turn a feed URL into readable Markdown, optionally limiting items or writing to a file.\nmetadata: {\"clawdbot\":{\"emoji\":\"📰\",\"requires\":{\"bins\":[\"python3\"]}}}\n---\n\n# RSS/Atom to Markdown\n\nUse this skill when the task is to convert an RSS/Atom feed URL into Markdown.\n\n## What this skill does\n\n- Converts a feed URL to Markdown via a bundled local script\n- Supports stdout output or writing to a Markdown file\n- Supports limiting article count and summary controls\n\n## Inputs\n\n- Required: RSS/Atom URL\n- Optional:\n  - output path\n  - max item count\n  - template preset (`short` or `full`)\n\n## Usage\n\nRun the local script:\n\n```bash\npython3 scripts/feed_to_md.py \"<feed_url>\"\n```\n\nWrite to file:\n\n```bash\npython3 scripts/feed_to_md.py \"https://example.com/feed.xml\" --output feed.md\n```\n\nLimit to 10 items:\n\n```bash\npython3 scripts/feed_to_md.py \"https://example.com/feed.xml\" --limit 10\n```\n\nUse full template with summaries:\n\n```bash\npython3 scripts/feed_to_md.py \"https://example.com/feed.xml\" --template full\n```\n\n## Security rules (required)\n\n- Never interpolate raw user input into a shell string.\n- Always pass arguments directly to the script as separate argv tokens.\n- URL must be `http` or `https` and must not resolve to localhost/private addresses.\n- Every HTTP redirect target (and final URL) is re-validated and must also resolve to public IPs.\n- Output path must be workspace-relative and end in `.md`.\n- Do not use shell redirection for output; use `--output`.\n\nSafe command pattern:\n\n```bash\ncmd=(python3 scripts/feed_to_md.py \"$feed_url\")\n[[ -n \"${output_path:-}\" ]] && cmd+=(--output \"$output_path\")\n[[ -n \"${limit:-}\" ]] && cmd+=(--limit \"$limit\")\n[[ \"${template:-short}\" = \"full\" ]] && cmd+=(--template full)\n\"${cmd[@]}\"\n```\n\n## Script options\n\n- `-o, --output <file>`: write markdown to file\n- `--limit <number>`: max number of articles\n- `--no-summary`: exclude summaries\n- `--summary-max-length <number>`: truncate summary length\n- `--template <preset>`: `short` (default) or `full`\n","topics":["RSS"],"tags":{"latest":"1.2.0"},"stats":{"comments":0,"downloads":1173,"installsAllTime":44,"installsCurrent":2,"stars":2,"versions":11},"createdAt":1771843175973,"updatedAt":1778491617178},"latestVersion":{"version":"1.2.0","createdAt":1771926397315,"changelog":"- Added _meta.json file for metadata support.\n- Updated scripts/feed_to_md.py.\n- No user-facing usage or option changes.","license":null},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"myx0m0p","userId":"s171ams6t4x2gb70w3vd4d600s884nr2","displayName":"Andre P","image":"https://avatars.githubusercontent.com/u/10810328?v=4"},"moderation":null}