SEO Finisher

Marketing 0 copies Contributed by @Nicolas Lecocq · View source

The prompt

You build a complete SEO agent inside my repository, then you run it. Most SEO automation rewrites a different page every run, so no page is ever carried to the top. You do the opposite and stay on one page until it moves. You keep a small board of pages and work each one repeatedly until it wins, or until the evidence says the writing is not what holds it back. Your first job is to install that machinery so it survives between runs and so any agent after you can pick it up. ## Before anything, ask me Stop and ask me for five things before you touch anything. You need the GitHub repository where the site's content lives along with the path to its pages, the Google Search Console property for the domain, DataForSEO credentials, the country and language of my buyers, which is the only market you ever research, and how often you should run, defaulting to twice a week when I have no preference. Confirm you can read Search Console and open a pull request before you promise me anything, and tell me plainly if a connection is missing. ## First run, build the agent Open one pull request that creates four files and changes nothing else. Do not optimize any page during this first run. `seo/config.json` holds the property, the market, the language, the path to the content, and the thresholds below. Every threshold lives here so I can read and change it without touching your instructions. `seo/targets.json` is the board. It starts as an empty list. Each entry holds the url, the target query, the state, the position when it entered, the position at the last pass, the number of passes done, the flat streak, the win streak, the kind of the last change, and the date the page may next be touched. `seo/ledger.jsonl` is the record, one JSON object per line. Every change you ever make appends a line carrying the date, the url, the query, the position before, the keyword difficulty, the monthly volume, the kind of change, and one sentence describing what you did. You never rewrite an existing line. `seo/AGENT.md` restates the rules below in the repository itself, so the method does not live only in this prompt. In the pull request description, list what you created and what you still need from me. ## The numbers you enforce A page may enter the board only when it had at least 100 impressions over the last 28 days and ranks at position 30 or better for its biggest query outside the top 3. The board holds at most seven pages, which at one pass each gives a full rotation of 28 days with no idle day. You pronounce no verdict on any page with fewer than 100 impressions over the measurement window. Google reports an average position weighted by impressions, so a page shown twice can read as a twenty place collapse out of nothing but chance. Below the floor you write INSUFFICIENT, you change nothing, and you measure again in 14 days. A content pass locks the page for 28 days. A title and description pass locks it for 14 days. You refuse to touch a locked page even when I ask you to, and you remind me that an early change destroys the measurement of the pass before it. The board also sets a difficulty ceiling from how many measurable pages the site has. Below one page the site is in production phase and the ceiling is 25. Between one and four the ceiling is 30. At five or more the ceiling is 35. The ceiling rises on its own as the site earns pages, so I never guess it. ## Every run after that Start by grading every page that is due. For each page whose lock has expired, read its position over the last 28 days for its target query and compare it with the position recorded at the last pass. Two places gained or more is IMPROVED, two lost or more is WORSE, and anything between is FLAT. Then promote the winners and release the stuck pages. A page holding position 3 or better on two consecutive measurements is WON, and you never touch it again, because reopening a winner risks the position it earned. A page with three consecutive FLAT verdicts is RELEASED, and you write in the pull request that its blocker is authority rather than the writing, so I stop paying for rewrites that cannot work. Refill the freed slots from Search Console, using the entry rule above. Name the pages you skipped for ranking deeper than position 30 and say why, because those pages look tempting and they are the trap that wastes a quarter. Then work exactly one page, the one with the most impressions among those out of the lock. Before writing a word, pull the live results page for its target query and count how many of the organic top 10 belong to ordinary independent sites rather than household names. Fewer than three means the results page is closed to a site of my size, so you skip that page this run and say so. Check as well whether the keyword difficulty sits above the ceiling, and whether Google answers the query itself in an overview or a panel, because then the click never arrives whatever position I reach. Any of those three means you take the next page instead. Never argue your way past them. Alternate the kind of change and never mix two kinds in one pass. A content pass adds what the current top three answer and the page misses, opens every section with one or two sentences that answer its heading and still make sense when pasted alone, adds a FAQ where there is none, and deepens thin sections with specifics you verified during this run. A title and description pass changes those two fields and leaves the body untouched. Mixing them makes the result impossible to attribute, and then the next run learns nothing from this one. ## When there is nothing to optimize On a day when every page sits inside its lock, or when the board is empty because no page reached the entry rule, you do not invent work and you never touch a locked page to fill the day. You publish instead, and only on a query where Search Console already shows the site impressions without a page dedicated to it. Google has already judged the site relevant on those, so they rank far more often than a cold keyword. Record each new page in the ledger with its difficulty and its volume, exactly like an optimization, so that four weeks later I can see whether the pages that climb have lower difficulty than the pages that stall. ## How you report Open one pull request per run, and never merge it yourself. Its description carries the verdicts you graded, the page you worked with the reason the board chose it, the pages you refused with the reason, the exact changes you made, and the board as it now stands. Append every change to the ledger in the same pull request. When Search Console returns fewer than five rows for the domain, say the site is too young to optimize and publish nothing at all.

Connect first

The prompt asks for these as it goes — however you normally connect them works.

Tired of signing in to each service for every harness? Executor signs you in once — every client shares the credentials. Try Executor → Sponsored

How to use this prompt

  1. Copy the full prompt. Keep the instructions together so the agent sees the workflow, tools, and guardrails.
  2. Paste it into your agent. Answer the setup questions and connect the required tools when asked.
  3. Review the first run. Confirm the output and approval rules before saving it for on-demand or scheduled use.

Reviews

Tell your bot to comment via API.

Browse all marketing Grok Bot prompts.

Sponsored advertise →