seo-automation
Blog

How to Automate SEO: 9 Tasks to Script, 3 to Keep Human

November 8, 2026

How to automate SEO: start with the repetitive jobs that have one correct output. Submitting sitemaps, pulling Search Console data, finding broken links and flagging pages that slip to page 2 are all good candidates. Give those jobs to scripts, scheduled workflows or an AI agent. Keep three things human: choosing what the site should rank for, approving what gets published, and anything you can't undo.

This guide covers the 9 tasks worth automating, with a tool, a schedule and the risk for each one. It also covers the 3 tasks to keep in human hands, a 5-step rollout and three levels of setup: no-code, script or API, and AI agent. Then it explains what Google allows when content is produced at volume. If you'd rather have the whole pipeline run for you, one plan covers 50 researched articles a month per site.

Start for $1 and get your SEO plan in a few minutes.

Which SEO tasks can you automate?

Use one rule. Automate SEO tasks whose correct output can be checked by a machine. A sitemap either lists every indexable URL or it doesn't. A link either returns 200 or it doesn't. Whether an article deserves to exist is a judgment call, and judgment stays human.

These 9 tasks pass the test:

# Task Typical tool Frequency Risk if it goes wrong
1 Generate and submit the sitemap Framework sitemap + Search Console API On every deploy Low: Google ignores a bad entry, but the page stays undiscovered
2 Notify search engines of new URLs IndexNow On publish Low
3 Weekly Search Console report Search Console API + Python, Make or n8n Weekly Low
4 Keyword research and clustering Search Console queries + autocomplete + a script or LLM Weekly Medium: wrong clusters lead to duplicate articles
5 Draft new titles for low CTR pages Search Console API + LLM, human approval Monthly Medium: a bad title can lose clicks
6 Flag page 2 and decaying articles for a refresh Search Console API, comparing periods Weekly Low to flag, medium to rewrite
7 Broken links and redirect chains Link checker in CI or cron On deploy + weekly Low
8 Metadata, alt text and structured data checks Build step or crawler + schema validator On deploy Medium if fixes are auto applied
9 Internal link suggestions Script over your content + embeddings or LLM On publish Medium: irrelevant links read as spam

Sitemap and submission (tasks 1 and 2)

Most frameworks generate the sitemap for you. In Next.js, an app/sitemap.ts file that returns a MetadataRoute.Sitemap array becomes /sitemap.xml (Next.js docs). Astro uses npx astro add sitemap and needs the site option in astro.config.mjs (Astro docs).

Submission is where old scripts break. In 2023, Google deprecated the anonymous sitemap "ping" endpoint and announced it would stop working. Google says using it "will also not do anything useful" (Google Search Central). The supported route is an authenticated PUT to the Search Console API's sitemaps.submit with the webmasters scope (API reference).

For other engines, IndexNow accepts up to 10,000 URLs per POST (IndexNow docs). Its FAQ lists Bing, Yandex, Naver, Seznam.cz, Yep and Amazon as participants. Google isn't on the list, and submitting a URL "does not guarantee immediate indexing" (IndexNow FAQ).

Watch out for one common mistake. Google's Indexing API is not a general "index my blog post" button. Officially it only covers pages with JobPosting data, or BroadcastEvent embedded in a VideoObject (Google quickstart). Scripts that push ordinary articles through it are using it outside its documented purpose.

Search Console reporting and refresh queues (tasks 3, 5 and 6)

The searchAnalytics.query endpoint returns up to 25,000 rows per call (the default is 1,000), with startRow for pagination. It returns the top rows, not every row (API reference). One script can produce your weekly report, your low CTR list and your refresh queue:

from google.oauth2 import service_account
from googleapiclient.discovery import build

creds = service_account.Credentials.from_service_account_file(
    "sa.json", scopes=["https://www.googleapis.com/auth/webmasters"])
gsc = build("searchconsole", "v1", credentials=creds)
SITE = "sc-domain:example.com"

