Zum Inhalt springen
thconsulting
Menü öffnen
Tech-Deep-Dive · Page-Lifecycle

SEO-Workflow als CI-Pipeline.
CLI-driven, JSON-Output, AI-Brief.

lifecycle plan erzeugt einen datengestützten Brief aus sechs Quellen. 14/28/56-Tage-Followups als Cron, Auto-Tickets bei Position-11-20-Drift oder Snippet-CTR-Schwäche. Stateless zwischen Runs, kein SaaS-Lock, kein Sistrix, kein Ahrefs, kein Semrush nötig.

Capability-Stack

Acht Schichten, was sie können.

Konkrete Tool-Wahl behalte ich für mich, was zählt sind die Eigenschaften: stateless, cron-tauglich, optional AI-Layer, kein SaaS-Lock.

CLI
Stateless plan/followup/list-Subcommands
Cron-tauglich · kein Server-Setup nötig
Crawler
Native fetch + Server-DOM-Parser
Kein Headless-Browser-Overhead für Static-Sites
GSC-Auth
OAuth-Browser-Flow
Workaround gegen Service-Account-Block
AI-Reasoning
LLM für Brief, Cluster, Quality
~4k Output-Tokens pro Plan · Cent-Bereich pro Lauf
Wettbewerber-SERP
Brave Search Free-Tier
2000 Calls/Monat · 1500 Quota-Cap intern
Keyword-Volumen
Google Ads KW-Planner + Bing-Backup
7d-Disk-Cache gegen Rate-Limit
Persistence
JSON in output/<host>/<date>/
Stateless · audit-history als Snapshot-Diff
Validation
Schema-validierte Plan/Audit-Outputs
Type-safe Format · Migration-tauglich
CLI-Befehle

Fünf Subcommands decken den Lifecycle.

site-audit <url>

Site-Audit-Run (über 30 Module). Output: audit-data.json + audit-report.md + recommendations.md + pages/<slug>.md

lifecycle plan <audit>.json --topic=...

Brief-Generation aus sechs Datenquellen. Output: <date>-<slug>.json + .md

lifecycle followup <plan>.json <new-audit>.json

Re-Audit gegen Plan, Auto-Tickets aus Befund

lifecycle list <lifecycle-dir>

Alle Plans mit Status und nächstem Check-Termin

submit-sitemap <url> --gsc-json=<path>

Sitemap-Submit + URL-Inspection-Status für jede URL

Cron-Pattern

CI-Action für Auto-Followup.

Wöchentliches Audit plus Followup gegen alle aktiven Plans. Wenn Recommendations gefunden, automatisch ein GitHub-Issue mit konkreten Tickets als Body.

# .github/workflows/seo-followup.yml
name: SEO Lifecycle Followup
on:
  schedule:
    - cron: '0 7 * * MON'  # Montags 07:00 UTC
  workflow_dispatch:

