{"id":13667988,"url":"https://github.com/OliverBrotchie/ob","last_synced_at":"2025-04-26T18:30:51.668Z","repository":{"id":45535231,"uuid":"400217644","full_name":"OliverBrotchie/ob","owner":"OliverBrotchie","description":"A Blog \u0026 RSS system written in Rust based on Luke Smith's LB.","archived":false,"fork":false,"pushed_at":"2022-06-16T13:49:17.000Z","size":978,"stargazers_count":24,"open_issues_count":5,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T03:06:08.526Z","etag":null,"topics":["blog","rss","static-site-generator"],"latest_commit_sha":null,"homepage":"https://unazoomer.net/ob","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OliverBrotchie.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}},"created_at":"2021-08-26T15:27:53.000Z","updated_at":"2024-08-22T11:47:34.000Z","dependencies_parsed_at":"2022-08-25T08:22:10.336Z","dependency_job_id":null,"html_url":"https://github.com/OliverBrotchie/ob","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OliverBrotchie%2Fob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OliverBrotchie%2Fob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OliverBrotchie%2Fob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OliverBrotchie%2Fob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OliverBrotchie","download_url":"https://codeload.github.com/OliverBrotchie/ob/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251035191,"owners_count":21526319,"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":["blog","rss","static-site-generator"],"created_at":"2024-08-02T07:00:58.288Z","updated_at":"2025-04-26T18:30:48.376Z","avatar_url":"https://github.com/OliverBrotchie.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n  \u003ch1\u003e\u003ccode\u003eob\u003c/code\u003e\u003c/h1\u003e\n\n  \u003cstrong\u003eOliver's Blog Script - A Blog and RSS system written in Rust.\u003c/strong\u003e\n\n\u003c/div\u003e\n\n## Features\n\n- Converts blog entries written in Markdown into HTML.   ✍🏻\n- Keeps a rolling blog page.   🔎\n- Keeps an RSS feed which includes blog posts in full.   📰\n- Creates entries in the rolling blog page that are easily modifiable with CSS.   ⚡️\n- One command to delete, edit or regenerate entries from the RSS feed, rolling blog and standalone entry pages simultaneously.   🚀\n- Works on MacOS, Linux and Windows.   🖥\n- Less than 450 lines of code.   🏝\n- Blazingly fast.   🔥\n\n## Installation\n\nInstall Rust:\n\n```shell\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\nInstall OB:\n\n```shell\ncargo install ob\n```\n\n## Setup\n\nYou will need to create four files:\n\n- A Rolling Blog File where the blog entries will be listed.\n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003ctitle\u003eYour Blog\u003c/title\u003e\n    \u003cmeta charset=\"utf-8\"/\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003ch1\u003eBlog Updates\u003c/h1\u003e\n    \u003cul\u003e\n      \u003c!-- OB --\u003e\n    \u003c/ul\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\n- A Template to be filled out with the content of a blog post.\n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003ctitle\u003e\u003c/title\u003e\n    \u003cmeta charset=\"utf-8\"/\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003c!-- OB --\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\n- An RSS feed.\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003c?xml-stylesheet type=\"text/css\" href=\"rss.css\" ?\u003e\n\u003crss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\"\u003e\n  \u003cchannel\u003e\n    \u003ctitle\u003eBlog Title\u003c/title\u003e\n    \u003cdescription\u003eDescription\u003c/description\u003e\n    \u003clanguage\u003een-us\u003c/language\u003e\n    \u003clink\u003ehttps://your_blog.com/rss.xml\u003c/link\u003e\n    \u003catom:link href=\"https://your_blog.com/rss.xml\" rel=\"self\" type=\"application/rss+xml\" /\u003e\n\n    \u003c!-- OB --\u003e\n  \u003c/channel\u003e\n\u003c/rss\u003e\n```\n\n- A configuration file containing the paths to your blog index, template and rss files.   \nIt should also include the address of where the blog entries will be hosted, the maximum number \nof posts on the rss feed and whether to include images or not.\n\n```json\n{\n    \"blog\": \"index.html\",\n    \"template\": \"template.html\",\n    \"rss\": \"rss.xml\",\n    \"items\": 4,\n    \"blog_address\": \"https://your_blog.com/blog/\",\n    \"images\": true\n}\n```\n\n## Markers\n\nFor the system to work, add the following comment line to the Rolling Blog File, Template and RSS feed (as above).\n\n```html\n\u003c!-- OB --\u003e\n```\n\nWhen you publish a blog post, it will be added directly below that line in the proper format.\n\n## Usage\n\n```\nUSAGE:\n    ob \u003cSUBCOMMAND\u003e\n\nFLAGS:\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nSUBCOMMANDS:\n    delete     Deletes an entry\n    edit       Edit a published entry\n    help       Prints this message or the help of the given subcommand(s)\n    new        Create a new draft\n    publish    Publish a daft\n    regen      Regenerates all blog entries\n```\n\nThe first time `ob` is used it will create a folder at: `/blog`.\n\nWhen you create a new draft it will be located at: `/blog/drafts`.  \nWhen you publish a new draft it will be located at: `/blog/example.html`.\n\n**Example usage:**\n\n```shell\nob new\n```\n\n\u003cbr\u003e\n\n### You can see an example on [my blog](https://oliverbrotchie.github.io/) or [OB's website](https://oliverbrotchie.github.io/ob/) located in the `/docs` folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOliverBrotchie%2Fob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOliverBrotchie%2Fob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOliverBrotchie%2Fob/lists"}