rows = gsc.searchanalytics().query(siteUrl=SITE, body={
    "startDate": "2026-10-07", "endDate": "2026-11-04",
    "dimensions": ["query", "page"], "rowLimit": 25000,
}).execute().get("rows", [])

# Thresholds are yours to tune for your site's traffic
page_two = [r for r in rows if 8 < r["position"] <= 20]
no_clicks = [r for r in rows if r["impressions"] >= 200 and r["clicks"] == 0]

gsc.sitemaps().submit(siteUrl=SITE,
    feedpath="https://example.com/sitemap.xml").execute()

Add the service account as a user on the Search Console property, or the calls will fail. To find content decay, run the same query on the previous 28 days and compare clicks and position page by page.

Technical checks (tasks 7, 8 and 9)

Run these checks in CI on every deploy, then once a week on the live site, because external links break without any change on your side. Fail the build on hard errors: a 404 internal link, a missing title, invalid JSON-LD. Only warn on soft issues such as a long meta description. Internal link suggestions should arrive as a diff or a list for someone to accept, never as silent edits.

The 3 SEO tasks to keep human

These three need business context, and getting them wrong is expensive or permanent:

  1. Deciding what the site should rank for. A tool can score 5,000 queries. It can't tell which ones bring buyers for your product, which ones your sales team never wants to see, or which topic would hurt your positioning.
  2. Approving what gets published. Someone who knows the product reads the claims, numbers, code samples and tone before a page goes live. A model can't check facts about your own product, because the web isn't a source for them.
  3. Anything destructive or hard to reverse. Deleting pages, redirecting sections, changing canonicals, bulk rewriting titles across a site, running link outreach. Automation can propose these. A person signs off.

Agree on stop signals before you automate. Pause a workflow if indexed pages drop sharply in the Page indexing report, a manual action appears in Search Console, clicks on refreshed pages fall after a rewrite, or the editor's rejection rate climbs.

A 5-step method to start automating SEO

Don't automate everything on day one. Use this order:

  1. List every recurring SEO task for two weeks. Write down what you did, how long it took and how often it repeats. "Copied Search Console data into a sheet" counts.
  2. Sort each task into one of three buckets. One correct output (automate fully), a draft a human approves (automate the draft), or judgment (keep manual). Use the table above as a starting point.
  3. Automate one task end to end. The weekly Search Console report is the best first pick: read only, no risk to the site, and useful from week one.
  4. Measure for four weeks. Track time saved and whether the output was right. If someone still corrects the report by hand every Monday, fix the workflow before you add another.
  5. Add the next task, starting with read only work. Reports and alerts come first. Drafts with approval come next (titles, refresh briefs, internal links). Actions that touch the live site come last.

A team that automates nine things at once can't tell which workflow caused a drop.

How to automate SEO with AI and Claude

There are three levels of setup. Pick the lowest one that does the job.

Level What it looks like Good for Limits
No-code Make, n8n or Zapier scenarios: Search Console module, filter, Slack or Sheets output Reports, alerts, sending new URLs to IndexNow Logic gets messy past a few branches, and not every SEO tool has a ready made module
Script or API Python or Node on a cron or a GitHub Action Search Console exports, sitemap submission, link checks, decay detection Someone has to maintain it when APIs change
AI agent An LLM such as Claude that reads data, drafts titles, briefs and articles, and calls tools Keyword clustering, refresh drafts, writing, internal link suggestions Needs sources, review and clear permissions

If your site already lives in GitHub, scheduling the script level costs nothing extra:

name: weekly-seo
on:
  schedule:
    - cron: "0 6 * * 1"   # Mondays, 06:00 UTC
  workflow_dispatch:
jobs:
  report:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.12" }
      - run: pip install google-api-python-client google-auth
      - run: printf '%s' "$GSC_SA_JSON" > sa.json
        env:
          GSC_SA_JSON: ${{ secrets.GSC_SA_JSON }}
      - run: python seo_weekly.py