jobs:
  followup:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup CLI-Runtime
        run: # ... Runtime-Setup

      - name: Audit + Followup laufen
        env:
          GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
          GSC_OAUTH_TOKEN: ${{ secrets.GSC_OAUTH_TOKEN }}
          LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
          BRAVE_API_KEY: ${{ secrets.BRAVE_API_KEY }}
        run: |
          site-audit ${{ vars.SITE_URL }} --pages=50
          AUDIT=$(ls -1 output/*/*/audit-data.json | head -1)
          for plan in output/*/lifecycle/*.json; do
            lifecycle followup "$plan" "$AUDIT"
          done

      - name: Issues aus Tickets erzeugen
        run: recs-to-issues --repo ${{ github.repository }}
FAQ

Tech-Fragen.

Wie sieht der CLI-Aufruf aus?
lifecycle plan ./output/<host>/<date>/audit-data.json --topic="MCP-Server hosten" --path=/angebote/build/mcp/tech --intent=do --offer="Hosting + Betrieb". Output: <date>-<slug>.json + <date>-<slug>.md im output/<host>/<date>/lifecycle/-Ordner. Followup-Aufruf: lifecycle followup <plan>.json <new-audit>.json. Stateless zwischen Runs.
Welche Datenquellen fließen in den Brief?
Sechs Quellen aggregiert: Google Search Console (topQueries + topPages), Google Suggest API (Auto-Complete-Variants), Google Ads Keyword Planner (Volume + CPC + Wettbewerb), Brave Search API (SERP-Wettbewerber + Schema-Lücken), AI-Cluster (Topic-Cluster-Discovery via LLM), Bing Keyword API (Backup-Volumen). Jede Quelle scored Keyword-Kandidaten, Topic-Token-Overlap-Boost plus Intent-Match-Boost.
Was passiert im Followup automatisch?
evaluateFollowUp() lädt den Plan plus neuen Audit, ruft findPage() (mit www/trailing-slash-Normalisierung) und gscForPath() (filtert GSC-Queries auf den Path), berechnet weighted avgPosition, prüft URL-Inspection-Verdict für Indexierungs-Status. Auto-Tickets-Generator: Page-not-found, Indexing-failed (no-index/canonical-conflict), Zero-Impressions, Snippet-Weak-CTR (Imps≥20 + Clicks=0 + Pos≤20), Position-11-20-Ausbau-Queries.
Kann das in eine CI-Pipeline?
Ja. Beispiel-Workflow: Cron alle 14 Tage triggert Site-Audit (mit GSC-OAuth-Token aus Secret), dann lifecycle-followup gegen alle plans/*.json. Wenn Recommendations-Count > 0, wird ein GitHub-Issue automatisch erzeugt mit den konkreten Tickets als Body. Tool ist stateless zwischen Runs (audit-data.json + plan.json sind Single-Source-of-Truth), Cron-tauglich ohne Server-Setup.
Wie ist die Brief-Generation strukturiert?
createPageLifecyclePlan() ruft collectKeywordCandidates() für 6-Quellen-Aggregation, bestKeyword() picked Primary, inferIntent() klassifiziert (do/visit/website/know via Heuristik oder --intent-Flag). buildBrief() generiert Title-Draft (max 68 Chars), Meta-Description (max 155), H1, Section-Plan (intent-spezifisch), FAQ (5 typische Fragen), Schema-Plan (Service+FAQ für do, Article+FAQ für know etc.), interne Links rein und raus aus thematisch verwandten Pages (Token-Overlap-Score), Wettbewerber-Angles aus competitors-Modul, GEO-Fakten-Liste.
Welche API-Verbrauchskosten fallen pro Page-Lauf an?
Plan-Step: ein LLM-Call mit ~4k Output-Tokens. Cent-Bereich. Optional KW-Planner: 1 API-Call (kostenlos, mit Disk-Cache 7d TTL). Brave Search: 1-3 Calls (kostenlos im Free-Tier, intern auf 1500/Monat capped). Followup-Step: kein LLM-Call, nur DB-Logik. Audit-Run drumherum: niedriger einstelliger Cent-Bereich pro Site. Total pro Plan plus drei Followups: deutlich unter einem Euro API-Kosten. Servicepreis je nach Buchungs-Modell, klären wir im Erstgespräch.
Wie skaliert das auf Mandanten-Sites?
Heute: Token-Management lokal in .env (per Site eine .env). Phase 2 mit doneby-Vault: --tenant=<slug>-Flag, Tool fragt doneby per REST nach den Mandanten-Tokens, Audit läuft mit Mandanten-Keys (Cost-Pass-Through), Audit-Log dokumentiert wer wann auf welche Tokens zugegriffen hat. Pro Mandant ein eigener output/<host>/-Ordner, kein Cross-Site-Leak.
Open-Source oder proprietär?
Repo aktuell privat. Mittelfristige Strategie: MCP-Server-Schicht als OSS, Core-Engine proprietär. Kein Vendor-Lock-In für Mandanten, bei Vertragsende bekommt Mandant audit-data.json plus alle plans plus history exportiert.

Code-Walkthrough oder Tech-Sparring?

Erstgespräch 30 Min, kostenlos. Walkthrough an einer Reference-Implementierung, ob Lifecycle in deine Site-Pipeline passt.

Erstgespräch buchen