Skip to main content
Select, validate, dedupe, tag, and execute a cycle’s keywords with Pi. You run this at the start of every cycle (and on the first cycle, seeded from the sales call — see Starting the first set of keywords): it turns a client’s call context into a concrete, de-conflicted keyword plan, the input to a month of content.
Theory behind this: we target winnable SERPs and strategic fit rather than raw search volume. See Part 1 §1.4 SERP cliff and §1.5 Intent & cannibalization.

Inputs checklist (before you start)

  • Granola transcript + enhanced notes from the monthly call
  • Post-call notes, Slack messages, or docs from the client
  • Previous month’s review docs (if not the first cycle)
  • Access to Pi (memory already set up for this account)
  • Any keyword lists already teased to the client (Notion proposal, strategy deck, etc.)
  • (Optional) Keywords from Google Search Console

Step 1 — Feed Pi the call context

  • Have Granola running during the call
  • Export the transcript + enhanced notes afterward
  • Collect post-call materials (Slack/email comments, client docs, previous reports)
  • Paste everything into Pi with the prompt below
  • Confirm Pi saved it to memory
here's the transcript and notes from the [month] review call with [client].
[paste Granola transcript + enhanced notes]

post-call notes:
[paste any additional client comments, corrections, or context]

attached: [any files]

save this to memory
What Pi extracts: which verticals/angles the client wants to push, page targets, product updates (live/delayed/changed), content corrections or flags, new USPs or positioning angles, keywords the client explicitly mentioned, and what’s blocked or on hold.

Step 2 — Draft strategy + tag keywords

  • Prompt Pi with the target keyword count + cycle constraints
  • If you have a pre-existing list, include it and clarify these are candidates only (no landing pages created yet)
  • Review Pi’s draft: does it match what the client said? any emphasized verticals missing? any keywords for products/features that aren’t live yet?
  • Push back or add anything obvious before validation
Standard prompt:
based on the latest transcript and review, draft up a strategy.

suggest [N] keywords that we should tackle this cycle.
tag this cycle's keywords as '[cycle tag, e.g., apr to may 2026]'

[add constraints as relevant:]
- don't include keywords for [product/feature] — that's not live until [month].
  tag those for '[future cycle tag]' instead.
- focus on [verticals the client emphasized]
- [any other directives from the call]
With a pre-existing keyword list:
here are keywords i've already proposed to the client as candidates for this cycle:
[paste list]

these haven't been used for landing pages yet — treat them as candidates
that still need validation. include them in your draft and add any others
you think we should target based on the call.

Step 3 — Validate, deduplicate, check for conflicts

  • Send Pi the validation prompt (one prompt covers it all)
  • Review the audit: removals, additions, recommendations for underperforming pages
  • Flag any experimental angles you want to keep
  • Approve, push back, or ask for alternatives on specific keywords
  • (Optional) If the client wants a new angle, send the exploration prompt
Full validation:
can you use the keyword explorer and serp cliff to check through
all the keywords we've drafted for this cycle?

