Skip to main content

Writing & SEO Guide

Internal reference for everyone writing on Shekinah. Every published page should satisfy the front-matter contract below; the rest of the site's search performance depends on it.

Why front matter decides your ranking

Docusaurus maps a document's front matter directly onto the tags a search engine reads:

Front matterBecomesWhy it matters
title<title>, og:title, twitter:titleThe single strongest on-page signal. It is also what a reader sees in the results list.
description<meta name="description">, og:descriptionThe snippet under the headline. It does not rank directly, but a compelling one wins the click.
keywords<meta name="keywords">Ignored by Google, honoured by some internal search and social tooling. Cheap to set, so set it.
imageog:image, twitter:imageThe preview card when the page is shared. Without one, shares fall back to the site default.
slugthe URL pathKeep it short, lowercase, hyphenated, and stable — changing it later breaks every existing link.

If you omit title and description, Docusaurus derives them from the first heading and first paragraph. That is usually worse than writing them deliberately, because the first paragraph is written to be read in context, not to stand alone in a results page.

The contract

---
title: Who is the Holy Spirit? # <= 60 characters; front-load the keyword
description: A study of the person and # 120-160 characters; reads as a sentence,
work of the Holy Spirit — who He is, # not a keyword list
what He does, and why it matters.
keywords:
- who is the holy spirit
- holy spirit bible study
slug: who-is-the-holy-spirit
image: /img/notes/holy-spirit-cover.jpg # optional; omit to use the site default
---

Rules of thumb:

  • One <h1> per page, and let the title do that job — do not repeat it as the first heading in the body. Use ## for sections beneath it.
  • Front-load the keyword. "Who is the Holy Spirit?" beats "A Study Concerning the Identity of the Holy Spirit", because the first few words carry the most weight.
  • Never change a published slug. If a title must change, keep the slug and change only title. Renaming a slug silently breaks every inbound link.
  • Force a search snippet break by placing {/* truncate */} before the interesting part of an article (blog only). Without it, the list view shows the whole post.

Linking back to Zera

Every note and article should give the reader a way to reach the platform. Import the shared component and drop it in — do not hand-write the markup, or the anchor text will drift:

import ZeraCTA from '@site/src/components/ZeraCTA';

<ZeraCTA />

It accepts a few overrides when the default wording does not fit the page:

<ZeraCTA
title="Manage your ministry online"
to="https://zera.im/gospify/play/"
label="Try Gospify"
>
Share the Gospel in audio, worldwide.
</ZeraCTA>

The component appends utm_source=shekinah so traffic from here is distinguishable in analytics.

When your note is not ready

A file that is committed but unfinished still gets built, linked, and crawled. Mark it so it does not:

  • Docs — add unlisted: true. The URL keeps working for anyone you send it to, but the page drops out of the sitemap and the in-site search index. Remove the flag when the note is done.
  • Blog — add draft: true. The post is excluded from the build entirely.
  • Standalone pages — same as blog: draft: true.

This matters because a crawl of thin or placeholder content drags down the whole site, and the boilerplate this template shipped with is a good example — it is currently unlisted for exactly that reason.