Die Verteilungswoche als Claude-Skill: montags Entwürfe, dann Kundenfreigaben, freitags der Klick-Report
Ein Claude-Code-Skill für die Agenturwoche in Shager: Entwürfe aus Plandateien, Kundenfreigaben, nur Freigegebenes planen und freitags ein Klick-Report.

Eine wöchentliche Verteilungsroutine ist ein Skill, der jede Woche dieselben drei Aufgaben erledigt: Montags macht er aus dem Redaktionsplan jedes Kunden Shager-Entwürfe mit Texten pro Konto und schickt sie zur Freigabe. Zur Wochenmitte plant er, was freigegeben wurde. Freitags holt er die Klicks pro Konto und schreibt den Report. In Claude Code startest du ihn mit /shager-weekly plan oder /shager-weekly report – oder ohne Oberfläche aus einem Scheduler mit claude -p. Die menschlichen Kontrollpunkte liegen zwischen Entwurf und Planung. Dort kosten sie am wenigsten und fangen am meisten ab.
Das baut auf dem grundlegenden Shager-Skill auf. Hier geht es um die Routine: Eingaben, Modi, Sicherungen und wie sie läuft, ohne dass jemand an der Tastatur sitzt.
Wie sieht so eine Woche konkret aus?
Nimm eine Agentur mit acht Kunden und rund 150 verbundenen Konten. Eine praktikable Woche sieht so aus:
| Wann | Modus | Was der Skill tut | Rolle des Menschen |
|---|---|---|---|
| Montag 09:00 | plan |
Liest die Plandatei jedes Kunden, lädt Medien hoch, legt Entwürfe an, fordert Freigaben an | Während des Laufs keine |
| Montag bis Mittwoch | Kunden geben über Freigabelinks frei oder wünschen Änderungen | Kunden prüfen | |
| Mittwoch 14:00 | schedule |
Plant jeden freigegebenen Beitrag zum vorgesehenen Zeitpunkt | Kundenbetreuer wirft einen Blick auf die Zusammenfassung |
| Freitag 15:00 | report |
Holt Klicks pro Konto und pro Beitrag, schreibt einen Report pro Kunde | Kundenbetreuer verschickt ihn |
Die Themen der Woche erfindet die Routine nie. Sie arbeitet mit einer Plandatei, die ein Mensch schreibt, denn Strategie ist Sache der Agentur. Wegfallen soll der mechanische Teil: vierzig Textvarianten, Tracking-Links, Formatentscheidungen, Nachfassen.