for each keyword:
- get US volume
- run serp cliff analysis
- check if the keyword already has a landing page
  (don't want duplicates or cannibalization)
- check if we already rank for it and at what position
- flag any keywords in our list that are too similar to each other
  (e.g., "ai chatbot tool" vs "ai chatbot software" — these would
  produce the same page, so pick the stronger one and drop the other)

also check any keywords tagged for next cycle and any untagged/unpublished
keywords in the dashboard — there might be opportunities to pull some
forward or better variants hiding in there.

then draft up a plan and reorganise the keywords.
retag if necessary but let's do it one step at a time.

before you start any actions, check with me to see if your strategy is sound
Note the last line: ask Pi to confirm its strategy before it acts. That “check with me before you start any actions” habit is standard across operators; it keeps you in control of destructive changes. See driving Pi well: 2.0.3.
Explore experimental angles:
note that [angle] is something [client] wants to target and test out.

use keyword explorer to expand on these experimental angles: [list angles]
and serp cliff to validate. use US volume to back the recommendations.

Step 4 — Approve and execute

  • Tell Pi to execute the approved changes
  • Confirm the execution summary matches what you agreed
looks good. go ahead and execute the changes.
What Pi does: removes/retags keywords that failed validation, adds new keywords from exploration, applies cycle tags and priorities, switches keywords on underperforming pages (if approved), and writes/updates the strategy doc to /reports/. (See VFS filing: 2.0.4.)

Step 5 — Confirm final state

  • Ask Pi for a final summary
  • Run the final checks:
    • Keyword count is right (asked for 40, got 40)
    • Every vertical the client mentioned has keywords
    • Deferred keywords are tagged for the correct future cycle
    • No keyword overlaps an existing landing page
    • In the keyword content planner: no blogs/LPs already generated for these keywords, and no keywords too similar to each other (e.g. “ai translation” vs “ai translator”)
    • Strategy doc exists in /reports/
give me a summary of the final keyword state for [cycle tag].
include the total count, clusters, and flag anything still open.

Edge cases — quick lookup

ScenarioWhat to doPrompt snippet
Client sends keywords mid-sessionAdd immediately, tag from [Client]. Validate after.add these and tag "[cycle tag]" and "from [Client]"
Product/feature isn’t live yetDefer ALL keywords for that product. No exceptions.move all [product/feature] keywords to '[future cycle]' tag
Client flags existing content as wrongKeep keywords in cycle. Block publishing until corrected.keep the [vertical] keywords in [cycle tag] but note blocked on publishing
Zero-volume keyword from clientKeep it. Tag From {Client}, priority MED/HIGH. Check if SERP is soft.
Two keywords too similarPick the better volume/cliff, drop the other.[keyword A] and [keyword B] are basically the same. pick the stronger one.
Already ranking pos 10–30Quick win; flag as first-wave priority.
Intent mismatch despite good metricsRemove it. Ask Pi for a right-intent variant.[keyword] has an intent mismatch — find a variant with commercial/product intent
Deferred keywords now duePi should catch these in Step 3. If not, prompt it.also check any keywords deferred from last cycle
Switching keywords on non-ranking pagesProvide page IDs + new keywords. Archive old.switch these existing pages to new keywords: [page ID] to "[new keyword]"
Pre-existing list shared with clientClarify in Step 2 these are candidates only, no pages created.see Step 2
Keyword overflow from last monthKeep in backlog; don’t force into current cycle. Link to client review.

Reference — why Pi recommends removing a keyword

ReasonWhat it looks like
Wrong search intentGoogle shows a completely different content type
No demand + hard to rankZero volume AND high KD
Locked out (cliff 8+)Positions 1–7 all big brands, no room
Page already exists and rankingA second page would self-cannibalize
Two keywords too similarSynonym swaps that produce the same page

Reference — why Pi recommends adding a keyword

ReasonWhat it looks like
Easy to rank + real demandLow cliff (1–3), real search volume
Already showing up (pos 10–30)Quick win; a dedicated page pushes to page 1
Better variant of a drafted keywordSame intent, softer SERP or more volume

Reference — the signal hierarchy

When you have more candidates than slots, decide in this order:
1. SERP cliff           — can we actually win this?
2. Strategic fit        — does the client want this?
3. Intent match         — right audience seeing our page?
4. No self-competition  — not competing with our own pages?
5. Volume               — how big is the prize?
Volume comes last, not first. That’s deliberate; see Part 1 §1.4.

Reference — keyword survival gates

GateQuestionIf No
Client wants this vertical?Confirmed in callLeave untagged
Product can deliver?Feature is liveDefer to ship month
SERP cliff ≤ 5?Gaps in positions 1–5Defer or find a softer variant
Intent matches?Google results = our content typeRemove entirely
No conflicts with own pages?No existing page targets thisRemove, merge, or switch
Proof exists?Case study, feature, or data pointLower priority (not a removal)
Exception: client-provided keywords bypass the SERP-cliff gate on entry.