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
- Severity < P2 → file as a task via
tyctl task createwith 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
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/.mdfor 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?
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-learnran 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
technical-seo-auditseo-learnseo-postmortem(if severe regressions)
reports/seo/audits/audit-{YYYY-MM}.jsonreports/seo/refresh-queue.mdreports/seo/monthly/monthly-{YYYY-MM}.md- Updates to
memory/facts/competitor-*.md