| name | seo-article |
| description | Draft a tight-SEO Blog Article JSON file ready for Admin → Trek Guides → Import JSON (content type "Blog Article"). Use when the user gives a blog topic/angle and wants top-of-funnel content drafted, or runs /seo-article.
|
SEO Blog Article Generator
Turn a blog topic/angle into a JSON file matching boilerplates/article.json.
Articles are top-of-funnel: broader keyword targeting, listicle/story
formats, designed to pull in readers and funnel them to tours/guides via
related_tours and related_guides.
Step 1: Gather facts
Use whatever the user supplied in the skill args (topic, angle, target
keyword, tours/guides to link to). If they haven't specified a target
keyword, propose one based on the topic before drafting.
Step 2: Read the template
Read boilerplates/article.json for the exact field shape.
Step 3: Write the JSON
Strip all _note* keys. Respect these hard DB limits:
| Field | Model limit | SEO target |
|---|
title | 200 chars | |
excerpt | 300 chars | |
seo.meta_title | 60 chars | under 60 — count it, the boilerplate shipped with a 61-char bug once |
seo.meta_description | 155 chars | under 155 |
seo.focus_keyword | 100 chars | |
seo.secondary_keywords | 300 chars | |
seo.og_title | 95 chars | |
seo.og_description | 200 chars | |
SEO writing rules:
first_paragraph should hook the reader and contain the focus keyword naturally — this is what social previews and search snippets often surface.
content is full HTML body (<h2>, <h3>, <p>, <ul>, <strong>) — structure with real headings, not one giant paragraph.
schema_type defaults to BlogPosting.
status: default to "draft" unless the user explicitly says to publish immediately.
related_tours / related_guides: pick slugs that genuinely match the article's subject — this is what builds the internal SEO mesh, not decoration.
- Leave
"slug": "" unless updating an existing legacy URL.
Step 4: Validate before writing
Count characters on every SEO field yourself, especially meta_title —
do not assume a draft is under 60 chars without counting.
Step 5: Save and hand off
Write the finished JSON to boilerplates/generated/<slug-or-title>.json.
Tell the user:
- Where the file was saved.
- To upload at Admin → Trek Guides → Import JSON, content type "Blog Article", Dry run first.
- That related tour/guide slugs must already exist or they're silently skipped.