Wie sieht die Plandatei aus?
Eine Markdown-Datei pro Kunde und Woche, in einem Repository, das der Skill lesen kann:
# Harbor Fitness, week 2026-W43
workspace: Harbor Fitness
timezone: America/New_York
## Post 1
when: 2026-10-20 07:00
target: group "All studios"
format: REEL
media: https://cdn.harborfitness.example/w43/6am-class.mp4 (1080x1920, 28s)
brief: New 6am strength class starts Monday. Free first session.
link: https://harborfitness.example/6am
first comment: Book your free first session
## Post 2
when: 2026-10-23 12:00
target: group "Downtown studios"
format: FEED
media: https://cdn.harborfitness.example/w43/smoothie-bar.jpg
brief: Smoothie bar reopens after renovation. 20% off this week.
link: https://harborfitness.example/smoothie
Schlichter Text, den der Skill auswertet – und eine Datei, die jeder Kundenbetreuer bearbeiten kann, ohne ein neues Tool zu lernen.
Die SKILL.md
---
name: shager-weekly
description: Run the agency's weekly Shager distribution routine. Use for "/shager-weekly plan", "/shager-weekly schedule" or "/shager-weekly report", or when asked to prepare, schedule or report this week's client posts from the plans folder.
argument-hint: "plan | schedule | report [client]"
disable-model-invocation: true
allowed-tools: Read Glob Write mcp__shager__whoami mcp__shager__list_workspaces mcp__shager__list_channels mcp__shager__list_groups mcp__shager__list_posts mcp__shager__get_post mcp__shager__get_analytics mcp__shager__upload_media_from_url mcp__shager__create_post mcp__shager__request_approval mcp__shager__schedule_post
---
# Shager weekly routine
Plans live in plans/<ISO week>/<client>.md. Reports go to reports/<ISO week>/.
Mode is the first argument. Process every client unless one is named.
## plan
For each post in each plan file:
1. Resolve workspace, group and channels. Skip channels not ACTIVE and list them.
2. upload_media_from_url with width, height and duration_ms from the plan.
3. create_post WITHOUT schedule_at: per_channel captions written from the
brief (same facts, different wording, local detail from channel name),
cta_url = link, campaign = "<client-slug>-<iso-week>-<n>",
first_comment = "<first comment>: <link>", label = "W43 Post 1".
4. request_approval with the client's reviewer from plans/reviewers.md.
Write a summary: client, post label, post id, accounts, approval_url.
## schedule
For each client: list_posts with status APPROVED. For each, find its
planned time in the plan file by label and call schedule_post with
schedule_at in ISO 8601 with the workspace offset. Never schedule a post
that is not APPROVED. Never schedule a time in the past; list it instead.
## report
For each client: get_analytics from last Monday 00:00 to now (with offset).
Write reports/<week>/<client>.md with a table of clicks by account,
highest first, and the top three posts with their labels.
State plainly that these are link clicks, not leads.
## Errors
Stop the current client on 401 or 403 and record the code. On 422, record
the message against the post and continue. On 429, wait 60 seconds.
Warum es jede Sicherung gibt
disable-model-invocation: true sorgt dafür, dass Claude diese Routine nie von sich aus startet, nur weil in einem Gespräch von „den Beiträgen dieser Woche“ die Rede war. Laut der Dokumentation zu Skills in Claude Code verhindert dieses Feld das automatische Laden. Die Routine läuft also nur, wenn jemand oder etwas den Befehl eintippt.
Die Liste allowed-tools enthält genau, was die Aufgabe braucht – nicht mehr. Es gibt kein cancel_post, kein create_connect_link, kein create_workspace. Eine Routine, die ohne Aufsicht läuft, sollte nichts tun können, was ein Mensch nicht eingeplant hat.
Geplant werden nur Beiträge im Status APPROVED, und diesen Status gibt es erst, wenn der Kunde über seinen Link freigegeben hat. Gibt ein Kunde nie frei, geht der Beitrag einfach nicht raus, und die Mittwochs-Zusammenfassung sagt das. Warum die Freigabe genau an dieser Stelle sitzt, erklärt der Freigabe-Workflow für Agenturen.
Welchen Schlüssel sollte die Routine nutzen?
Diese Entscheidung legt fest, wie sehr du der Routine vertraust.
| Setup | Scopes des Schlüssels | Ergebnis |
|---|---|---|
| Nur Entwürfe | read, write |
plan und report laufen; geplant wird von einem Menschen in Shager |
| Mit Freigabe-Schranke | read, write, publish und Freigabepflicht in jedem Workspace |
Die Routine plant nur, was Kunden freigegeben haben |
| Voller Autopilot | read, write, publish, keine Freigabe |
Nur für risikoarme, wiederkehrende Inhalte, die du ohnehin ungeprüft posten würdest |
Für die meisten Agenturen empfehlen wir die zweite Zeile. Den Scope publish bekommt ein einziger Schlüssel, der unter https://app.shager.ai/dashboard/agents nur für diese Routine erstellt wird. Das Audit-Log dort zeigt dann jeden Aufruf der Routine und sonst nichts. Wirkt etwas merkwürdig, widerrufst du diesen Schlüssel, und alle anderen Integrationen laufen weiter.

