{"id":15145131,"url":"https://github.com/scottstraughan/markdownfeeds","last_synced_at":"2026-02-18T12:31:19.135Z","repository":{"id":253246194,"uuid":"819486064","full_name":"scottstraughan/markdownfeeds","owner":"scottstraughan","description":"Small, lightweight tool to convert markdown files into JSON, HTML, XML and more feeds.","archived":false,"fork":false,"pushed_at":"2024-07-25T09:40:16.000Z","size":24,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-22T14:03:04.194Z","etag":null,"topics":["jekyll","json","markdown"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scottstraughan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-06-24T15:44:47.000Z","updated_at":"2025-06-17T18:19:35.000Z","dependencies_parsed_at":"2024-08-17T00:15:24.200Z","dependency_job_id":null,"html_url":"https://github.com/scottstraughan/markdownfeeds","commit_stats":null,"previous_names":["scottstraughan/markdownfeeds"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scottstraughan/markdownfeeds","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottstraughan%2Fmarkdownfeeds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottstraughan%2Fmarkdownfeeds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottstraughan%2Fmarkdownfeeds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottstraughan%2Fmarkdownfeeds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scottstraughan","download_url":"https://codeload.github.com/scottstraughan/markdownfeeds/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scottstraughan%2Fmarkdownfeeds/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29578941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T08:38:15.585Z","status":"ssl_error","status_checked_at":"2026-02-18T08:38:14.917Z","response_time":162,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["jekyll","json","markdown"],"created_at":"2024-09-26T11:09:02.138Z","updated_at":"2026-02-18T12:31:19.118Z","avatar_url":"https://github.com/scottstraughan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Markdown Feeds\n\nA fast and efficient tool that can generate paged \"feeds\" based on Markdown files.\n\nA example use case of this tool is to generate a JSON or HTML feed for some news that you may have.\n\n**Core Features:**\n\n* Generate [complaint JSON Feed v1.0](https://www.jsonfeed.org/version/1/_) feeds\n* Generate HTML feeds\n* Supports pagination, with user defined \"items per page\"\n* Fast and efficient, uses async based work groups\n* Reads Markdown files in [YAML Front-Matter Jekyll Format](https://jekyllrb.com/docs/collections/#add-content)\n* Markdown files can provide yaml based \"front-matter\" allowing extra details to be provided to feed\n\n## Simple JSON Feed Example\n\nThis tool can be used to take the below files:\n\n### Example Code\n\n```python\nfrom markdownfeeds.Generators.Json.JsonFeedGenerator import JsonFeedGenerator\nfrom markdownfeeds.Generators.Json.JsonFeedGeneratorSettings import JsonFeedGeneratorSettings\nfrom markdownfeeds.Generators.Json.Models.JsonFeed import JsonFeed\n\nJsonFeedGenerator(\n    feed=JsonFeed(title='Captain\\'s Log 1'),\n    generator_settings=JsonFeedGeneratorSettings(\n        source_directory='../1-simple-json-feed/logs',\n        target_directory='json/log1',\n    )\n).run_standalone()\n```\n\n### Input\n\n**File 1: 2024-02-02-hello-world.md:**\n```markdown\n---\ntitle: \"Hello World!\"\nauthor: \"Jean-Luc Picard\"\n---\n\nMake it so!\n```\n\n**File 2: 2024-02-06-another-test-file.md:**\n```markdown\n---\ntitle: \"Another Test File\"\nauthor: \"Kathryn Janeway\"\nlocation: \"Delta Quadrant\"\n---\n\nTom, warp 6.\n```\n\n### Output\n\nIf you run the above files via the tool using `JsonFeedGenerator` generator, the output would be similar to:\n\n```json\n{\n  \"version\": \"https://jsonfeed.org/version/1\",\n  \"title\": \"News Feed\",\n  \"items\": [\n    {\n      \"id\": \"11581cc76bfff77669ebd94621959b016416e48d\",\n      \"title\": \"Another Test File\",\n      \"summary\": \"Tom, warp 6.\",\n      \"date_published\": \"2024-02-06T00:00:00\",\n      \"author\": \"Kathryn Janeway\",\n      \"_location\": \"Delta Quadrant\"\n    },\n    {\n      \"id\": \"de9d22cb5f4a20a3aeb00d156e086122148cd141\",\n      \"title\": \"Hello World!\",\n      \"summary\": \"Make it so!\",\n      \"date_published\": \"2024-02-02T00:00:00\",\n      \"author\": \"Jean-Luc Picard\"\n    }\n  ],\n  \"_total_items\": 2,\n  \"_total_pages\": 1\n}\n```\n\n## More Examples\n\nThere are a few additional examples available below:\n\n* [Example 1 - Generate an HTML Feed](examples/1-simple-json-feed/)\n* [Example 2 - Generate a JSON Feed with pagination](examples/2-paged-html-feed)\n* [Example 3 - Generate multiple different feeds in parallel using the `Gatherer`](examples/3-multiple-parallel-feeds)\n* [Example 4 - Inject Feed Properties](examples/4-inject-feed-properties)\n\n### Extending\n\nYou can extend the functionality of this tool by adding support for new feed types. To do this, please create a new\nfeed class and extend the \"BaseFeed\" class.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottstraughan%2Fmarkdownfeeds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscottstraughan%2Fmarkdownfeeds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottstraughan%2Fmarkdownfeeds/lists"}