{"id":20620534,"url":"https://github.com/blacklight/madblog","last_synced_at":"2025-09-12T23:35:18.373Z","repository":{"id":51679898,"uuid":"447004644","full_name":"blacklight/madblog","owner":"blacklight","description":"A minimal platform for Markdown-based blogs [mirror of https://git.platypush.tech/blacklight/madblog]","archived":false,"fork":false,"pushed_at":"2024-10-25T00:16:52.000Z","size":442,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-21T11:24:33.031Z","etag":null,"topics":["blog-engine","markdown","python3"],"latest_commit_sha":null,"homepage":"https://git.platypush.tech/blacklight/madblog","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/blacklight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2022-01-11T22:47:31.000Z","updated_at":"2024-10-25T00:16:03.000Z","dependencies_parsed_at":"2024-04-11T00:23:44.803Z","dependency_job_id":"f1485af6-98ac-424b-bed5-e46aaafaa7e0","html_url":"https://github.com/blacklight/madblog","commit_stats":null,"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/blacklight/madblog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight%2Fmadblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight%2Fmadblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight%2Fmadblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight%2Fmadblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blacklight","download_url":"https://codeload.github.com/blacklight/madblog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blacklight%2Fmadblog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274893250,"owners_count":25369278,"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","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["blog-engine","markdown","python3"],"created_at":"2024-11-16T12:14:48.643Z","updated_at":"2025-09-12T23:35:18.347Z","avatar_url":"https://github.com/blacklight.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# madblog\n\nThis project provides a minimal blogging platform based on Markdown files.\n\n## Demos\n\nThis project powers the following blogs:\n\n- [Platypush](https://blog.platypush.tech)\n- [My personal blog](https://fabiomanganiello.com)\n\n## Installation\n\n```shell\n$ python setup.py install\n```\n\n## Usage\n\n```shell\n# The application will listen on port 8000 and it will\n# serve the current folder\n$ madblog\n```\n\n```\nusage: madblog [-h] [--config CONFIG] [--host HOST] [--port PORT] [--debug] [dir]\n\nServe a Markdown folder as a web blog.\n\nThe folder should have the following structure:\n\n.\n  -\u003e config.yaml [recommended]\n  -\u003e markdown\n    -\u003e article-1.md\n    -\u003e article-2.md\n    -\u003e ...\n  -\u003e img [recommended]\n    -\u003e favicon.ico\n    -\u003e icon.png\n    -\u003e image-1.png\n    -\u003e image-2.png\n    -\u003e ...\n\npositional arguments:\n  dir              Base path for the blog (default: current directory)\n\noptions:\n  -h, --help       show this help message and exit\n  --config CONFIG  Path to a configuration file (default: config.yaml in the blog root directory)\n  --host HOST      Bind host/address\n  --port PORT      Bind port (default: 8000)\n  --debug          Enable debug mode (default: False)\n```\n\n## Configuration\n\nThe application will look for a `config.yaml` file in the current directory if none was\nspecified through the `-c` command-line option. The structure is the following:\n\n```yaml\ntitle: Blog title\ndescription: Blog description\nlink: https://link.to.your.blog\n# Use home_link if you have a different home/portal address\n# than your blog, otherwise it's the same as `link`\nhome_link: https://link.to.home\n# Path/URL to the logo (default: /img/icon.png)\nlogo: /path/or/url/here\n# Blog language (for the RSS feed)\nlanguage: en-US\n# Show/hide the header (default: true)\nheader: true\n# Enable/disable the short RSS feed (default: false)\nshort_feed: false\n\ncategories:\n  - category1\n  - category2\n  - category3\n```\n\n## Markdown files\n\nArticles are Markdown files stored under `markdown`. For an article to be correctly rendered,\nyou need to start the Markdown file with the following metadata header:\n\n```markdown\n[//]: # (title: Title of the article)\n[//]: # (description: Short description of the content)\n[//]: # (image: /img/some-header-image.png)\n[//]: # (author: Author Name \u003cemail@author.me\u003e)\n[//]: # (published: 2022-01-01)\n```\n\nIf no `markdown` folder exists in the base directory, then the base directory itself will be treated as a root for\nMarkdown files.\n\n### Folders\n\nYou can organize Markdown files in folders. If multiple folders are present, pages on the home will be grouped by\nfolders.\n\n## Images\n\nImages are stored under `img`. You can reference them in your articles through the following syntax:\n\n```markdown\n![image description](/img/image.png)\n```\n\nYou can also drop your `favicon.ico` under this folder.\n\n## LaTeX support\n\nLaTeX support is built-in as long as you have the `latex` executable installed on your server.\n\nSyntax for inline LaTeX:\n\n```markdown\nAnd we can therefore prove that \\( c^2 = a^2 + b^2 \\)\n```\n\nSyntax for LaTeX expression on a new line:\n\n```markdown\n$$\nc^2 = a^2 + b^2\n$$\n```\n\n## RSS syndacation\n\nRSS feeds for the blog are provided under the `/rss` URL.\n\nBy default, the whole HTML-rendered content of an article is returned under `rss.channel.item.description`.\n\nIf you only want to include the short description of an article in the feed, use `/rss?short` instead.\n\nIf you want the short feed (i.e. without the fully rendered article as a\ndescription) to be always returned, then you can specify `short_feed=true` in\nyour configuration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacklight%2Fmadblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblacklight%2Fmadblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblacklight%2Fmadblog/lists"}