skills/timescale/marketing-skills/seo-article-writer

seo-article-writer

Installation
SKILL.md

SEO Article Writer

This skill orchestrates the full SEO article workflow: from brief to verified, reviewed draft. It loads brand context, verifies product terminology against Tiger Docs, discovers internal links, writes the article to a file, runs automated quality checks, verifies competitive claims via web search, and auto-triggers content-reviewer for a full rubric evaluation.

When to use this skill

  • The user explicitly says "SEO article," "SEO content," "GEO article," "AEO article," "SEO brief," or "content brief for SEO"
  • brand-voice-writer escalates an ambiguous request after the user confirms SEO intent

When NOT to use this skill

  • Generic blog posts, comparison posts, roundups, or "vs" articles that don't explicitly mention SEO/GEO/AEO and were not escalated by brand-voice-writer — those route to brand-voice-writer
  • Content review requests — those route to content-reviewer
  • Landing pages, emails, social posts — those route to brand-voice-writer

Step 0: Pre-flight

Tiger Den (required)

Read REFERENCES.md from the plugin root and run the pre-flight check described there. Call list_marketing_references() to verify Tiger Den is reachable. If it fails or the tool is not found, STOP — do not continue. Follow the error handling in REFERENCES.md.

No Fly List (required)

Fetch the No Fly List:

get_marketing_reference(slug: "no-fly-list")

This is a list of customers who cannot be publicly referenced. Load these names as a hard constraint: never include any No Fly List customer in any output — not as named examples, proof points, customer quotes, case study references, or any other mention. If the user requests content featuring or referencing a No Fly List customer, stop and inform them that this customer cannot be publicly referenced. If a No Fly List name appears in source material you are working from, omit it from all outputs.

Tiger Docs (soft dependency)

Call search_docs(source: "tiger", search_type: "keyword", query: "hypertable", limit: 1) to confirm Tiger Docs is reachable.

If it fails or the tool is not found, warn the user and continue:

"Tiger Docs is not reachable. I'll proceed without terminology verification or docs link discovery. Product feature descriptions will rely on the brief and product-marketing-context only. Consider verifying technical claims manually before publishing."

When Tiger Docs is unavailable, Steps 4-5 are skipped entirely.

Step 1: Load brand context

Fetch the same marketing reference documents that brand-voice-writer uses:

  • product-marketing-context — audience, positioning, terminology, competitive landscape
  • brand-voice-guide — writing instructions, WABL principle, absolute rules, content type guidance
get_marketing_context(slugs: ["product-marketing-context", "brand-voice-guide"])

If Tiger Den is not connected, do not proceed — tell the user to run /setup. See REFERENCES.md for details.

Note: This replicates brand-voice-writer's Step 1. If brand-voice-writer's reference doc slugs change, update this step to match.

Step 2: Parse the brief

Read the brief file or pasted content. Extract:

  • Target keyword cluster — primary keyword + variants
  • Target word count
  • Heading structure — H1, H2s, H3s
  • Internal links table — if provided
  • Structured data requirements — FAQ schema, ItemList, Article schema
  • Branding instructions — e.g., "Use Tiger Data throughout, only TimescaleDB for open-source context"

If any of these are ambiguous or missing, confirm with the user before proceeding.

Step 3: Tiger Den content search

Search Tiger Den for existing content related to the target keywords:

search_content(query: "{primary keyword}")
search_content(query: "{keyword variant 1}")

Purpose:

  • Identify internal linking opportunities beyond what the brief specifies
  • Avoid retreading content that already exists
  • Find supporting material (case studies, data points) that can strengthen the article

Collect all relevant URLs as internal linking candidates. These are marketing site links (/learn/, /blog/, /cloud, etc.).

Step 4: Tiger Docs verification and link discovery

Skip this step if Tiger Docs was unreachable in Step 0.

Search Tiger Docs for every Tiger Data product feature mentioned in the brief. This covers Tiger Data features only, not competitor products.

Verification: For each feature (hypertables, continuous aggregates, Hypercore, compression, deployment regions, etc.):

  • Confirm the current correct terminology
  • Confirm the current correct capability description and specs
  • Confirm deployment/availability information
search_docs(source: "tiger", search_type: "keyword", query: "{feature name}")

Link discovery: Collect docs URLs for technical features. These are documentation links (/docs/...).

Linking preference:

  • Docs pages for technical features (Hypercore, continuous aggregates, hypertables, API references)
  • Marketing pages for positioning content (comparisons, alternatives, product overview)

Step 5: Flag discrepancies

Skip this step if Tiger Docs was unreachable in Step 0 or no discrepancies were found in Step 4.