Wie läuft das, ohne ein Terminal zu öffnen?
Der nicht interaktive Modus von Claude Code führt einen Skill aus einem Skript heraus aus. Laut der Headless-Dokumentation funktionieren vom Nutzer aufgerufene Skills im -p-Modus, wenn du /skill-name in den Prompt schreibst, und --allowedTools genehmigt Tools vorab in der Syntax der Berechtigungsregeln. Außerdem beschreibt sie --permission-mode dontAsk: Das lehnt alles ab, was sonst eine Rückfrage auslösen würde. Ein unerwarteter Tool-Aufruf schlägt also fehl, statt hängen zu bleiben.
#!/usr/bin/env bash
# run-weekly.sh (called by cron or your CI scheduler)
set -euo pipefail
cd /srv/agency-content
export SHAGER_API_KEY="$(cat /run/secrets/shager_weekly_key)"
claude -p "/shager-weekly $1" \
--permission-mode dontAsk \
--allowedTools "Read,Glob,Write(reports/**),mcp__shager__whoami,mcp__shager__list_workspaces,mcp__shager__list_channels,mcp__shager__list_groups,mcp__shager__list_posts,mcp__shager__get_post,mcp__shager__get_analytics,mcp__shager__upload_media_from_url,mcp__shager__create_post,mcp__shager__request_approval,mcp__shager__schedule_post" \
--output-format json > "logs/weekly-$1-$(date +%F).json"
Und die Crontab, in der Ortszeit des Servers:
0 9 * * 1 /srv/agency-content/run-weekly.sh plan
0 14 * * 3 /srv/agency-content/run-weekly.sh schedule
0 15 * * 5 /srv/agency-content/run-weekly.sh report
Vorausgesetzt ist, dass der Shager-MCP-Server in der .mcp.json des Projekts registriert ist und den Schlüssel aus SHAGER_API_KEY liest, wie in Shager mit Claude Code verbinden gezeigt. Die JSON-Ausgabe liefert dir die Sitzungs-ID und die abschließende Zusammenfassung – genau das, was du an den Team-Kanal weiterleiten würdest.
Wofür braucht es weiterhin jede Woche einen Menschen?
Für drei Dinge, und die Routine ist um sie herum gebaut, nicht gegen sie.
- Die Plandatei schreiben. Themen, Angebote und Timing sind Strategie.
- Die Mittwochs-Zusammenfassung lesen. Sie listet alles Nichtfreigegebene, übersprungene Kanäle und 422-Ablehnungen auf. Fünf Minuten.
- Den Freitags-Report mit Einordnung verschicken. Klicks pro Konto sind ein Fakt; was sie für den Kunden bedeuten, ist ein Gespräch. Erinnere Kunden daran, dass Linkklicks keine Leads sind, und verweise auf die Lead-Zuordnung pro Konto, wenn sie diese Lücke in ihrem CRM schließen wollen.
FAQ
Was, wenn ein Kunde erst nach Mittwoch freigibt?
Lass /shager-weekly schedule noch einmal laufen, von Hand oder über eine zweite Cron-Zeile am Donnerstag. Der Modus plant nur APPROVED-Beiträge, die noch nicht geplant sind, und lehnt Zeitpunkte in der Vergangenheit ab. Zweimal ausführen ist also unbedenklich.
Kann die Routine neue Konten verbinden, wenn ein Kunde einen Standort dazubekommt?
Bewusst nicht. create_connect_link fehlt in den erlaubten Tools, weil das Verbinden von Konten den Kunden einbezieht und eine bewusste menschliche Handlung sein sollte. Kommt ein Standort hinzu, schickt der Kundenbetreuer einen Verbindungslink und nimmt den neuen Kanal in die richtige Gruppe auf; der nächste Lauf erfasst ihn automatisch.
Funktioniert das auch mit Codex oder Cursor statt Claude Code?
Plandateien, Modi und Sicherungen lassen sich direkt übertragen, denn die Shager-Tools sind in jedem MCP-Client dieselben. Das Frontmatter der SKILL.md und der Aufruf mit claude -p sind spezifisch für Claude Code; anderswo hältst du die Anweisungen als Prompt-Datei vor und steuerst sie über die Automatisierung des jeweiligen Clients.
Nächster Schritt
Die Routine erledigt die Woche. Die durchgängige Content-Pipeline mit Agenten zeigt die ganze Kette drumherum: vom Kundenbriefing über generierte Medien und Texte bis zu veröffentlichten Beiträgen und gemessenen Klicks, mit jedem Shager-Aufruf in der richtigen Reihenfolge.


