{"id":25945635,"url":"https://github.com/taga3s/rss-generator","last_synced_at":"2026-05-14T05:36:21.560Z","repository":{"id":279804914,"uuid":"939670887","full_name":"taga3s/rss-generator","owner":"taga3s","description":"wip","archived":false,"fork":false,"pushed_at":"2025-02-27T15:32:39.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-27T20:09:11.984Z","etag":null,"topics":["deno","rss-generator"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taga3s.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-26T23:07:22.000Z","updated_at":"2025-02-27T15:33:21.000Z","dependencies_parsed_at":"2025-02-27T20:12:00.350Z","dependency_job_id":"67472325-0f39-4656-baf1-33d62194c292","html_url":"https://github.com/taga3s/rss-generator","commit_stats":null,"previous_names":["taga3s/rss-generator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taga3s%2Frss-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taga3s%2Frss-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taga3s%2Frss-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taga3s%2Frss-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taga3s","download_url":"https://codeload.github.com/taga3s/rss-generator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241818896,"owners_count":20025212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deno","rss-generator"],"created_at":"2025-03-04T09:18:15.245Z","updated_at":"2026-05-14T05:36:21.554Z","avatar_url":"https://github.com/taga3s.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rss-generator\n\n[![JSR badge](https://jsr.io/badges/@taga3s/rss-generator)](https://jsr.io/@taga3s/rss-generator)\n\nA simple RSS 2.0 feed generator. This project is just for fun and learning\npurpose, so the implementation is intentionally minimal.\n\n## features\n\n- Generates RSS 2.0 feed (following the\n  [RSS 2.0 Specification](https://www.rssboard.org/rss-specification))\n- Zero dependencies\n\n## example usage\n\n```ts\nimport {\n  cdata,\n  type Channel,\n  generateRSS,\n  type Item,\n} from \"jsr:@taga3s/rss-generator\";\n\nconst items: Item[] = [\n  {\n    title: \"Example Title 1\",\n    description: cdata(\"Example description\"),\n    content: {\n      encoded: cdata(\"\u003cp\u003eExample content\u003c/p\u003e\"),\n    },\n    link: \"https://example.com/articles/1\",\n    atom: {\n      link: {\n        href: \"https://example.com/rss.xml\",\n      },\n    },\n    guid: {\n      isPermaLink: true,\n      value: \"https://example.com/articles/1\",\n    },\n    pubDate: new Date().toUTCString(),\n  },\n  {\n    title: \"Example Title 2\",\n    description: cdata(\"Example description\"),\n    content: {\n      encoded: cdata(\"\u003cp\u003eExample content\u003c/p\u003e\"),\n    },\n    link: \"https://example.com/articles/2\",\n    guid: {\n      isPermaLink: true,\n      value: \"https://example.com/articles/2\",\n    },\n    pubDate: new Date().toUTCString(),\n  },\n];\n\nconst channel: Channel = {\n  title: \"Example Web\",\n  link: \"https://example.com\",\n  description: cdata(\"Example description\"),\n  ttl: 60,\n  language: \"en\",\n  category: [\"sports\", \"politics\", \"technology\"],\n  copyright: \"Example Web\",\n  items: items,\n};\n\nif (import.meta.main) {\n  const xml = generateRSS({ channel });\n  const data = new TextEncoder().encode(xml);\n  await Deno.writeFile(\"rss.xml\", data);\n}\n```\n\n\u003cdetails\u003e\n\n\u003csummary\u003eGenerated RSS file\u003c/summary\u003e\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003crss version=\"2.0\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:atom=\"http://www.w3.org/2005/Atom\"\u003e\n  \u003cchannel\u003e\n    \u003ctitle\u003eExample Web\u003c/title\u003e\n    \u003cdescription\u003e\u003c![CDATA[Example description]]\u003e\u003c/description\u003e\n    \u003clink\u003ehttps://example.com\u003c/link\u003e\n    \u003catom:link href=\"https://example.com/rss.xml\" rel=\"self\" type=\"application/rss+xml\"/\u003e\n    \u003ccategory\u003esports\u003c/category\u003e\n    \u003ccategory\u003epolitics\u003c/category\u003e\n    \u003ccategory\u003etechnology\u003c/category\u003e\n    \u003ccopyright\u003eExample Web\u003c/copyright\u003e\n    \u003clanguage\u003een\u003c/language\u003e\n    \u003cttl\u003e60\u003c/ttl\u003e\n    \u003citem\u003e\n      \u003ctitle\u003eExample Title 1\u003c/title\u003e\n      \u003cdescription\u003e\u003c![CDATA[Example description]]\u003e\u003c/description\u003e\n      \u003ccontent:encoded\u003e\u003c![CDATA[\u003cp\u003eExample content\u003c/p\u003e]]\u003e\u003c/content:encoded\u003e\n      \u003clink\u003ehttps://example.com/articles/1\u003c/link\u003e\n      \u003cdc:creator\u003eJohn Doe\u003c/dc:creator\u003e\n      \u003cguid isPermaLink=\"true\"\u003ehttps://example.com/articles/1\u003c/guid\u003e\n      \u003cpubDate\u003eWed, 14 Jan 2026 01:21:54 GMT\u003c/pubDate\u003e\n    \u003c/item\u003e\n    \u003citem\u003e\n      \u003ctitle\u003eExample Title 2\u003c/title\u003e\n      \u003cdescription\u003e\u003c![CDATA[Example description]]\u003e\u003c/description\u003e\n      \u003ccontent:encoded\u003e\u003c![CDATA[\u003cp\u003eExample content\u003c/p\u003e]]\u003e\u003c/content:encoded\u003e\n      \u003clink\u003ehttps://example.com/articles/2\u003c/link\u003e\n      \u003cdc:creator\u003eJohn Doe\u003c/dc:creator\u003e\n      \u003cguid isPermaLink=\"true\"\u003ehttps://example.com/articles/2\u003c/guid\u003e\n      \u003cpubDate\u003eWed, 14 Jan 2026 01:21:54 GMT\u003c/pubDate\u003e\n    \u003c/item\u003e\n  \u003c/channel\u003e\n\u003c/rss\u003e\n```\n\n\u003c/details\u003e\n\n\u003e [!NOTE]\n\u003e You can validate the generated RSS file by using\n\u003e [W3C Feed Validation Service](https://validator.w3.org/feed/).\n\n## license\n\n[MIT](https://github.com/taga3s/rss-generator/blob/main/LICENSE)\n\n## author\n\n- [taga3s](https://github.com/taga3s)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaga3s%2Frss-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaga3s%2Frss-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaga3s%2Frss-generator/lists"}