kommandozentrale
Lets the upload agent publish scheduled videos to TikTok, either by driving the web uploader in Chrome (public posts) or via Composio (delivers a draft to the TikTok inbox for a final manual tap), with an optional verified custom TikTok app for fully automatic public posting.
Lets the upload agent publish scheduled videos to YouTube — either publicly or as a scheduled upload — by driving YouTube Studio through Claude in Chrome, or via the Composio API, then records the live link and checkmark back on the board.
Target platform for the pipeline's short-form videos; scheduled Shorts are handed to the upload agent, which posts them to YouTube (Chrome or Composio path) and tracks them from script through to live.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kommandozentralewhich videos are due for upload?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Content Command Center
English summary: A self-hosted content pipeline for short-form creators (TikTok, YouTube Shorts) instead of a paid scheduling tool. A local board (Python standard library + one HTML file) tracks every video from script to live. An MCP server lets Claude Code (or any MCP client) read and update the board. A small trigger watches the board without using any AI tokens and only starts
claude -pwhen there is real work: a scheduled upload is due, or a raw recording waits to be edited. Edits go through two approval checkpoints in the board. German UI and docs. Ships with fictional demo data.
Eine eigene Content-Pipeline statt Abo-Tool: ein lokales Board, in dem jedes Video vom Skript bis „Live“ wandert, und ein MCP-Server, über den Claude Code das Board lesen und bedienen kann. Agenten laufen nur, wenn es wirklich etwas zu tun gibt.

