diff --git a/.gitignore b/.gitignore index e43b0f9..08117a5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ .DS_Store + +# Zwischenschritt beim PDF-Bau, entsteht neu aus bauen.py +redaktionsplan/*.html diff --git a/redaktionsplan/Instagram-Redaktionsplan.pdf b/redaktionsplan/Instagram-Redaktionsplan.pdf new file mode 100644 index 0000000..018d7f6 Binary files /dev/null and b/redaktionsplan/Instagram-Redaktionsplan.pdf differ diff --git a/redaktionsplan/bauen.py b/redaktionsplan/bauen.py new file mode 100644 index 0000000..8a93c9d --- /dev/null +++ b/redaktionsplan/bauen.py @@ -0,0 +1,488 @@ +#!/usr/bin/env python3 +"""Baut den Redaktionsplan als A4-PDF. + +Aufbau wie beim Webinar-Vergleich: eine HTML-Datei mit eingebettetem Manrope +und eingebettetem Logo, die von Chrome nach PDF gedruckt wird. Eingebettet +heißt hier wörtlich, die Datei läuft ohne Netz und ohne Nachbarordner. + + python3 redaktionsplan/bauen.py +""" + +import base64 +import subprocess +from datetime import date, timedelta +from pathlib import Path + +HIER = Path(__file__).resolve().parent +REPO = HIER.parent +CHROME = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" + +# Schrift und Logo kommen aus dem Repo selbst, nicht aus einem Nachbarordner: +# das PDF soll sich auf jedem Rechner bauen lassen, der nur dieses Repo hat. +# Manrope liegt als variables Latin-Subset vor, 200 bis 800. +FONT = base64.b64encode( + (REPO / "assets/fonts/xn7gYHE41ni1AdIRggexSvfedN4.woff2").read_bytes()).decode() +LOGO = base64.b64encode( + (REPO / "assets/brand/logo.svg").read_bytes()).decode() + +TAGE = {0: "Mo", 2: "Mi", 4: "Fr"} + + +def slots(start: date, anzahl: int): + """Die Mo/Mi/Fr-Termine ab dem Starttag.""" + raus, d = [], start + while len(raus) < anzahl: + if d.weekday() in TAGE: + raus.append((TAGE[d.weekday()], d.strftime("%d.%m."))) + d += timedelta(days=1) + return raus + + +# Thema, Format, Ziel. Reihenfolge ist nicht beliebig: erst warum es uns gibt, +# dann die Haltung, dann die Funktionen von der täglichen Last nach hinten zu +# dem, was Vorwissen braucht. +PLAN = [ + ("Die Geschichte", "Carousel, 6", "Herkunft. Warum es HiveGrid gibt."), + ("Verbinden statt ersetzen", "Einzelbild", "Haltung. Die Kernaussage in einem Satz."), + ("Projektmanagement", "Carousel", "Der Überblick, den jeder Betrieb vermisst."), + ("Workflow-Engine", "Carousel", "Wenn-dann statt Handarbeit."), + ("Team-Chat", "Carousel", "Ein Kanal pro Projekt, Foto rein, Aufgabe raus."), + ("Form Builder", "Carousel", "Vom Kontaktformular bis zum Aufmaß."), + ("Zettelwirtschaft", "Carousel", "Wissen ohne Produkt. Wo im Betrieb Zeit verloren geht."), + ("E-Mail-Marketing", "Carousel", "Aus Anfragen werden Kontakte, aus Kontakten Aufträge."), + ("Mitarbeiter-Management", "Carousel", "Wer kann was, wer ist wo, wer braucht was."), + ("Der Betrieb dahinter", "Carousel", "Vierte Generation SHK. Keine Studio-Bilder."), + ("KI-Anbindung, MCP", "Carousel", "Externe KI darf mitlesen, ohne Datenabfluss."), + ("Dein ERP bleibt", "Einzelbild", "Der Einwand Nummer eins, direkt beantwortet."), + ("Tempo und Übersicht", "Reel", "Die Oberfläche selbst. Wenige Klicks, kein Suchen."), + ("Warteliste", "Carousel", "Aufruf. Was die ersten Betriebe bekommen."), + ("Häufige Fragen", "Carousel", "Die fünf Einwände, die immer kommen."), +] + +ZEILEN = "".join( + '{tag} {datum}{thema}' + '{format}{ziel}'.format( + hi=' class="hi"' if i < 2 else "", + tag=t, datum=d, thema=p[0], format=p[1], ziel=p[2], + ) + for i, (p, (t, d)) in enumerate(zip(PLAN, slots(date(2026, 8, 12), len(PLAN)))) +) + +HTML = f""" + + + +Instagram: Redaktionsplan und Vorgehen + + + + + +
+
+ HiveGrid +
Instagram · Redaktionsplan & Vorgehen · Stand 10.08.2026
+
+
+

