
SEO content
The Real Cost of Not Publishing SEO Content Consistently
What inconsistent publishing actually costs you in organic traffic over time.
Read more
Blog Sections
A ready-made blog section for your homepage or blog index page — a responsive grid of image-led cards
Guides and tips on SEO, content, and growth.

What inconsistent publishing actually costs you in organic traffic over time.

A repeatable, automated content system that keeps a roofing site ranking locally.

The checklist multi-location businesses need to rank in every market they serve.
See how to use it on your page, then copy the component file itself.
| Prop | Type | Default | Description |
|---|---|---|---|
| tagline | string | "Latest updates" | Small label shown above the heading |
| heading | string | "From the blog" | Section heading |
| description | string | — | Short text shown under the heading |
| viewAllHref | string | "/blog" | Link for the "View all posts" button |
| posts | BlogPost[] | — | Array of articles to display |
| posts[].slug | string | — | URL identifier — used to link to the full article |
| posts[].title | string | — | Article title, shown as the card heading |
| posts[].cover_image | string | null | null | Cover image URL — shows a placeholder if missing |
| posts[].cover_image_alt | string | null | null | Alt text for the cover image - falls back to the title if omitted |
| posts[].meta_description | string | null | null | Short description shown under the title |
| posts[].focus_keyword | string | null | null | Shown as a small tag, if set |
| posts[].created_at | string | — | Publish date, shown next to "Read more" |