Ablauf
flowchart TD
subgraph P1["1 · Vorbereiten"]
S["📝 Skript<br/>Teleprompter"] --> R["🎥 Roh<br/>Aufnahme hochladen"]
end
subgraph P2["2 · Schneiden mit zwei Freigaben"]
A{{"🤖 Schnitt-Agent<br/>Roh-Schnitt"}} --> F1["✋ Freigabe 1<br/>Roh-Schnitt + Storyboard"]
F1 -- "Korrektur" --> A
F1 -- "Freigeben" --> A2{{"🤖 Schnitt-Agent<br/>fertiges Video"}}
A2 --> F2["✋ Freigabe 2<br/>fertiges Video"]
F2 -- "Korrektur" --> A2
end
subgraph P3["3 · Veröffentlichen"]
B["✅ Bereit"] --> T["📅 Termin setzen<br/>= dein Ja zum Upload"]
T --> U{{"🤖 Upload-Agent<br/>Chrome oder Composio"}}
U --> L["🚀 Live<br/>Häkchen + Link"]
U -- "Problem" --> E["⚠️ Fehler im Board<br/>Erneut versuchen"]
end
R --> A
F2 -- "Freigeben" --> B
classDef agent fill:#FF7A1A,stroke:#c25400,color:#111,font-weight:bold
classDef du fill:#1f2937,stroke:#FF7A1A,color:#fff
classDef ok fill:#14532d,stroke:#22c55e,color:#fff
classDef err fill:#7f1d1d,stroke:#ef4444,color:#fff
class A,A2,U agent
class F1,F2,T du
class L ok
class E errOrange = ein Agent arbeitet · dunkel mit orangem Rand = du entscheidest. Alles andere passiert im Board, am PC oder am Handy.
Related MCP server: taskops
Was es kann
Bereich | Funktion |
Board | Fünf Stufen (Skript → Roh → Schnitt → Bereit → Live), Karten mit Cover, Detailblatt, Handy-Ansicht mit Reitern, als Web-App installierbar |
Skript | Texte je Video (Caption, Titel, Beschreibung, Tags, Sprechtext), Teleprompter mit einstellbarer Schrift, 1-Klick-Kopieren, eigene Fassungen ohne das Original zu verlieren |
Ideen | Ideenspeicher mit Diktat (Web Speech API) |
Rohaufnahme | Upload direkt aus dem Board (auch vom Handy, gestreamt, bis 8 GB), mehrere Anläufe pro Video |
Schnitt-Agent | Zwei Freigaben im Board: Roh-Schnitt + Storyboard, dann fertiges Video. Korrekturen als Text, der Agent setzt nur diese um |
Planen | Datum, Uhrzeit, Plattformen. Ein Termin ist das Ja zum Hochladen. Knopf „Jetzt posten“ |
Upload-Agent | Lädt fällige Videos hoch (Claude in Chrome oder Composio), prüft Kanal und Konto, hakt erst nach Sichtprüfung ab |
Fehlerweg | Sperre gegen Doppel-Uploads (45 Min.), Fehler rot auf der Karte, erneuter Versuch erst nach deinem Klick |
MCP | 22 Werkzeuge für Claude Code, z. B. |
Agent-Auslöser | Prüft ohne KI (0 Tokens), ob Arbeit da ist. Wird bei jeder Board-Änderung geweckt, sonst einmal pro Minute |
Warum ein Auslöser statt Zeitplan?
Eine Routine, die alle 30 Minuten einen Agenten startet, endet meist mit „nichts fällig“ und kostet trotzdem jedes Mal eine
volle KI-Sitzung. Hier prüft ein kleiner Python-Thread den Stand ohne KI. Erst wenn ein Termin erreicht ist oder ein Schnitt
wartet, startet er claude -p mit dem passenden Auftrag aus geplante-aufgaben/. Pro Art läuft höchstens ein Agent, nach
einem Lauf gilt eine Pause (Standard 10 Minuten), die eine Änderung im Board aufhebt.
Einrichtung
Herunterladen: oben auf dieser Seite Code → Download ZIP und entpacken, oder im Terminal:
git clone https://github.com/onursi/content-command-center-template.git
cd content-command-center-templateSchnell: Öffne Claude Code in diesem Ordner und kopiere den Text aus AGENT-SETUP.md hinein.
Der Agent richtet alles ein und fragt nach, was er wissen muss.
Von Hand:
Voraussetzungen: Python 3.10+, Claude Code, optional ffmpeg (Thumbnails aus PNG/WebP, Schnitt).
Abhängigkeit installieren:
python -m pip install -r requirements.txtEinstellungen:
config.example.jsonnachconfig.jsonkopieren und anpassen (Anzeigename, Kanalnamen, Medienordner). Optional.env.examplenach.envkopieren (Port, Agent an/aus). Beide Dateien bleiben lokal.Board starten:
python server.pyDann http://127.0.0.1:8899 öffnen. Beim ersten Start werden die Demodaten aus
demo/übernommen. Im Hintergrund ohne Fenster:start.cmd(Windows) oder./start.sh(macOS/Linux).MCP bei Claude Code anmelden (absoluten Pfad einsetzen):
claude mcp add --scope user kommandozentrale -- python /voller/pfad/zu/mcp_server.pyPrüfen:
claude mcp listzeigtkommandozentraleals verbunden.Testen (Board muss laufen):
python mcp_test.pyEndet mit
ALLES OK. Der Test ändert nur den Demo-Eintrag „skript-wochenplan“ und setzt ihn zurück.Agenten einschalten (erst, wenn die Aufträge passen): Lies
geplante-aufgaben/upload.mdundschnitt.md, passe sie an deinen Ablauf an und setze inconfig.json"agent": {"aktiv": true}. Server neu starten. Der Upload-Agent (mit Chrome) bleibt zusätzlich aus, bis du beiagent.arten.upload"aktiv": truesetzt.
Eigene Videos eintragen
Inhalte stehen in data.json (Liste items), dein Stand aus dem Board in state.json. Ein Eintrag:
{ "id": "mein-video", "titel": "…", "untertitel": "…", "take": "Take 1", "stage": "skript",
"bild": "media_packages/cover.jpg", "video": "media_packages/fertig.mp4",
"texte": [{ "name": "TikTok-Caption", "text": "…" }, { "name": "Teleprompter-Sprechtext", "text": "…", "prompter": true }] }media_packages/… zeigt auf den Ordner, den du in config.json unter medien.media_packages einträgst.
Stufen: skript, aufgenommen (= Roh), schnitt, bereit, live. Videos aus dem Upload-Knopf legt der Server selbst an.
Welcher Upload-Weg passt?
Ehrlich gesagt: Vollautomatisch öffentlich posten klappt ohne Vorarbeit nur bei YouTube. Bei TikTok entscheidet TikTok selbst, ob deine App öffentlich posten darf. Darum gibt es drei Wege, die der Upload-Agent je nach Lage nimmt:
Weg | YouTube | TikTok | Gut für | Haken |
A · Claude in Chrome (Agent klickt im Studio) | ✅ öffentlich oder geplant | ✅ öffentlich | Start ohne eigene App | Datei höchstens ca. 10 MB, Chrome muss offen und angemeldet sein |
B · Composio-Schnittstelle | ✅ öffentlich oder geplant | ⚠️ nur Entwurf im TikTok-Eingang | große Dateien, PC muss nicht klicken | TikTok: du tippst am Handy nur noch auf „Posten“ und fügst die Caption ein |
C · Eigene TikTok-App (geprüft) | – | ✅ öffentlich über die Schnittstelle | volle Automatik auf Dauer | einmalige Einrichtung und Prüfung durch TikTok, dauert Tage bis Wochen |
Empfehlung zum Start:
YouTube: Weg A für kleine Shorts, Weg B ab 10 MB.
TikTok: Videos unter 10 MB über Weg A, größere über Weg B als Entwurf. Dann bekommst du eine Mitteilung von TikTok, öffnest den Entwurf und tippst auf „Posten“. Die fertige Caption steht im Board zum Kopieren bereit.
Später: Weg C einrichten, wenn du TikTok komplett ohne Handgriff willst. Anleitung: docs/TIKTOK-APP.md.
Tipp gegen die 10-MB-Grenze: Rechne mit höchstens etwa 1,3 Mbit/s (Bild + Ton) für 60 Sekunden, bei 30 Sekunden das Doppelte. Mit dem Codec AV1 sehen Shorts bei dieser Rate meist noch sauber aus, YouTube nimmt AV1 an (für TikTok vorher mit einem Testvideo prüfen, sonst H.265 nehmen). Beispiel mit ffmpeg:
ffmpeg -i fertig.mp4 -c:v libsvtav1 -preset 6 -b:v 1100k -c:a aac -b:a 96k upload.mp4Prüf die Datei danach mit dem Auge. Der Agent komprimiert nie selbst, damit nichts ohne dein Wissen an Qualität verliert.
Aufbau
Datei | Aufgabe |
| Liefert das Board aus, streamt Videos, speichert den Stand, nimmt Uploads an. Nur Standardbibliothek |
| Die ganze Oberfläche, ohne Build-Schritt |
| MCP „kommandozentrale“ (offizielles |
| Thread im Server: prüft ohne KI und startet |
| Liest |
| Aufträge für Upload- und Schnitt-Agent. Platzhalter wie |
| Ausgedachte Beispielvideos und |
Sicherheit
Das Board hat kein Login. Diese Schutzmaßnahmen sind eingebaut:
Nur erlaubte Hosts: Der Server beantwortet nur Anfragen an
127.0.0.1,localhostund die Namen insicherheit.erlaubte_hosts(bzw.CCC_ERLAUBTE_HOSTS). Andere Host-Header bekommen 403. Das verhindert DNS-Rebinding. Nutzt du einen privaten Tunnel (z. B. Tailscale), trag dessen Namen dort ein, sonst lädt das Board am Handy nicht.Schreiben nur vom eigenen Board: POST-Anfragen mit fremdem
Origin/Refererwerden abgewiesen (403). Die JSON-Routen (/api/state,/api/item,/api/ideen) verlangenContent-Type: application/json(sonst 415), damit eine fremde Webseite nicht mit einem einfachen Formular Daten einschleusen kann.Geteiltes Token: Beim ersten Start legt der Server ein zufälliges Token in
.ccc-tokenab (nicht eingecheckt). Board, MCP und Auslöser senden es bei jedem POST alsX-CCC-Token. Abschalten mit"sicherheit": {"token": false}.Nur freigegebene Dateien: Ausgeliefert werden das Board, die Icons,
data.jsonund die Medienordner ausconfig.json, nie.env,config.json,.ccc-tokenoder Code. Pfade wie../werden abgefangen.Texte werden escaped: Titel, Texte, Ideen, Korrekturen und Notizen kommen nie als HTML ins Board, Links nur mit http(s).
Agent eingeschränkt: Der Auslöser startet
claude -pmit--permission-mode dontAskund--allowedTools(siehe unten). Ein Lauf, der länger alsagent.max_laufzeit_minuten(Standard 180) braucht, wird beendet und im Board als Fehler gezeigt.Der Arbeitsordner des Schnitt-Agenten wird geprüft: Er muss unter
media_autoliegen.
Danke an das Community-Review, das mehrere dieser Punkte gefunden hat.
Ehrliche Grenzen
Der Auslöser startet
claude -pohne Rückfragen. Statt--dangerously-skip-permissionssteht inconfig.example.jsoneine Liste erlaubter Werkzeuge (agent.erlaubte_werkzeuge→--allowedTools): diekommandozentrale-Werkzeuge (mcp__kommandozentrale__*),Bash(ffmpeg:*),Bash(ffprobe:*),Bash(python:*),Read,WriteundEdit. Alles andere lehnt--permission-mode dontAskab. Der Upload-Agent bekommt zusätzlich die Chrome-Werkzeuge und ist standardmäßig aus. Braucht dein Schnitt mehr (z. B.node), ergänze nur genau diese Befehle. Der Auslöser ist standardmäßig aus. Jeder Lauf kostet Tokens deines Claude-Kontos.Ein Agent lädt alle MCP-Server aus deinem Benutzer-Profil (User-Scope), nicht nur
kommandozentrale. Hast du dort z. B. E-Mail, Kalender oder Bezahldienste angebunden, kann der Agent sie sehen. Darum--allowedToolsnutzen (siehe oben) oder den Auslöser unter einem eigenen Windows-/macOS-Benutzer laufen lassen, der nur die nötigen MCPs hat.Arbeitsverzeichnis und
.envtrennen:agent.arbeitsverzeichnissteht aufarbeit/, nicht auf dem Programmordner. So liegen.env,config.jsonund.ccc-tokennicht im Ordner, in dem der Agent arbeitet. Leg dort keine Zugangsdaten ab.pythonist erlaubt, damit der Schnitt Skripte ausführen kann. Ein Python-Skript kann alles, was dein Benutzer darf. Wer das nicht will, streichtBash(python:*)und gibt dem Agenten nur feste Skripte frei.TikTok-API: Ohne App-Prüfung durch TikTok gibt es kein öffentliches Posten über die Schnittstelle. Über Composio (
TIKTOK_UPLOAD_VIDEO,publish: false) landet das Video nur im TikTok-Eingang, die Caption muss man in der App einsetzen. Eigene App einrichten: docs/TIKTOK-APP.md.YouTube-API: Uploads über die Schnittstelle zählen gegen ein Tageskontingent. Ist es aufgebraucht, scheitert der Upload bis zum nächsten Tag.
Claude in Chrome: Der Browser-Weg braucht ein offenes Chrome mit der Erweiterung und angemeldeten Konten. Das Datei-Werkzeug nimmt höchstens etwa 10 MB; größere Videos meldet der Agent als Fehler, statt sie zu komprimieren. Oberflächen von TikTok und YouTube ändern sich, dann muss der Auftrag angepasst werden.
Schnitt-Agent: Der mitgelieferte Auftrag ist ein Gerüst. Gute Ergebnisse brauchen deine eigenen Regeln (Stil, Grafik, Untertitel), einen Transkribierer wie faster-whisper und Rechenleistung. Er legt nur vor, gibt nie selbst frei und postet nie.
Kein Login im Board. Der Server hört standardmäßig nur auf
127.0.0.1. Fürs Handy einen privaten Tunnel nutzen (z. B. Tailscale) und dessen Namen insicherheit.erlaubte_hostseintragen, nie offen ins Internet stellen. Wer das Board im Tunnel öffnen kann, kann auch das Token lesen: Der Tunnel muss privat bleiben.Einzelnutzer-Werkzeug, getestet unter Windows 11 mit Python 3.12. macOS/Linux sollten laufen, sind aber weniger erprobt.
Lizenz
MIT, siehe LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Official TimeToPost MCP server for social post drafting, scheduling, publishing and approval queues.
Hosted MCP for YouTube Studio: uploads, metadata, playlists, comments, analytics, captions.
Publish and schedule videos to TikTok, YouTube Shorts, Instagram, Facebook, LinkedIn, Pinterest, Bluesky, Threads and X from Claude, Cursor or any MCP client. Upload once, post everywhere, track views in unified analytics, and retry failed posts. Official platform APIs only, free plan available. Docs: https://docs.multi-upload-tool.com/mcp
A shared board your Claude projects read and write: handoffs, @mentions and pinned notes, with a per-room read cursor kept on the server. Add https://solotet.com/mcp as a custom connector in Claude and sign in with Google. Setup: solotet.com/en/connect
Related MCP Servers
- AlicenseAqualityDmaintenanceA local stdio MCP server that gives Claude (or any MCP client) full programmatic control over a single YouTube channel, including video upload, channel management, comments, analytics, and more.4616 npmMIT
- AlicenseAqualityAmaintenanceMCP server for Claude Code agents to manage persistent shared task boards with dependency graphs, atomic claims, and git-bound tasks.11MIT
- AlicenseAqualityAmaintenanceEnables multiple AI coding tools to collaboratively review code by sharing a SQLite-backed board, allowing them to create threads, post and reply to comments, list threads, and update statuses through MCP.16512 PyPIMIT
- AlicenseAqualityBmaintenanceEnables MCP clients like Claude or Cursor to upload videos from your local machine directly to YouTube, schedule them, and manage channel content through Runsheet.11123 npmMIT