Files
dogfather-universe/workspace/content.html
T
DogFatherGitandClaude Opus 5 2764aea61c Kampagnen: auswaehlen, wo die Kachel hingehoert -- TikTok oder Agentur
Filipe, mit einem Bild des Einlesekastens: "das sind die von der
agentur selbst. die krieg ich so, perfektioniere das und auch das ich
auswaehlen kann wo es hingehoert, zu tiktok oder der agentur." Dazu
sein echter Link: https://vm.tiktok.com/ZSbACwAnK/

ZWEI FRAGEN, DIE BISHER EINE WAREN. "Woher kam der Link" und "wem
gehoert das Event" wurden beide aus `kampagne_id` beantwortet: Wer
ueber eine Einladung eingelesen wurde, stand links. Die Agentur
schickt ihre eigenen Events aber ebenfalls als TikTok-Link -- damit
war die Zuordnung zwangslaeufig falsch.

Neue Spalte `kampagne_seite` mit DREI Zustaenden, und NULL ist einer
davon: niemand hat gewaehlt -> wie bisher nach der Herkunft. Alle
bestehenden Kacheln behalten dadurch genau ihren Platz, ohne dass
etwas umgestellt werden musste. Gewaehlt wird im Einlesekasten
(Automatisch / TikTok / Agentur, "Automatisch" vorbelegt) und
nachtraeglich an der Kachel ("zur Agentur" / "zu TikTok"). Nur die
Leitung; bei einem Creator wird das Feld stillschweigend entfernt.

GEMESSEN AN SEINEM ECHTEN LINK, mit Gegenprobe:
  vm.tiktok.com/ZSbACwAnK/
    -> www.tiktok.com/tcn/activity?activity_id=7691301069758087175
    -> 233 KB reine Huelle, kein __MODERN_ROUTER_DATA__
  dieselbe Nummer auf dem Weg der oeffentlichen Kampagnenseite
    -> 42 KB, ebenfalls ohne Datenpaket
  eine echte Kampagne auf demselben Weg
    -> 967 KB MIT Datenpaket
Die Kampagne existiert also nicht als oeffentliche Seite: Das Creator
Network baut seine Seiten erst im Browser auf, angemeldet. Von aussen
kann das niemand lesen -- auch kein anderes Programm.

Daraus zwei Dinge:
  - `nummerAusAdresse` liest jetzt BEIDE Schreibweisen (`activityId`
    auf der Kampagnenseite, `activity_id` im Creator Network).
  - `istCreatorNetwork` erkennt solche Links VOR dem Abruf. Statt 502
    "TikTok hat nicht geantwortet" (eine Ursache, die es nicht gibt)
    kommt 422 mit dem, was wirklich los ist -- und mit dem Weg
    daneben: das Event von Hand anlegen, Link in die Beschreibung.

BERICHTIGT: Der PATCH-Weg stand als '/workspace/api/bereich/agentur/'
+ e.id im Browser und war fuer pruef-struktur nicht mehr zuzuordnen
-- jetzt `${bereich}` wie bei den Nachbarn, was nebenbei den zweiten
Ort mit "agentur" im Text wegnimmt. Und "Automatisch" hatte keinen
eigenen Ton und fiel auf `--akzent` zurueck: auf dem Agenturbrett
genau das Gelb der rechten Spalte, die vorbelegte Moeglichkeit sah
also aus wie "Agentur".

GEPRUEFT: 169 (Route, +22), 170 (Kachel, +12), 67 (Agentur), 67
Messungen (Bild), 107 (Haus-Trennung, unveraendert), dazu struktur,
css-klassen, zeichen, deutsche-texte, formulare, tippziele. Drei
Gegenproben: Auswahl verwerfen, Creator-Network durchlassen, Kachel
wieder nur nach Herkunft -- alle drei werden bemerkt, alle Dateien
byte-gleich wiederhergestellt.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-07 23:46:41 +02:00