At the agent level, Claude works best on jobs where it reads data and writes a draft. Two examples: "here are the 40 queries where this page ranks 8 to 20, rewrite the brief so the article answers them", or "suggest five internal links from this new post to existing pages, with anchor text". Give it the data as input, ask for sources, and send the output to a reviewer.

Prefer to work from a chat? Try the SEO Automation connector for Claude.

Prefer to skip the scripts entirely? Start for $1 and get your SEO plan in a few minutes.

How to automate SEO posts without breaking Google's rules

Writing articles at volume is where automation gets risky. Google's spam policies define scaled content abuse as generating many pages "for the primary purpose of manipulating search rankings and not helping users". They name generative AI tools used that way as one example (Google spam policies). The policy is about purpose and value. The tool doesn't matter.

Your guardrails decide whether automated posts are acceptable:

  1. One article per search intent. Before drafting, check your sitemap and Search Console. If a page already gets impressions for the query, improve that page. Don't publish a second one.
  2. Research the results page first. Read the pages that rank, note what they miss, and write the piece that covers the gap.
  3. Source every number and rule. Every number or rule links to where it came from. If no source exists, drop the claim.
  4. Run an editor pass that is separate from the writer. Check facts, links and claims about your product. A different prompt or a different person both work.
  5. Keep a human sign-off on what ships, at least until the rejection rate stays low.

Volume should follow your review capacity, not the other way round. Start with the number of articles your reviewer can read properly each week. Raise it only once rejections stay low and refreshed pages hold their positions.

Where to plug automation on your stack and across client sites

Where you connect depends on where your content lives:

Stack Where content lives Where automation plugs in
Next.js, Astro, Hugo with Markdown Files in a GitHub repo Commit new .md files to the main branch. CI builds and generates the sitemap, then a post-deploy step submits it
Headless CMS CMS entries via API Create entries through the CMS API, then trigger a rebuild with a webhook
WordPress Database REST API for posts, plus an SEO plugin for the sitemap and metadata
Any site Varies A webhook that receives the article and publishes it on your side

On a static site, the sitemap is only correct once the deploy has finished. Submit it from a post-deploy step, not from the commit itself.

Agencies and freelancers should build one routine and run it across every property. Keep a config file with one entry per client (Search Console property, sitemap URL, IndexNow key, Slack channel) and loop over it. That way every site gets the same report, thresholds and stop signals. Agree each client's service account access and approvals in writing.

How SEO Automation handles this

SEO Automation runs this pipeline with five AI agents. Scout finds the real Google searches for your site. Strategist plans one article per intent. Writer researches on the web and writes with sources. Editor checks every fact and every link. Publisher puts the article on WordPress, Shopify, Webflow, Wix, Framer, GitHub or a webhook, sends the sitemap back to Search Console and notifies IndexNow. Articles stuck on page 2 get reworked, and titles with a low CTR get rewritten. It costs $49 per site per month for 50 articles.

Start for $1 and get your SEO plan in a few minutes.

Frequently asked questions

Can SEO be fully automated?

The mechanical parts can: sitemaps, submission, reporting, audits, alerts and first drafts. Strategy, final approval and irreversible changes shouldn't be. Sites that automate everything with no review end up with duplicate pages and unchecked claims.

Is SEO automation safe for Google rankings?

Automating checks, reports and submissions doesn't put your rankings at risk. The risk is in content: Google targets pages made at scale mainly to manipulate rankings, whatever tool produced them (Google spam policies). Research, sources, one page per intent and human review keep you within that policy. No setup guarantees rankings.

How do I automate SEO with AI?

Give the AI data and a narrow job, not an open prompt. For example: cluster these Search Console queries, rewrite this title for these 30 queries, or draft a refresh brief for a page that slipped to position 14. Then send the output to a reviewer before anything goes live.

Can SEO automation replace an SEO specialist?

It replaces the repetitive hours, not the judgment. A specialist still decides what to target, reads the reports the automation produces and signs off on risky changes. In practice, one person can cover more sites because the data gathering and drafting are already done.