Rahmen und Rhythmus

+

+ In dieser Phase erwarten wir über den Kanal keine nennenswerte Reichweite. Er dient + zuerst der Darstellung der Software für Leute, + die ohnehin auf uns stoßen: mögliche Kunden, Partner, Investoren. Dieses Dokument legt + fest, was wann erscheint, wie es aussieht und was wir nach vier Wochen ansehen. +

+ +
+
+
Rhythmus
+
Mo · Mi · Fr
+
+
+
+
Uhrzeit
+
12:00
+
+
+
+
Worauf es ankommt
+
+ Auf dem Eindruck der ersten neun Kacheln. Die sieht jeder, der zum ersten Mal + auf dem Profil landet, bevor er einen einzelnen Beitrag öffnet.
+
+
+ +
+
+
Beiträge
+
3 / Woche
+
12 in vier Wochen. Mehr als fünf ginge auf die Qualität.
+
+
+
Format zuerst
+
Carousel
+
Trägt Erklärung und lässt sich im Generator wiederholbar bauen.
+
+
+
Durchgängig
+
Ein Raster
+
Gleiche Schrift, gleicher Grund, gleiche Bildsprache über alle Beiträge.
+
+
+ +

Wofür der Kanal da ist

+
+
+

Zeigen statt behaupten

+

Jeder Beitrag zeigt etwas Konkretes aus der Software oder aus dem + Betrieb: einen Screen, einen Ablauf, eine Aufnahme von der Baustelle. Keine + Behauptungen ohne Bild dazu.

+
+
+

Titelbilder tragen allein

+

Im Raster ist von einem Carousel nur die erste Slide zu sehen. + Die trägt deshalb einen vollständigen Gedanken, nicht den Anfang von einem. Der Rest + steht innen und in der Bildunterschrift.

+
+
+ +

Warum drei Tage und warum 12:00

+
+
+

Drei ist die untere Grenze

+

Unter drei Beiträgen pro Woche wirkt ein Profil inaktiv. Über + fünf leidet die Qualität.

+
+
+

12:00 ist eine Annahme

+

Für handwerklich geprägte Betriebe sind drei Fenster belegt: 6 bis 8, + 12 bis 13 und 19 bis 21 Uhr. Die Mittagspause passt am besten.

+
+
+

Montag ist der schwächste

+

Die Studienlage nennt Dienstag bis Donnerstag. Wir starten trotzdem + mit Mo, Mi, Fr und schauen es uns in vier Wochen an.

+
+
+
+
HiveGrid · Social MediaSeite 1 von 4
+
+ + +
+
+ HiveGrid +
Redaktionsplan · 12.08. bis 14.09.2026
+
+
+

Was wann erscheint

+

+ Fünfzehn Termine, alle um 12:00 Uhr. Die Reihenfolge ist nicht beliebig: erst warum + es uns gibt, dann die Haltung, dann die Funktionen. Innerhalb der Funktionen von der + täglichen Last nach hinten zu dem, was Vorwissen braucht. Die beiden markierten + Termine sind gesetzt und liegen fertig im Generator, alles danach darf sich verschieben. +

+ + + + + + + + + {ZEILEN} +
TerminThemaFormatWofür der Beitrag da ist
+ +

Sechs Sorten im Wechsel

+ + + + + + + + + + + + + + + + + + + + +
SorteAnteilBeispiel aus dem Plan
Funktion erklärt8Workflow-Engine, Form Builder, Team-Chat
Menschen und Betrieb2Die Geschichte, Der Betrieb dahinter
Haltung1Verbinden statt ersetzen
Einwand beantwortet2Dein ERP bleibt, Häufige Fragen
Wissen ohne Produkt1Zettelwirtschaft
Aufruf1Warteliste
+ +

Was unter jedem Beitrag steht

+
+
+

Die ersten 125 Zeichen

+

