Sample

Sample post: how platform articles become live pages

This is a sample article, committed by hand to demonstrate the blog render pipeline. It is not real content — delete this file (content/blog/sample-post.md) after inspecting the result and the renderer will remove the generated page, its listing card, and its sitemap entry on the next run.

Published 3 July 2026 1 min read

What this sample demonstrates

Every article approved in the Hadiati SEO platform lands in this repository as a markdown file under content/blog/ (English) or content/ar/blog/ (Arabic). A GitHub Action then renders it into a real page that matches the hand-built posts exactly — same hero panel, same 720px prose column, same footer and navigation chrome.

The renderer handles the markdown our platform actually produces:

  • Section headings become styled H2s in the brand blue
  • Bold text and italic text carry through
  • Links like this one render with the site's underline style
  • Ordered and unordered lists keep the prose rhythm

What happens on every push

  1. The platform commits a markdown file to content/blog/ on main
  2. The render workflow wakes up, parses frontmatter and body
  3. A full page is written to blog/, the listing card is added to blogs.html, and sitemap.xml gets a new entry
  4. Coolify sees the push and redeploys the static site

The whole chain is deterministic: running the renderer twice in a row produces zero diff, so the Action only ever commits when something actually changed.

Technical notes

The renderer is a zero-dependency Node script at scripts/render-blog.mjs. It escapes raw HTML in the markdown, so content like <script>alert(1)</script> renders as harmless text. Code blocks survive too:

node scripts/render-blog.mjs

How to remove this sample

Delete this markdown file and push. The renderer garbage-collects the generated page, the card on the blog listing, and the sitemap entry. Hand-made pages are never touched — only files the renderer itself generated.