← All Skills
AI Skill

seo-rhythm-monthly

Last updated: 2026-05-17

Monthly SEO rhythm — 1st-of-month full technical audit, content freshness scan, playbook promotion via seo-learn. TRIGGER automatically by cron or Tycoon Routin

Quick Install
npx skills add seo-rhythm-monthly

seo-rhythm-monthly — Zoom Out

Daily fixes CTR. Weekly reports trends. Monthly is when we look at the whole forest.

1st of month — four tasks, in order

1. Full technical audit

Invoke technical-seo-audit on the full site. Compare vs last baseline.

Expected output: reports/seo/audits/audit-{YYYY-MM}.json covering:

  • Crawlability (robots.txt, sitemaps, indexation)
  • On-page completeness (title/desc/canonical/hreflang coverage)
  • Schema markup coverage and validity
  • Core Web Vitals p75
  • Security (HTTPS, mixed content, headers)
  • AI crawler access (GPTBot, PerplexityBot, ClaudeBot, OAI-SearchBot allow)
  • llms.txt + markdown-version coverage
For each regression vs last month:
  • Severity < P2 → file as a task via tyctl task create with role=seo
  • Severity P0–P1 → also trigger seo-postmortem

2. Content freshness scan

Find pages whose traffic dropped ≥ 30% vs their 90-day average:

# Compare GSC 30d average vs GSC 120-to-90-day-ago average
jq -s '...' reports/seo/raw/gsc-.json

For each decline candidate:

  • Read the page's last update date
  • If > 90 days old → add to reports/seo/refresh-queue.md
  • If ≤ 90 days old and still declining → likely not freshness; add to reports/seo/investigate-queue.md
Refresh queue is picked up by seo-create during the month as capacity allows.

3. Promote patterns (invoke seo-learn)

Invoke seo-learn. It scans the last 90 days of measured experiments and:

  • Promotes patterns with ≥ 3 wins → new or updated playbooks/.md
  • Writes lessons/.md for patterns with ≥ 2 losses
  • Retires playbooks where recent evidence contradicts them (moves to under-review)
  • Produces reports/seo/learn-log/learn-{YYYY-MM-DD}.md

4. Competitor refresh

Re-read memory/facts/competitor-.md. For each competitor:

  • Fetch their sitemap — did they add significant new pages?
  • Check their homepage — positioning shift?
  • Check Ahrefs (if enabled) — did their DR or referring domains change materially?
Update each competitor fact file with a dated note. If a competitor pivoted, flag it in next Monday's weekly report.

Monthly brief

Write reports/seo/monthly/monthly-{YYYY-MM}.md:

# Monthly SEO — {month}

Baseline movement

{clicks/impressions/position/CTR/citation_rate vs last month + vs 90 days ago}

Technical audit

{score delta, top 3 regressions, top 3 improvements}

Experiments — 30-day view

  • Total shipped: {N}
  • Wins: {K} ({rate}%)
  • Losses: {M}
  • Inconclusive: {L}
{named top 3 wins and losses}

New playbooks promoted: {N}

  • {playbook_name} — based on {count} experiments

New lessons written: {M}

  • {lesson_name} — prevented by {skill update}

Refresh queue

{count} pages queued for refresh, top 5 listed

Competitor changes

{any material moves}

Next month priorities (≤ 3)

{the 3 things the agent will optimize for}

Quality bar

  • [ ] Technical audit ran, output saved, regressions filed
  • [ ] Refresh queue populated (even if empty — explicitly so)
  • [ ] seo-learn ran and logged to learn-log/
  • [ ] Every competitor fact file has a current-month dated note
  • [ ] Monthly brief delivered to owner

What I refuse

  • To skip seo-learn. Patterns go stale fast if we don't promote them monthly.
  • To file regressions as "noted" without actual P0–P2 tasks. Noted = not fixed.
  • To write a monthly brief with > 3 next-month priorities. Focus compounds; scope creep doesn't.

Integration

Called by:

  • Tycoon RoutineScheduler (cron: 0 9 1 )
  • Standalone cron equivalent
Composes:
  • technical-seo-audit
  • seo-learn
  • seo-postmortem (if severe regressions)
Writes:
  • reports/seo/audits/audit-{YYYY-MM}.json
  • reports/seo/refresh-queue.md
  • reports/seo/monthly/monthly-{YYYY-MM}.md
  • Updates to memory/facts/competitor-*.md