194 lines
8.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Content-Ideen · Spicy & Dogi</title>
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610072346" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610072346" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610072346" />
<link rel="stylesheet" href="assets/css/start.css?v=202610072346" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202610072346" />
<link rel="stylesheet" href="assets/css/content.css?v=202610072346" />
<link rel="stylesheet" href="assets/css/module.css?v=202610072346" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202610072346" />
</head>
<body class="start" data-buehne="portal">
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
Pseudo-Elements -- body hat nur ::before und ::after. -->
<div class="schleier" aria-hidden="true"></div>
<header class="kopfleiste">
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
<path d="M14.5 5.5 8 12l6.5 6.5" />
</svg>
<span class="zurueck-knopf__text">Zurück</span>
</button>
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator&nbsp;Workspace</a> · Content</span></p>
<div class="kopfleiste__rechts">
<span class="wer" id="wer">…</span>
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
</div>
</header>
<main class="inhalt inhalt--breit">
<section class="kopf-zeile">
<div>
<p class="marke">Betreuung</p>
<h1 class="titel">Content-Ideen</h1>
<p class="unterzeile" id="unterzeile">
Von der Idee bis zum Upload – eine Strecke, kein Terminkalender.
</p>
</div>
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Video anlegen</button>
</section>
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
<!-- Kennzahlen. Bewusst wenige und jede mit einer Handlung dahinter –
eine Zahl ohne Vergleich ist eine Eitelkeitszahl. -->
<!-- Die Kennzahlen-Reihe stand hier bis zum 01.09.2026 ("diese Kisten
sind jetzt ueberall zu viel, die sollen weg"). Die Strecke darunter
zeigt dieselben Zahlen an jeder Spalte. -->
<!-- Säulen-Balance: gestapelter Balken, 90 Tage, nur Veröffentlichtes. -->
<section class="balance" id="balance" hidden>
<div class="klapp-kopf">
<p class="feldschild">Womit der Kanal gefüllt wird <span class="leise" id="balance-zeit"></span></p>
<button type="button" class="knopf-still" id="saeulen-oeffnen">Säulen verwalten</button>
</div>
<div class="balance__balken" id="balance-balken" role="img" aria-label="Verteilung auf die Content-Säulen"></div>
<ul class="legende" id="balance-legende"></ul>
<p class="balance__hinweis" id="balance-hinweis"></p>
</section>
<!-- Säulen verwalten. Zugeklappt, weil man das selten anfasst. -->
<section class="saeulen-kasten" id="saeulen-kasten" hidden>
<div class="klapp-kopf">
<p class="feldschild">Content-Säulen</p>
<button type="button" class="knopf-still" id="saeulen-zu">Schließen</button>
</div>
<p class="block__frage">
Drei bis fünf Themen, aus denen der Kanal besteht. Als Richtwert gilt
<strong>70 % Wert</strong> (Unterhaltung, Hilfe), <strong>20 % Community</strong>,
<strong>10 % Eigenwerbung</strong>. Eine Säule wird erst brauchbar, wenn Formate an ihr hängen.
</p>
<div id="saeulen-liste"></div>
<form class="saeule-neu" id="saeule-neu">
<div class="feld feld--saeule-creator" id="feld-saeule-creator" hidden>
<label class="feld-schild" for="s-creator">Für</label>
<select id="s-creator"></select>
</div>
<div class="feld">
<label class="feld-schild" for="s-name">Name der Säule</label>
<input id="s-name" maxlength="40" placeholder="z. B. Tutorials" required />
</div>
<div class="feld feld--schmal">
<label class="feld-schild" for="s-ziel">Ziel-Anteil %</label>
<input id="s-ziel" type="number" min="0" max="100" step="5" placeholder="z. B. 70" />
</div>
<button type="submit" class="knopf knopf--klein">Hinzufügen</button>
</form>
</section>
<!-- Formular für ein neues Video -->
<form class="neu" id="neu" hidden>
<div class="neu__raster">
<div class="feld feld--breit">
<label class="feld-schild" for="f-titel">Worum geht es?</label>
<input id="f-titel" name="titel" maxlength="160" required
placeholder="z. B. „3 Fehler beim ersten LIVE“" />
</div>
<div class="feld feld--breit">
<label class="feld-schild" for="f-hook">
Hook <span class="leise">– die ersten Sekunden, sie entscheiden über alles</span>
</label>
<input id="f-hook" name="hook" maxlength="300"
placeholder="z. B. „Ich hab 4 Monate gebraucht, um das zu kapieren.“" />
</div>
<div class="feld" id="feld-creator" hidden>
<label class="feld-schild" for="f-creator">Creator</label>
<select id="f-creator"></select>
</div>
<div class="feld">
<label class="feld-schild" for="f-art">Stufe</label>
<select id="f-art"></select>
</div>
<div class="feld">
<label class="feld-schild" for="f-saeule">Säule</label>
<select id="f-saeule"></select>
</div>
<div class="feld">
<label class="feld-schild" for="f-format">Format</label>
<input id="f-format" maxlength="60" list="formate" placeholder="z. B. Tutorial" />
<datalist id="formate">
<option value="Talking Head"></option>
<option value="Tutorial"></option>
<option value="Story"></option>
<option value="LIVE-Ausschnitt"></option>
<option value="Vorher/Nachher"></option>
<option value="Reaktion"></option>
<option value="Behind the Scenes"></option>
</datalist>
</div>
<div class="feld">
<label class="feld-schild" for="f-geplant">Soll raus am</label>
<input id="f-geplant" type="date" />
</div>
<div class="feld feld--breit">
<label class="feld-schild" for="f-text">Ablauf, Notizen (optional)</label>
<textarea id="f-text" rows="3" maxlength="6000"></textarea>
</div>
</div>
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
<div class="neu__knoepfe">
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Anlegen</button>
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
</div>
</form>
<div class="filterzeile" id="filterzeile"></div>
<!-- Die Strecke. Fünf Spalten, auf dem Handy untereinander. -->
<!-- Fertige Ideen zum Uebernehmen. Steht VOR der Strecke: Wer noch
nichts hat, soll nicht erst an leeren Spalten vorbeiscrollen. -->
<div id="vorlagen" hidden></div>
<div class="strecke" id="strecke" aria-busy="true">
<p class="leise">Wird geladen …</p>
</div>
</main>
<script src="assets/js/meldung.js?v=202610072346" defer></script>
<script src="assets/js/nachfrage.js?v=202610072346" defer></script>
<script src="assets/js/wahl.js?v=202610072346" defer></script>
<script src="assets/js/bereiche.js?v=202610072346" defer></script>
<script src="assets/js/installieren.js?v=202610072346" defer></script>
<script src="assets/js/kopf.js?v=202610072346" defer></script>
<script src="assets/js/glocke.js?v=202610072346" defer></script>
<script src="assets/js/checkliste.js?v=202610072346" defer></script>
<script src="assets/js/content.js?v=202610072346" defer></script>
</body>
</html>