Files
mintel.me/apps/video/src/content/videos.ts
T
mmintelandClaude Opus 5.5 5cbcb2eac4 feat: content strategy, image posts and a posting plan for the films
Adds twelve image posts made the same way as the films: six posters
(one picture of each film with its idea in two lines) and six cards
that answer a question clients ask before the first call. The answers
come from the questions and principles on the website.

The posting plan is data (six weeks, film, card and poster per week),
and the export writes the library in that order, by language, week and
day, with the text to post. All video posts now open with the hook of
their film. The reasoning is in plans/content-strategy.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:00:28 +02:00

389 lines
14 KiB
TypeScript

/**
* Everything that is said in and about the videos: headlines per slide, labels inside the drawings,
* and the text to post with each video. English and German.
*
* This file imports nothing, so the export script can read it with plain Node.
* German addresses the viewer formally ("Sie"), as is usual towards business owners.
*/
export const LANGS = ["en", "de"] as const;
export type Lang = (typeof LANGS)[number];
export const VIDEO_IDS = [
"AutomationOrder",
"AutomationDocuments",
"AutomationEnquiry",
"WebsiteDone",
"AppRescue",
"ProductDeveloper",
] as const;
export type VideoId = (typeof VIDEO_IDS)[number];
export type VideoCopy = {
/** What the video is about, for the overview page. */
readonly title: string;
/** Headline per slide id: at most two lines of a few words. */
readonly slides: Readonly<Record<string, readonly string[]>>;
/** Text to post with the video on LinkedIn. */
readonly post: string;
};
/** German for every label that appears inside a drawing or on the frame. Missing entries stay English. */
export const LABELS_DE: Readonly<Record<string, string>> = {
"Freelance developer": "Freelance-Entwickler",
"Get in touch": "Kontakt aufnehmen",
Invoice: "Rechnung",
Customers: "Kunden",
Email: "E-Mail",
"One person": "Eine Person",
Inbox: "Posteingang",
Read: "Lesen",
Check: "Prüfen",
Books: "Buchhaltung",
"Invoice.pdf": "Rechnung.pdf",
Accounting: "Buchhaltung",
Supplier: "Lieferant",
Amount: "Betrag",
Date: "Datum",
"A person": "Ein Mensch",
Contacts: "Kontakte",
Reminder: "Erinnerung",
"Day 1": "Tag 1",
"Day 2": "Tag 2",
"Day 3": "Tag 3",
"Day 4": "Tag 4",
"Website builder": "Baukasten",
"Your website": "Ihre Website",
"Your email": "Ihre E-Mail",
"www.your-name.com": "www.ihr-name.de",
"Your app": "Ihre App",
Mon: "Mo",
Tue: "Di",
Wed: "Mi",
Thu: "Do",
Fri: "Fr",
"To do": "Offen",
Done: "Erledigt",
Product: "Produkt",
Developer: "Entwicklung",
};
export const translate = (lang: Lang, text: string): string =>
lang === "de" ? (LABELS_DE[text] ?? text) : text;
export const COPY: Readonly<Record<VideoId, Readonly<Record<Lang, VideoCopy>>>> = {
AutomationOrder: {
en: {
title: "Automation: from order to invoice",
slides: {
hook: ["Looks like", "ping-pong."],
reveal: ["It's your", "office."],
problem: ["Every order.", "By hand."],
turn: ["Or your tools", "talk to each other."],
calm: ["And your team", "has time."],
cta: ["Done with", "ping-pong?"],
},
post: `Looks like ping-pong. It's your office.
An order comes in. Someone opens it in the shop, writes the invoice, updates the customer record, sends the confirmation. Then the next one. And the next.
Works beautifully, as long as hardly anyone orders.
The four tools can sort this out among themselves: the order triggers invoice, customer record and email on its own. Your team sees the finished result and looks after the cases that really need a person.
I connect the tools you already use. A first call takes about 20 minutes.
www.mintel.me
#automation #processautomation #smallbusiness`,
},
de: {
title: "Automatisierung: von der Bestellung zur Rechnung",
slides: {
hook: ["Sieht aus wie", "Pingpong."],
reveal: ["Ist aber", "Ihr Büro."],
problem: ["Jede Bestellung.", "Von Hand."],
turn: ["Oder Ihre Tools", "reden miteinander."],
calm: ["Und Ihr Team", "hat Zeit."],
cta: ["Schluss mit", "Pingpong?"],
},
post: `Sieht aus wie Pingpong. Ist aber Ihr Büro.
Eine Bestellung kommt rein. Jemand öffnet sie im Shop, schreibt die Rechnung, pflegt den Kunden nach, verschickt die Bestätigung. Dann die nächste. Und die nächste.
Klappt wunderbar, solange kaum jemand bestellt.
Dabei können die vier Tools das längst unter sich ausmachen: Die Bestellung löst Rechnung, Kundendatensatz und E-Mail selbst aus. Ihr Team sieht das fertige Ergebnis und kümmert sich um die Fälle, die wirklich einen Menschen brauchen.
Ich verbinde die Tools, die Sie schon haben. Ein erstes Gespräch dauert etwa 20 Minuten.
www.mintel.me
#automatisierung #prozessautomatisierung #mittelstand`,
},
},
AutomationDocuments: {
en: {
title: "Automation: incoming invoices",
slides: {
hook: ["Looks like", "a skyscraper."],
reveal: ["It's your", "inbox."],
problem: ["Every invoice.", "Typed in."],
turn: ["Or it simply", "gets read."],
calm: ["Unclear ones go", "to a person."],
cta: ["Done typing", "things in?"],
},
post: `Looks like a skyscraper. It's your inbox.
Invoices arrive as PDF. Someone opens each one, reads supplier, amount and date, and types them into the accounting system. Floor by floor.
Nobody has to do that by hand. The document can be read automatically, a fixed rule checks whether the values make sense, and clear cases are booked directly. Anything unclear goes to a person, with the document attached.
So people decide the exceptions instead of typing the routine.
A first call takes about 20 minutes.
www.mintel.me
#automation #accounting #smallbusiness`,
},
de: {
title: "Automatisierung: Eingangsrechnungen",
slides: {
hook: ["Sieht aus wie", "ein Hochhaus."],
reveal: ["Ist aber Ihr", "Posteingang."],
problem: ["Jede Rechnung.", "Abgetippt."],
turn: ["Oder sie wird", "einfach gelesen."],
calm: ["Unklares geht", "an einen Menschen."],
cta: ["Schluss mit", "Abtippen?"],
},
post: `Sieht aus wie ein Hochhaus. Ist aber Ihr Posteingang.
Rechnungen kommen als PDF. Jemand öffnet jede einzelne, liest Lieferant, Betrag und Datum ab und tippt alles in die Buchhaltung. Stockwerk für Stockwerk.
Das muss niemand von Hand machen. Das Dokument lässt sich automatisch auslesen, eine feste Regel prüft, ob die Werte plausibel sind, und klare Fälle werden direkt gebucht. Alles Unklare geht an einen Menschen, mit dem Dokument im Anhang.
So entscheiden Menschen die Ausnahmen, statt Routine abzutippen.
Ein erstes Gespräch dauert etwa 20 Minuten.
www.mintel.me
#automatisierung #buchhaltung #mittelstand`,
},
},
AutomationEnquiry: {
en: {
title: "Automation: from enquiry to follow-up",
slides: {
hook: ["Looks like", "a star."],
reveal: ["These are your", "enquiries."],
problem: ["They burn out.", "Unanswered."],
turn: ["Or each one reaches", "the right person."],
calm: ["And follow-ups", "happen by themselves."],
cta: ["Stop losing", "enquiries?"],
},
post: `Looks like a star. It's an enquiry, burning out.
Someone fills in your contact form. The enquiry is copied into the customer list by hand, forwarded by email, and everyone hopes the follow-up is not forgotten.
Hope is not a process.
These steps can be connected: the contact is created, the right person is told, and if nobody has replied after three days, a reminder appears.
A first call takes about 20 minutes.
www.mintel.me
#automation #sales #smallbusiness`,
},
de: {
title: "Automatisierung: von der Anfrage zum Nachfassen",
slides: {
hook: ["Sieht aus wie", "ein Stern."],
reveal: ["Sind aber Ihre", "Anfragen."],
problem: ["Sie verglühen.", "Unbeantwortet."],
turn: ["Oder jede landet", "beim Richtigen."],
calm: ["Und Nachfassen", "passiert von selbst."],
cta: ["Keine Anfrage", "mehr verlieren?"],
},
post: `Sieht aus wie ein Stern. Ist aber eine Anfrage, die gerade verglüht.
Jemand füllt Ihr Kontaktformular aus. Die Anfrage wird von Hand in die Kundenliste kopiert, per E-Mail weitergeleitet, und alle hoffen, dass das Nachfassen nicht vergessen wird.
Hoffen ist kein Prozess.
Diese Schritte lassen sich verbinden: Der Kontakt wird angelegt, die zuständige Person erfährt davon, und wenn nach drei Tagen niemand geantwortet hat, erscheint eine Erinnerung.
Ein erstes Gespräch dauert etwa 20 Minuten.
www.mintel.me
#automatisierung #vertrieb #mittelstand`,
},
},
WebsiteDone: {
en: {
title: "A website, built and looked after",
slides: {
hook: ["Looks like", "a beginning."],
reveal: ["It's been your", "website for months."],
problem: ["Empty.", "Still."],
turn: ["You talk.", "I build."],
calm: ["Fits every", "screen."],
cta: ["Website", "overdue?"],
},
post: `Looks like a beginning. It's been your website for months.
You run a business. Learning a website builder on top of that was never going to happen.
This is how I do it instead: you tell me what your business does and what the website is for. I design it, build it and put it online. It works on phone, tablet and desktop, and you approve it before it goes live.
And afterwards? A new photo or a changed price: you send me an email.
A first call takes about 20 minutes.
www.mintel.me
#website #webdesign #smallbusiness`,
},
de: {
title: "Eine Website, gebaut und betreut",
slides: {
hook: ["Sieht aus wie", "ein Anfang."],
reveal: ["Ist seit Monaten", "Ihre Website."],
problem: ["Leer.", "Immer noch."],
turn: ["Sie erzählen.", "Ich baue."],
calm: ["Passt auf", "jeden Bildschirm."],
cta: ["Website", "fällig?"],
},
post: `Sieht aus wie ein Anfang. Ist seit Monaten Ihre Website.
Sie führen ein Unternehmen. Dass Sie nebenbei noch einen Website-Baukasten lernen, war nie realistisch.
So mache ich es stattdessen: Sie erzählen mir, was Ihr Unternehmen macht und wofür die Website da ist. Ich gestalte sie, baue sie und bringe sie online. Sie funktioniert auf Handy, Tablet und Desktop, und Sie geben sie frei, bevor sie live geht.
Und danach? Ein neues Foto oder ein geänderter Preis: Sie schreiben mir eine E-Mail.
Ein erstes Gespräch dauert etwa 20 Minuten.
www.mintel.me
#website #webdesign #mittelstand`,
},
},
AppRescue: {
en: {
title: "Making an app reliable",
slides: {
hook: ["Looks like", "Jenga."],
reveal: ["It's your", "app."],
problem: ["Every change", "wobbles."],
turn: ["One week.", "I look inside."],
calm: ["After that", "it stands."],
cta: ["App", "wobbling?"],
},
post: `Looks like Jenga. It's your app.
It works. But bugs come back, and every small change feels like pulling out a block.
That usually happens when an app was built quickly and then kept growing.
I take a week to go through it: I look at what is solid and what is fragile, fix the most urgent problems as far as a week allows, and write down what I would do next. In plain language, so you can follow it without being a developer.
After that you decide how to continue: with me, with your own team, or not at all.
A first call takes about 20 minutes.
www.mintel.me
#webdevelopment #softwarequality #startups`,
},
de: {
title: "Eine App zuverlässig machen",
slides: {
hook: ["Sieht aus wie", "Jenga."],
reveal: ["Ist aber", "Ihre App."],
problem: ["Jede Änderung", "wackelt."],
turn: ["Eine Woche.", "Ich sehe hinein."],
calm: ["Danach", "steht sie."],
cta: ["App", "wackelt?"],
},
post: `Sieht aus wie Jenga. Ist aber Ihre App.
Sie läuft. Aber Fehler kommen wieder, und jede kleine Änderung fühlt sich an, als zöge man einen Stein heraus.
Das passiert meist, wenn eine App schnell gebaut wurde und dann immer weiter gewachsen ist.
Ich nehme mir eine Woche dafür: Ich sehe mir an, was solide ist und was wackelt, behebe die dringendsten Probleme, soweit eine Woche reicht, und schreibe auf, was ich als Nächstes tun würde. In klarer Sprache, die Sie auch ohne Entwicklerwissen verstehen.
Danach entscheiden Sie, wie es weitergeht: mit mir, mit Ihrem eigenen Team oder gar nicht.
Ein erstes Gespräch dauert etwa 20 Minuten.
www.mintel.me
#webentwicklung #softwarequalität #startups`,
},
},
ProductDeveloper: {
en: {
title: "A developer for your product",
slides: {
hook: ["Looks like", "a loading bar."],
reveal: ["It's your", "backlog."],
problem: ["Growing faster", "than your team."],
turn: ["One more", "developer."],
calm: ["Fixed days.", "No minimum term."],
cta: ["Backlog", "too long?"],
},
post: `Looks like a loading bar. It's your backlog.
You have a product, and the list grows faster than your team gets through it.
I join on agreed days of the week and work on what is next: new features, the interface, or the parts nobody gets around to.
Finished parts go to you for review as they are done. I track my hours, and you can see what they were spent on. No package to buy, no minimum term: either side can end it with two weeks notice to the end of a month.
15 years in web development, in agencies and product teams.
A first call takes about 20 minutes.
www.mintel.me
#webdevelopment #freelance #react`,
},
de: {
title: "Ein Entwickler für Ihr Produkt",
slides: {
hook: ["Sieht aus wie", "ein Ladebalken."],
reveal: ["Ist aber", "Ihr Backlog."],
problem: ["Wächst schneller", "als Ihr Team."],
turn: ["Ein Entwickler", "mehr."],
calm: ["Feste Tage.", "Keine Mindestlaufzeit."],
cta: ["Backlog", "zu lang?"],
},
post: `Sieht aus wie ein Ladebalken. Ist aber Ihr Backlog.
Sie haben ein Produkt, und die Liste wächst schneller, als Ihr Team sie abarbeitet.
Ich komme an vereinbarten Wochentagen dazu und arbeite an dem, was als Nächstes ansteht: neue Funktionen, die Oberfläche oder die Teile, zu denen niemand kommt.
Fertige Teile gehen zur Durchsicht an Sie, sobald sie fertig sind. Ich erfasse meine Stunden, und Sie sehen, wofür sie verwendet wurden. Kein Paket, keine Mindestlaufzeit: Beide Seiten können mit zwei Wochen Frist zum Monatsende kündigen.
15 Jahre Webentwicklung, in Agenturen und Produktteams.
Ein erstes Gespräch dauert etwa 20 Minuten.
www.mintel.me
#webentwicklung #freelancer #react`,
},
},
};