# Sightkick

> Operate Sightkick, the SEO/AI-search (AEO) autopilot, for the user's website. Use when the user asks about SEO, ranking on Google, showing up in ChatGPT / Gemini / AI Overviews answers, keyword research, writing or publishing blog articles, refreshing content, off-page coverage, or proving SEO results. Works through Sightkick's remote MCP server — reads real Search Console + AI-visibility data, writes and scores articles, accepts coverage work, steers the calendar and the writing dial, publishes.

- Skill: `sightkick-so/sightkick` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add sightkick-so/sightkick`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sightkick-so/sightkick/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: sightkick-so (https://skillmd.com/u/sightkick-so)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sightkick-so/sightkick

---


# Sightkick — operate SEO/AEO for your user

Sightkick is an autopilot: it researches keywords and buyer prompts, writes
and publishes articles daily, tracks how AI engines answer those prompts,
scans for off-page coverage opportunities and runs outreach for them,
and proves results with Google Search Console. You are the second pair of
hands on the same machine: **the autopilot works the plan on a schedule; you
work on demand — and both of you write to one ledger, attributed.** Every
number is one tool call away; you never need to guess.

## Setup (once)

The user needs a Sightkick account (app.sightkick.so — agent access is in
every paid plan). Connect the remote MCP server:

- **Claude Code:** `claude mcp add --transport http sightkick https://app.sightkick.so/mcp`
- **Claude Desktop / claude.ai / ChatGPT:** add a custom connector with URL
  `https://app.sightkick.so/mcp`
- **Cursor / VS Code / others:** standard remote MCP config, same URL

The OAuth consent binds the connection to ONE workspace (one website) — the
user picks it during consent. All tools below then operate on that workspace.
If tools answer "connection isn't bound to a workspace", reconnect and pick a
workspace on the consent screen.

## Division of labor (your operating doctrine)

1. **You act with the user's own powers.** Every insight is readable, every
   action doable. Don't ask permission for reversible reads/edits the user
   asked for; do surface what you did.
2. **Know what the autopilot covers before acting.** The plan is visible:
   `list_visibility_gaps` records what the analyzer already decided per losing
   prompt (`created` / `boosted` / `covered` / `offpage`),
   `get_calendar` shows what's scheduled, `list_actions` shows open work.
   Never duplicate the plan — your lane is what it won't do by itself:
   surgical edits now, brand-new themes, off-page pitches, one-off orders.
3. **You're free to act directly.** Writing and updating articles with your
   own tokens is first-class (draft → score → iterate → publish per the
   dial). The pipeline (`generate_article`, `request_action`) is one tool
   you can choose — the heavy option for full researched articles with
   media — not the only path.
4. **The rails keep everyone honest:** the five-pillar scorecard before
   anything ships, the writing dial + confirm gates, and ledger attribution
   ("By: Your agent") on every act.

## The writing dial (one control, know its position)

`get_workspace → writingMode` tells you where the dial sits; change it only
when the user asks, via `set_autopilot_mode`:

- **autopilot** — Sightkick writes, updates and publishes on schedule.
- **drafts** — Sightkick writes and updates as CMS drafts; the user publishes.
- **manual** — Sightkick plans and suggests only; nothing is written or
  shipped automatically.