Mehr sieht niemand, bevor er auf "mehr" tippt. Der Haken gehört + dorthin, nicht in den letzten Absatz.

+
+
+

300 bis 800 Zeichen

+

Der Bereich, in dem erklärende Beiträge am besten laufen. Darunter + wirkt es dünn, darüber liest es niemand zu Ende.

+
+
+

5 bis 10 Hashtags

+

Ganz unten, durch Leerzeilen abgesetzt. Schlägt sowohl drei als auch + dreißig. Die Suchwörter gehören zusätzlich in den Fließtext.

+
+
+
+
HiveGrid · Social MediaSeite 2 von 4
+
+ + +
+
+ HiveGrid +
Bildsprache & Format
+
+
+

Bildsprache

+

+ Das Profil zeigt neun Kacheln auf einmal. Was gleich bleibt und was wechselt, ist + deshalb festgelegt und nicht von Beitrag zu Beitrag neu entschieden. +

+ +
+
+

Was gleich bleibt

+
    +
  • 1080 × 1350 px, das hochkantigste Feed-Format
  • +
  • Manrope, dieselbe Schrift wie auf der Website
  • +
  • Ein Grund, das Raster, sonst nichts
  • +
  • Ein Akzentwort je Überschrift, per Marker
  • +
  • Chamfer an Rahmen und Tags, die Markenform
  • +
+
+
+

Was von Beitrag zu Beitrag wechselt

+
    +
  • Hell und dunkel im Wechsel, damit das Raster atmet
  • +
  • Screens oder Visualisierung, je nach Thema
  • +
  • Die Anzahl der Slides, fünf bis sieben
  • +
+

Im Profil-Raster wird auf 3:4 beschnitten, + nicht auf 4:5. Was mittig sitzt, überlebt.

+
+
+ +

Statt behaupten, zeigen

+ + + + + + + + + + + + + + + + + +
StattZeigen wir
"Alles auf einen Blick"Das Board mit echten Aufträgen, Summen und Terminen.
"Spart Zeit"Den Ablauf: Anfrage rein, Aufgabe raus, Bestätigung an den Kunden.
"Einfach zu bedienen"Das Formular, das per Drag-and-drop entsteht.
"Aus dem Handwerk"Den Betrieb, die Baustelle, die Menschen dahinter.
"Verbindet deine Tools"Die Visualisierung: ERP in der Mitte, das Neue drumherum.
+ +

Carousel jetzt, Reels später

+
+

Für Konten unter 50.000 Followern bringen + Reels mehr Reichweite als Carousels. Das ist die Datenlage. Für uns ist sie zweitrangig, + weil Reichweite in dieser Phase nicht das Ziel ist.

+

Carousels passen besser zu dem, was der Kanal leisten soll: Sie + erklären, sie lassen sich im Generator sauber und wiederholbar bauen, und sie werden + gespeichert. Das erste Reel steht am 09.09. und ist eine Bildschirmaufnahme, dafür + braucht es keine Kamera. Danach kommt Material aus dem Betrieb dazu. Aus drei Beiträgen + werden dann zwei Carousels und ein Reel, nicht vier Beiträge.

+
+
+
HiveGrid · Social MediaSeite 3 von 4
+
+ + +
+
+ HiveGrid +
Tägliche Arbeit & Auswertung
+
+
+

Tägliche Interaktion

+

+ Instagram sortiert ein Konto auch danach ein, womit es sich selbst beschäftigt. + Rund zehn Minuten am Tag, aufgeteilt auf die drei Posting-Tage. +

+ +
+
+

Die Routine pro Beitrag

+
    +
  • 5 Beiträge liken aus dem eigenen Umfeld
  • +
  • 3 echte Kommentare schreiben, keine Emojis
  • +
  • 1 Konto folgen, das wirklich passt
  • +
+

Zehn gute Kommentare bei den richtigen Konten + wirken mehr als fünfzig verstreute. In den Zahlen sichtbar wird das nach vier bis + acht Wochen.

+
+
+

Wem wir folgen

+
    +
  • SHK-, Elektro- und Dachbetriebe, die selbst posten
  • +
  • Innungen, Kreishandwerkerschaften, Kammern
  • +
  • Handwerksmessen und Fachmedien
  • +
  • Hersteller, deren Produkte im Betrieb verbaut werden
  • +
  • Andere Handwerkssoftware, deren Kommentarspalten voll sind
  • +
+
+
+ +
+