This step is non-blocking. Present discrepancies, then continue automatically:

Tiger Docs found [N] discrepancies with the brief:

  1. Brief says "[X]" — Tiger Docs says "[Y]" (source: [docs URL])
  2. ...

Using Tiger Docs as the source of truth for the draft. If any of these should be handled differently, let me know after the draft is complete and I'll revise.

Do NOT wait for user confirmation. Proceed to Step 6 immediately after presenting discrepancies.

Output artifact

The skill always writes to a markdown file. The file is created at Step 6 and modified in-place at Steps 7 and 9.

File path: {working-directory}/{slugified-primary-keyword}.md

Example: primary keyword "managed time series database" → managed-time-series-database.md in the current working directory.

Collision handling: If the file already exists, ask the user before overwriting:

{filename} already exists. Overwrite it, or save to a different name?

Do not silently overwrite. Do not auto-generate versioned suffixes.

Step 6: Write the article

Write the full article to the output artifact file following the brief's heading structure. Apply:

  • Brand voice from Step 1 — product-marketing-context for what to say, brand-voice-guide for how to say it
  • Internal links from Steps 3-4 — Tiger Den marketing links + Tiger Docs documentation links, all using full URLs with https://www.tigerdata.com/ prefix
  • No external links to competitor pages — mention competitors by name for editorial balance, but do not link to their websites. Keep all links pointing to Tiger Data properties (tigerdata.com, Tiger Docs) or neutral open-source project pages (e.g., GitHub repos). This prevents passing link equity to competitors.
  • Source links for verifiable factual claims should point to Tiger Data's own coverage where available (e.g., link AWS Timestream references to our /learn/aws-time-series-database-understanding-your-options page rather than aws.amazon.com)
  • AI slop self-check per brand-voice-guide: negative seesaws, forced triples, copula dodging, vocabulary cluster, Hallmark-card endings, em dashes (banned)

Write the complete article to the file using the Write tool.

Step 7: Post-write automated checks

Before presenting the article, run these checks against the written file:

  1. Em dash check — Search the file for (U+2014). If any found, fix ALL instances immediately. Zero tolerance.

  2. Keyword placement — Verify the primary keyword (or close variant) appears in:

    • H1
    • First 100 words
    • At least one H2
  3. Link format — Verify all links are full URLs starting with https://. Flag and fix any relative paths.

  4. Word count — Count words and compare against the brief's target range. Report the count.

  5. Words-to-avoid check — Search the file for terms flagged in product-marketing-context (the glossary's "words to avoid" section). Fix any occurrences.

Fix all issues found. Re-run checks after fixes. Do not present the article until all checks pass.

Step 8: Competitive verification

This step requires web search. If web search is unavailable, warn the user and skip:

"Web search is not available. Competitive verification is skipped. Competitor claims in the article are based on the brief only and have not been verified against current sources. Consider verifying manually before publishing."

After the draft is complete, run web searches to verify key competitor claims:

  • Does each competitor product still exist as described?
  • Have pricing models changed?
  • Have products been deprecated, discontinued, or rebranded?
  • Have competitors launched new offerings relevant to the comparison?

This is post-draft verification, not pre-draft research. The brief is the primary source; this step catches staleness.

Step 9: Update draft

If competitive verification finds stale information, update the article file and present the specific changes made:

Competitive verification found [N] issues:

  1. [Product X] has been [discontinued/rebranded/changed]. Source: [URL]
  2. ...

Changes made to the draft:

  • Section "[heading]": changed "[old claim]" to "[new claim]" based on [source URL]
  • ...

If no issues found, report: "Competitive verification passed clean — all competitor claims verified as current."

Step 10: Auto-trigger content-reviewer

Invoke content-reviewer using the Skill tool:

Skill: tigerdata-marketing-skills:content-reviewer

Immediately provide the review context so the reviewer skips its own discovery:

Review the SEO article at {file_path}.

Content type: SEO Mode (skip classification). Target keyword cluster: {keywords extracted from brief in Step 2} Original brief: {brief file path or "pasted inline"}

This article was produced by seo-article-writer and has already passed automated checks (em dashes, keyword placement, link format, word count). Focus your review on the 7 SEO rubric dimensions, editorial quality, and brand voice.

Step 11: Handoff

Present the review findings to the user. The user directs any fixes.

If the reviewer's brand voice check detects AI patterns, suggest:

"The reviewer flagged some AI writing patterns. Want me to run /de-slop on the article for a cleanup pass?"

The user decides whether to run de-slop — it is not auto-triggered.

Weekly Installs
1
GitHub Stars
5
First Seen
Apr 13, 2026