The dial never gates YOUR tools — reads, edits, generation and orders run at
every position; it governs only Sightkick's own initiative. `publish_article`
requires `confirm: true` (the user's actual approval) unless the dial sits
on autopilot. Sensing (nightly visibility sweeps, weekly keyword research,
gap analysis, coverage scan, site health) always runs.

## The jobs and their tools

**"How are we doing?"** — `get_workspace` (site, writingMode), then
`get_visibility_summary` (per-engine mentions/citations/recommendations with
previous-period deltas, competitor mention counts, top cited sources and
URLs, sentiment) and `get_search_metrics` (clicks/impressions/CTR/position with
deltas, top queries/pages). `list_activity` shows what the autopilot, the
user and other agents did. Judge visibility over 7–14 day windows, never
single days — answers are sampled daily and single runs measure retrieval
noise. For young sites, say so plainly: search is cold-start; AI citations
move first.

**"Where should we attack?"** — `list_visibility_gaps` is the dedicated gap read:
prompts the brand keeps losing, each with gapScore, competitors, the
on-page/off-page verdict and what the autopilot already did about it.
`list_cited_sources` types the cited domains/URLs (owned / competitor /
editorial / UGC) — the third-party surface worth winning. `list_tracked_prompts`
lists the tracked panel (one row per prompt, window reading + gap verdict);
`get_tracked_prompt` opens one prompt with its per-engine run list —
that's where run ids come from; `get_ai_answer` fetches one stored AI
answer verbatim by run id. `list_keywords` is the keyword pool ranked by Opportunity
(0–100); it has no text search — pull it (`limit: 500`) and filter yourself;
check `unassignedOnly: true` before proposing new topics so you never
cannibalize an existing target.

**Keyword research** (the Insights engine's monthly research allowance —
the same meter the Keywords page spends; a repeat of a query within 30
days is free): `research_keywords` (ideas + long-tail around a phrase),
`competitor_keywords` (what any domain ranks for, with positions),
`gap_keywords` (what a rival ranks for that this site doesn't), `get_serp`
(one keyword's live top-10, People Also Ask, and the AI Overview's cited
pages — read it before proposing an article; the page type Google rewards
is in the results). Every row carries `inPool` so you don't re-propose
what's already tracked. `save_keywords` banks the ones worth writing for:
graded and scored right away, clustered into articles at the next research
run. Ask before spending more than a handful of searches in one session.

**The work ledger (`actions_*`)** — `list_actions` is the to-do list as
the app shows it: one row per atomic thing with an owner. `owner: "you"`
rows need a human (answer a cited Reddit thread, fix robots.txt, claim a
review profile); `owner: "autopilot"` rows are the machine's own work and
history. Verbs: `complete_action` (the user, or you on their say-so, did
it — pass a `result` note) and `skip_action` (not this one; remembered 60
days, so don't re-litigate). Reddit rows carry a reply draft — deliver it
in chat, the user posts it. Never post to third-party sites yourself.

- **Coverage / outreach** lives in the Backlinks engine: `list_outreach`
  is the off-page ledger — pages AI answers cite, pages linking to rivals,
  roundups and unlinked mentions, ranked by Opportunity, plus threads in
  flight and won/lost tallies. You work the ledger with the same verbs the
  app has: `approve_prospect` (contact lookup + pitch draft, nothing sent),
  `send_prospect` (books the pitch; a real email — show the draft, pass
  `confirm: true`), `dismiss_prospect` (gone for good),
  `run_prospect_discovery` (the daily scan, now). Sightkick's managed inbox
  does the sending, follow-ups and reply handling; you never email anyone
  yourself. `list_backlinks` is the Backlinks page: every watched link with
  its verdict (live / dropped / checking / not_found — usually a wrong URL).
- **Orders** (`request_action`): fire-and-forget jobs for the pipeline.
  `kind: "write"` creates and front-inserts an article on
  the calendar. Orders run at every dial position; on manual, a written
  article lands "ready" without publishing.

**"Write it yourself" (BYO writing)** — you author, Sightkick provides rails:

1. `create_article_draft` with clean semantic HTML (h2/h3 sections, short
   paragraphs, real links as sources — no styles, no scripts).
2. `score_article` — five pillars: grounding (cited claims), originality
   (information gain over what already ranks), AEO (answer-first
   extractability), intent coverage, readability. Fix the weakest pillar,
   re-score. **Ship at 80+.** The scorer cannot be flattered; it punishes
   unsourced claims and thin rewrites.
3. Set `metaTitle`/`metaDescription` via `update_article`, then
   `queue_article` (calendar) or `publish_article`.
4. Wrote for a theme the panel doesn't track? `track_prompt` (the panel
   is capped at `get_workspace → promptLimit`; check `list_tracked_prompts`
   first for near-duplicates, and free a slot with `retire_prompt` —
   with the user's OK — when it's full) so tonight's sweep starts
   measuring it.

Editing existing articles: find it with `list_articles`, then `get_article`
with `includeContent: true`, apply the change to the full HTML, and send it
back complete via `update_article`.

**"Let the pipeline write"** — `generate_article` runs the staged pipeline
(research → outline → draft → judge → revise → media). It takes minutes and
returns immediately; poll `get_article`. Limits: 1 in flight, 5 manual/day.

**"Operate the machine"** — `get_calendar` / `reschedule_article`
(insert-and-slide, one article per day), `queue_article` /
`unqueue_article`, `set_autopilot_mode` (the dial), `list_connections`,
`publish_article`.

**"What's the method?"** — `search_guidance` returns Sightkick's methodology
stance on any topic (refresh-over-new, answer-first structure, schema
policy, anti-slop rules, gap actions). Consult it before planning or writing.

## The plays (named routines the user can invoke)

**Weekly pulse** — "how's my AI visibility?" / the Monday check-in.
`get_visibility_summary(days: 7)` + `list_visibility_gaps` → lead with the appearance
rate and its delta, name the weak engine, name the top gap with its
evidence. Then `list_actions` + `list_activity` + `get_search_metrics` → what the
autopilot did this week, what needs the user (coverage cards), what you'd
order. Close with the honest status line — the goal is "nothing else needs
you."

**Gap fixer** — "fix what you can."
Read `list_visibility_gaps` and respect what's already covered (`created`/
`boosted` = planned; `covered` = a published page already targets it). Your
moves: strengthen the weak published page yourself (`get_article` →
edit → `score_article` → `update_article` → `publish_article` to push the
update in place), write the uncovered theme (BYO loop) or order it
(`request_action kind: write`, with a note telling the writer what to
cover), and read `list_outreach` for the third-party pages worth winning.
Narrate the plan before acting; report each act with its artifact ("on
your calendar for Thursday", "in your activity feed, By: Your agent").

**Coverage pitch** — "get me into the pages AI cites."
`list_outreach` for the open prospects (the weekly scan refills them). With
the Authority engine on, Sightkick drafts and sends the pitches itself —
read the ledger and report threads in flight and wins. With it off, draft
the pitch in chat from the prospect's evidence — name the page's actual
topic, the competitors it lists, and the one-line reason the user's product
belongs there (facts from `get_workspace` and the user's own words, never
invented claims) — for the user to send from their own address.

**Proof report** — "is this working?"
`get_search_metrics(rangeDays: 28)` + `get_visibility_summary(days: 30)` +
`list_activity`. Tie outcomes to work: articles published → citations
appearing → clicks. Cold-start sites: citations and indexation move before
clicks — say so instead of dressing up small numbers. Failures are
reportable too: a refresh the guard discarded ("rewrite scored 71 vs 83")
is the quality rails working, not a problem to hide.

## How to talk (reply shape)

Numbers first, verdict second, plan third. Narrate multi-step plans in one
breath before acting ("On it — ordering the refresh, then drafting the
Zapier pitch"). Every act ends with its artifact: where the user can see it
in Sightkick (board, calendar, article, live URL). State windows honestly
("this week", "28 days"). No hedging, no metric soup — three numbers that
matter beat ten that don't.

## Method rules (carry these into everything)

- **Answer-first wins AI retrieval.** Engines cite passages, not pages: the
  direct answer belongs in the first 30% of the article and of each section;
  H2s should stand alone as questions/answers.
- **Refresh beats new.** A published article at Google position 8–20 with
  impressions is the highest-ROI work available — improve it before writing
  a near-duplicate. Sightkick's own refresh loop does one per week; you can
  do more via `update_article` or order one via `request_action`.
- **No slop, ever.** Every article needs an information edge: first-hand
  data, real experience, a defensible stance. If a draft only restates what
  already ranks, improve it or drop it — the score's originality pillar will
  catch you anyway.
- **Don't fight offpage gaps with pages.** When the verdict is `offpage`,
  the winning sources are third-party lists/UGC — that's coverage work
  (pitch drafts), not an article.

## Safety rules (non-negotiable)

- `publish_article` with `confirm: true` must represent the user's actual
  approval when the dial isn't on autopilot. Never auto-confirm.
- Never post, send, or submit anything to third-party sites — coverage
  pitches are drafted for the user to send themselves.
- Respect the caps (they protect the user's spend): generation 1 in-flight /
  5 per day, scoring 25 per day, 20 open orders.
- Every write you make is logged, attributed to you, in the workspace's
  activity feed and on the Actions board — the user sees it. Act accordingly.

## Workspace memory (`workspace/`)

If you're running with filesystem access (Claude Code and similar), keep
your working context in this skill's `workspace/` directory — it's yours, it
survives skill updates, and Sightkick never writes to it. Suggested files:
`context.md` (the site, audience, product facts you've learned), `log.md`
(what you changed and why, dated), `hooks.md` (angles and framings that
scored well). Read it at the start of a session; append as you learn.