Wie ein Kommentar aussieht

+

Am meisten bringt ein Kommentar in den ersten + Minuten nach einem Beitrag. Deshalb folgen wir gezielt Konten, die regelmäßig posten, + und schauen einmal täglich zur Mittagszeit rein.

+

Ein Kommentar ist gut, wenn er ohne unseren Namen funktioniert. Also + eine Erfahrung, eine Nachfrage, ein Widerspruch. Nicht "Toller Beitrag", und nichts, + was auf uns verweist.

+
+ +

Was wir nach vier Wochen ansehen

+ + + + + + + + + + + + + + + + + + + + +
KennzahlWo sie stehtWas sie uns sagt
Profilaufrufe je BeitragInsights, InteraktionenOb ein Beitrag jemanden dazu bringt, sich das Profil anzusehen. Das ist unser Zweck.
SendungenBeitragsinsightsWelches Thema jemand weiterschickt. Wiegt beim Ausspielen mehr als ein Like.
SpeicherungenBeitragsinsightsOb ein Carousel als Nachschlagewerk taugt.
Konten erreicht,
davon keine Follower
Insights, ReichweiteOb wir aus der eigenen Blase herauskommen.
Aktivste ZeitenInsights, ZielgruppeOb 12:00 stimmt. Erst ab etwa 100 Followern belastbar.
Anmeldungen WartelisteBackendOb aus dem Eindruck ein Kontakt wird.
+ +
+

Nach vier Wochen

+

Bleibt der Montag oder wird es Dienstag? Bleibt 12:00? Und wie viele + Reels ersetzen ab dann Carousels? Bis dahin lassen wir den Rhythmus laufen, sonst + lässt sich nichts vergleichen.

+
+ +

Quellen zu den Ausspielungssignalen und + Posting-Zeiten: Sprout Social, Buffer, Later und Hootsuite (Instagram-Algorithmus 2026), + adconsulting.de und socialmediaakademie.de (Posting-Zeiten B2B und Handwerk, Deutschland). + Zahlen zu Sendungen und Reichweite stammen aus Auswertungen Dritter, nicht von Meta selbst, + und sind Größenordnungen, keine Garantien.

+
+
HiveGrid · Social MediaSeite 4 von 4
+
+ + + +""" + +ZIEL_HTML = HIER / "Instagram-Redaktionsplan.html" +ZIEL_PDF = HIER / "Instagram-Redaktionsplan.pdf" +ZIEL_HTML.write_text(HTML, encoding="utf-8") + +subprocess.run( + [CHROME, "--headless", "--disable-gpu", "--no-pdf-header-footer", + f"--print-to-pdf={ZIEL_PDF}", ZIEL_HTML.as_uri()], + check=True, capture_output=True, +) +print(f"{ZIEL_PDF.name} {ZIEL_PDF.stat().st_size / 1024:.0f} KB") diff --git a/state/post2-merk.json b/state/post2-merk.json new file mode 100644 index 0000000..8336133 --- /dev/null +++ b/state/post2-merk.json @@ -0,0 +1,94 @@ +{ + "bgState": [ + { + "bg": "raster", + "int": "dezent" + }, + { + "bg": "raster", + "int": "dezent" + }, + { + "bg": "raster", + "int": "dezent" + }, + { + "bg": "raster", + "int": "dezent" + }, + { + "bg": "raster", + "int": "dezent" + }, + { + "bg": "raster", + "int": "dezent" + } + ], + "current": 0, + "deck": [ + { + "ref": "titel", + "werte": {} + }, + { + "ref": "prozesse", + "werte": {} + }, + { + "ref": "wechseln", + "werte": {} + }, + { + "ref": "mehr", + "werte": {} + }, + { + "ref": "verbinden", + "werte": {} + }, + { + "ref": "warteliste", + "werte": {} + } + ], + "edits": [ + { + "vis": { + "dx": -100, + "dy": 250, + "size": 700 + } + }, + { + "vis": { + "dx": -7, + "dy": -19 + } + }, + { + "vis": { + "dx": 19, + "dy": -27 + } + }, + {}, + {}, + {} + ], + "frameStyle": "chamfer", + "layoutState": [ + "standard", + "standard", + "standard", + "standard", + "standard", + "standard" + ], + "superSample": 2, + "tagOut": "an", + "tilt": "an", + "v": 6, + "variant": "hell", + "view": "streifen" +}