SEO Audit / aeon skill

Daily SEO audit agent for your site

Daily on-page and technical SEO audit of every page on a site - discovers URLs from the sitemap, scores each page, adds cross-page checks (duplicate titles, canonicals, sitemap gaps), diffs against yesterday, and sends the score line plus any regressions

CATEGORY Dev & CodeRUNS Daily at 13:00 UTCUPDATED
Skill
SEO Audit seo-audit
Category
Dev & Code
Default schedule
Daily at 13:00 UTC
cron 0 13 * * *
Last updated

commit 56e25ea
Source
aeonfun/aeon/skills/seo-audit/SKILL.md MIT licensed, one prompt file

What it does

SEO Audit is an aeon skill: Daily on-page and technical SEO audit of every page on a site - discovers URLs from the sitemap, scores each page, adds cross-page checks (duplicate titles, canonicals, sitemap gaps), diffs against yesterday, and sends the score line plus any regressions. Like every aeon skill it is one SKILL.md prompt file that runs unattended on your own GitHub Actions, on a schedule or when you trigger it, and sends what it finds to Telegram, Discord, Slack or email.

Discovers every page a site publishes, audits all of them, compares the result against the previous run, and reports. The heavy lifting (discovery, fetching, parsing, checking) happens in scripts/seo-audit.mjs, which returns machine-readable findings so you reason over facts instead of eyeballing HTML.

Discovery is sitemap-first: robots.txt → sitemap.xml (following sitemap indexes), honouring the robots * Disallow rules, falling back to a one-hop crawl of the homepage's internal links when a site has no sitemap. That is the same list Google works from, so auditing it is auditing what actually ranks.

Auditing the whole site - not three sample templates - is what makes the cross-page checks possible: duplicate titles, duplicate meta descriptions, canonicals pointing away from their own page, and pages linked but missing from the sitemap. None of those are visible from inside a single page, and all of them are ways a site quietly loses search traffic.

This is on-page and technical SEO only - no keyword research, rank tracking, or backlink analysis. If a finding would need those, say so rather than guessing.

Input: the var setting

Every aeon skill takes one optional text input, var, set in aeon.yml or typed in when you run it by hand. It picks the target or the mode for that run.

The target sites, comma-separated (an origin, not a page: https://www.example.com). Each site is audited whole and independently. A bare host gets https:// prepended. A path in var (…/docs) still works

  • its origin is what gets crawled.

Empty var → there is nothing to audit. This skill has no built-in default site (it ships general-purpose). Log SEO_NO_TARGET, send no notification, and exit clean - a daily "set a target" ping would just get muted. Set the target once in the dashboard (the skill's var) and it runs from the next tick.

What it needs

Besides the model you connected to aeon, SEO Audit uses the following. Add secrets as GitHub Actions secrets on your aeon repo, or in Aeon Connect.

  • PAGESPEED_API_KEY - optional secret, unlocks more data or features

Install and run it

Easiest: open Aeon Connect, sign in with GitHub and turn on SEO Audit. No clone, no terminal. To add it to an existing aeon repo from a shell, run:

bin/add-skill aeonfun/aeon seo-audit

Then switch it on in aeon.yml (the default schedule is filled in):

skills:
  seo-audit: { enabled: true, schedule: "0 13 * * *", var: "" }

New to aeon? Read the docs for how skills, schedules and memory fit together, or browse all skills.