← UbersuggestCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
changed
Update to Ubersuggest
Snapshot Sep 30, 2026 · 23:18 UTC · version 3.0.0
Collection source: not recorded for this historical snapshot. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.
Supporting file metadata differs
Newly listed paths: agents/openai.yaml. This compares saved file lists, not package contents; a different collection source can change the list.
Observed in package metadata. These changes alone do not establish a new customer-facing feature.
Supporting files
Before
[]
After
[{"relative_path":"agents/openai.yaml","size_in_bytes":667}]
Compare saved observations
Download comparison JSONFull technical diff · 1 changed fields
changed /included_files
BEFORE
[]
AFTER
[
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 667
}
]Full snapshot data
{
"name": "project-setup",
"description": "Set a website up in Ubersuggest for the first time — create the project, describe the business, pick competitors, choose the topics and prompts tracked in AI answers, and select keywords to rank-track. Use when the user has no project yet, says they just signed up, asks how to get started, wants to track a site, add a domain, set up rank tracking, or start monitoring their brand in ChatGPT and other AI assistants.\n",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 667
}
],
"skill_md_contents": "---\nname: project-setup\ndescription: >\n Set a website up in Ubersuggest for the first time — create the project,\n describe the business, pick competitors, choose the topics and prompts tracked\n in AI answers, and select keywords to rank-track. Use when the user has no\n project yet, says they just signed up, asks how to get started, wants to track\n a site, add a domain, set up rank tracking, or start monitoring their brand in\n ChatGPT and other AI assistants.\nargument-hint: \"<your website> [where your customers are]\"\n---\n\n# First-time project setup\n\n**Input:** `$ARGUMENTS` — the website to set up, and where its customers are. If\nthat placeholder is empty or still literal, take the website from what the user\nasked; if they named none, ask for the domain — nothing else is required.\n\nYou are setting up the thing every other Ubersuggest workflow reads from. A\nproject is what makes rankings, competitors and AI visibility trackable over\ntime; without one, every other skill can only look at public data.\n\n## Before you start\n\n1. **`auth_status`.** Setting a project up writes to the user's account, so it\n needs login. Not logged in → ask for the connection and stop; there is no\n version of this flow that works without it, and telling the user to create\n the project in the web app instead just gives them the manual work.\n2. **`user_limits`.** Tells you how many projects, keywords, competitors,\n locations and prompts the plan allows. Read it before promising anything —\n on a free plan this is 1 project, 25 keywords, 2 competitors, 1 location and\n 10 prompts.\n3. **`list_projects`.** If the domain is already set up, say so and stop; this\n skill is for a domain that has none. To change an existing one, use\n `add_project_keywords`, `add_project_competitors` or `configure_brand`.\n4. **Resolve the market.** Ask where their customers are and call\n `location_suggest` to get the real `loc_id`. Never guess one — a wrong id\n silently tracks the wrong country, and the numbers look plausible. Default is\n English / United States (2840) if the user does not care.\n\n## Running the setup\n\n`onboard_project` does the whole flow. It takes minutes of server work, so it\nreturns early with `done: false` and a `stage`. **Call it again, passing back\nevery field it returned** (`business_summary`, `competitors`, `topics`,\n`keywords`) — that is what stops it redoing work.\n\n```\nonboard_project({ domain, locations })\n → stage: \"business_summary\" | \"generation\" | \"keywords\" // keep calling\n → stage: \"review\" // STOP HERE\n → stage: \"done\" // project exists\n```\n\nWhile it works, say what it is doing — reading the site, finding competitors,\nwriting prompts, generating keywords. Do not go silent for minutes.\n\nIf it reports the analysis could not read the site, do not invent a business\nsummary. Ask the user what the business does, who it sells to, and what it\noffers, then pass `business_summary` yourself.\n\n## The review stage — never skip it\n\nWhen `stage` comes back `\"review\"`, **nothing has been created yet**, and you\nmust not call again with `confirm: true` on your own judgement. This is the one\npoint where the user decides what gets tracked.\n\nShow them, in plain language, not as raw JSON:\n\n- **The business summary** — is this actually what they do? It is what the AI\n prompts and article generation are grounded on, so a wrong summary poisons\n everything downstream.\n- **The competitors** — each domain, and say which ones you would question.\n Suggested competitors are guesses from the site's content; the user knows\n who they actually lose deals to.\n- **Each topic with its prompts** — this is the most important list on the\n screen. The prompts *are* the measurement: visibility is defined as how often\n the brand shows up in the answers to exactly these questions. Ask whether\n these are how their customers would really ask.\n- **The keywords** — how many are selected and what the plan allows.\n\nThen read out anything in `notes`: lists get trimmed to the plan's limits, and\nthe user should hear what was dropped rather than discover it later.\n\nAsk what they want to change. To apply edits, call again with `confirm: true`\n**and** the corrected `competitors`, `topics` or `keywords` — what you pass wins\nover what was generated. Removing a prompt, renaming a topic or swapping a\ncompetitor is just sending the edited list.\n\nMention once, without labouring it: saving the brand spends one of the account's\nmonthly AI-visibility operations, and prompts can only be changed by replacing\nthe whole list — so fixing it now is free and fixing it later is not.\n\n## After it is done\n\nConfirm what exists now, and set expectations honestly:\n\n- Rank tracking and the first AI visibility report take **about a day** to\n populate. Reading them immediately returns empty, and that is not a failure.\n- `site_audit` works right away and is the useful thing to do next.\n- `brand_config` shows what ended up tracked; `configure_brand` changes it.\n\nThen offer one next step, not a menu — usually the site audit, or\n`seo-action-plan` if they do not know what to do with any of it.\n\n## When things go wrong\n\n- **\"domain already exists\"** — the project is already there. `list_projects`,\n then work with it instead of creating another.\n- **Project or brand limit reached** — the plan is full. Say which limit, and\n that it means archiving something or upgrading. Do not retry.\n- **The project was created but the brand was not** — `notes` will say why\n (usually no AI-visibility slot on the plan, or the monthly operations pool is\n spent). The project is still fully usable; retry the brand later with\n `configure_brand`.\n- **No topics were suggested** — the site gave the analyser nothing to work\n with. Ask the user which two or three topics their customers ask about, then\n use `industry_prompts` to write prompts for them and `configure_brand` to save.\n"
}SHA-256: 3929903bf7e30ffac842e61b069a6874b5fa8e08a5c0101c40a7687fb1a3a4a7