HERON

Role for AI agents

Role: Content and SEO

Write and move pages, fill in the SEO block, look after translations and old addresses. Shared rules are on the page Instructions for AI agents.

How a page works, in plain words, is in the guide Pages and content; what is generated on its own is in SEO.

In plain words

The content role is the writer and editor of the site. It works only with texts and pictures: it creates pages, fills the three search lines at the top, writes the sections, adds translations and moves texts from an old site. It does not touch the look of the site or its scripts.

Example. To add a service page, the content role copies an existing service file under a new name, changes title, h1, description and the text, adds the photo to media/ and runs the check. If a fact is missing — a price, a phone number — it does not invent it: it leaves the field empty and adds a question to the list for the owner.

You need this page when you give writing work to an agent, or do it yourself and want a checklist.

Input and output

Input: the site structure (keys, types, sections per type, languages) and the client's texts or facts. For an existing site, the folder itself.

Output: page files in content/ per language, images in media/, reference data in data/, redirect_from in the pages, a list of content debts and questions.

1. Create the file

$H page service roof my-site --folder services            # → content/MAIN_LANG/services/roof.md
$H page service roof my-site --folder services --lang ru  # translation

heron page writes the full SEO block and placeholders for all sections the theme declared for the type (types.TYPE.uses). Copying a ready file works too, with the same result. A filled-in sample page: templates/page.md.

The file name is the page key: Latin letters, digits, hyphen; the same in every language. A different address for a translation comes from the slug field.

2. The SEO block

Eight groups; their order and comments are kept; empty optional fields stay commented out.

Group What to fill in
1. Main title (up to 60 characters, for search results), h1 (for whoever opened the page; not a copy of title), description (up to 155 characters: what the reader gets). slug if the address differs from the file name. Do not touch canonical and robots
2. Search queries the main one and the extra ones. HERON does not read them; the rule is one intent, one page
3–4. Open Graph, Twitter only if different from title/description/the default image
5. Schema.org refinements of this page's markup; organisation data goes not here but to site.yaml
6. Card image + image_alt for the catalog; order; type if the section does not set it
7. Service date, updated, published, noindex
8. Links the theme's link fields (file names without .md) and redirect_from

Every field and its default: the contract, page format (§4.2).

3. Text

  • intro: before the first ##, no more than two paragraphs: the lead and the promise;
  • sections: ## Title {#anchor}, anchors from the type's uses. A typo in an anchor shows up as "the theme does not use" in the report;
  • the form of a section comes from its markup: a list, 1. steps, ### Question? FAQ, key | value facts, a table, > a tip; the classes .alert, .timeline, .gallery in the anchor. The forms table: page format (§4.4);
  • no material, no section. Delete the placeholder from heron page instead of filling it with general words.

5. Images

Files go into media/, with the path from the site root: media/services/roof.png. Illustrations as PNG/WebP with a transparent background, photos as JPEG; HERON makes all the sizes itself. Every image has alt (image_alt, the caption in ![…]).

6. Moving a site

  • an old address whose content moved goes into redirect_from of the new page, in Cyrillic or as %D0%…;
  • two or three old pages about one thing become one new page, with all their addresses in its redirect_from;
  • addresses that no longer exist go into gone in site.yaml, not into a page.

The order of a move: the guide SEO, part "Moving from an old site".

7. Languages

A translation is a file with the same name in the language folder, for example content/ru/. No translation: the page stays in the main language and the report has a warning. The main language cannot be empty in production (E021).

Checklist

  • every page of the structure has a file; file names are the same in every language
  • title, h1, description are filled in and differ; group 2 is filled in
  • not a single invented fact; anything unconfirmed goes to the questions
  • no empty placeholder sections
  • links by key; relations by theme fields
  • images have alt
  • old addresses are split between redirect_from and gone
  • check has no errors; the "Not filled in" summary is in the report

Source

This page mirrors docs/agents/content.md from the prod branch. The repository is updated first: content.md on GitHub. The original is written in Russian.