agentsclimarketplace

Seo brand foundation

Skill siddiqss/semantic-seo-suite/skills/seo-brand-foundation

Establish or update a brand's semantic-SEO foundation — central entity, source context, audience, competitors, EAV attribute inventory, and the locked-facts ledger. Use this whenever the user starts SEO work for a new brand or domain, says "onboard this brand", "set up SEO for X", "build the entity profile", mentions source context or central entity, or asks for a topical map / content plan for a brand that has no entity-profile.json yet. Always run this before topical-map-builder if the brand's foundation is missing. Triggers even when the user only says "let's do SEO for a domain" without naming this step.From its SKILL.md

Install
npx -y skills add siddiqss/semantic-seo-suite --skill seo-brand-foundation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 1 credential source: `brands/<slug>/config.yaml`.
  • 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 4 commands, including `../../scripts/crawl_sitemap.py` and 3 more.

SKILL.md

4.5 KB, 967 tokens by cl100k_base, as published. Nobody here has run it

seo-brand-foundation

Produce a rigorous, provenance-tagged foundation that everything downstream depends on. Getting the central entity and core/outer boundary right here is worth more than any later cleverness — a perfect map of the wrong site is still wrong.

Read ../../framework/source-context.md and ../../framework/eav-modeling.md before starting. Read ../../framework/00-overview.md if you haven't this session (it sets the provenance rules you must follow).

Inputs

  • Brand domain + niche (from the user).
  • brands/<slug>/config.yaml — read it first for grounding tier and sources.

Workflow

  1. Load config. Determine tier. Everything below adapts to what's enabled.

  2. Understand the current site (if it exists).

    • T1 (crawl: true): run ../../scripts/crawl_sitemap.py then ../../scripts/extract_page_content.py on home, about, product/pricing, and the top few content pages to infer what the site currently claims to be. Record as measured (crawl).
    • T0: web_search the brand + fetch the homepage to infer the same, labeled asserted where you're inferring.
  3. Resolve the central entity.

    • Distinguish it from the brand name — it's what the brand is about (see source-context.md "brand-as-central-entity" failure mode).
    • T1 (wikidata: true): ../../scripts/wikidata_entity.py to get canonical typing
      • a real attribute set (measured). T0: type it by judgement (asserted).
  4. Write source context + central intent. What the brand is, who for, how it monetizes, and the one intent it exists to satisfy. Derive the core/outer boundary from monetization (source-context.md). If you can't cleanly classify a topic as core or outer later, the boundary here is under-specified — fix it now.

  5. Personas + competitor entities. 2–4 personas (needs, sophistication). Competitors via web_search (T0) or domain-competitor data (T2), each tagged.

  6. Brand EAV attribute inventory. Decompose the brand's own offering into attributes (defining/unique/rare/common) per eav-modeling.md. Factual values here must be grounded — see step 7.

  7. Seed locked-facts.json. For every concrete brand fact (price, spec, capability, stat) you'd want articles to state: confirm it with the user or a cited source, then write it to brands/<slug>/locked-facts.json with source + verified_date. If a fact isn't confirmed, it does NOT go in — and articles won't be allowed to state it. Ask the user to confirm brand facts; never invent them to fill the ledger.

  8. Emit artifacts.

    • brands/<slug>/entity-profile.json — must validate against ../../templates/entity-profile.schema.json; every factual field provenance-tagged (use ../../scripts/provenance.py).
    • brands/<slug>/locked-facts.json — must validate against its schema.
    • Append a one-page human-readable foundation summary to the workspace (brands/<slug>/foundation-summary.md).

Interview, don't assume

When information is missing (monetization details, what they refuse to cover, unverified specs), ask the user rather than guessing. The will-not-cover list and the monetization model are the two answers that most shape the map — get them explicitly.

Definition of done

  • entity-profile.json validates; central entity is the subject, not the brand name.
  • Core/outer boundary is stated as a rule you could apply to a new topic.
  • locked-facts.json exists (may be small) with sources on every fact.
  • No bare numbers anywhere: run provenance.audit() mentally / via the validator.

Grounding ladder

  • T0: LLM + web_search; most fields asserted; entity typed by judgement.
  • T1: + Wikidata typing (measured) + site crawl of claimed identity (measured).
  • T2: + DataForSEO domain-competitor data for the competitor list (measured).

What ships with it: 1 file

1.4 KB alongside SKILL.md

evals/

Gives 0 of the 12 instructions most marketing audience skills give in 967 tokens

Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07

  • Apply Poppins font to headingsin 41 of 690, across 6 files
  • Apply Lora font to body textin 41 of 690, across 6 files
  • Use Arial fallback for headingsin 39 of 690, across 4 files
  • Use Georgia fallback for body textin 39 of 690, across 4 files
  • Maintain text hierarchy and formattingin 39 of 690, across 4 files
  • Use accent colors for non-text shapesin 38 of 690, across 3 files
  • Use RGB values for precise color matchingin 38 of 690, across 3 files
  • Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
  • Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
  • Use active voice instead of passive voicein 26 of 690, across 10 files
  • Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
  • Prioritize clarity over clevernessin 22 of 690, across 8 files

Said here and by no other author read

  • read framework files before starting
  • crawl existing site when enabled
  • resolve central entity separate from brand name
  • write source context and core outer boundary
  • create personas and competitor entities
  • build brand EAV attribute inventory

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.