Install
$ agentstack add skill-siddiqss-semantic-seo-suite-seo-brand-foundation ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
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//config.yaml— read it first for grounding tier and sources.
Workflow
- Load config. Determine tier. Everything below adapts to what's enabled.
- Understand the current site (if it exists).
- T1 (
crawl: true): run../../scripts/crawl_sitemap.pythen
../../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_searchthe brand + fetch the homepage to infer the same, labeled
asserted where you're inferring.
- 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.pyto get canonical typing - a real attribute set (
measured). T0: type it by judgement (asserted).
- 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.
- Personas + competitor entities. 2–4 personas (needs, sophistication).
Competitors via web_search (T0) or domain-competitor data (T2), each tagged.
- 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.
- 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//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.
- Emit artifacts.
brands//entity-profile.json— must validate against
../../templates/entity-profile.schema.json; every factual field provenance-tagged (use ../../scripts/provenance.py).
brands//locked-facts.json— must validate against its schema.- Append a one-page human-readable foundation summary to the workspace
(brands//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).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: siddiqss
- Source: siddiqss/semantic-seo-suite
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.