diff --git a/remotion/src/Root.tsx b/remotion/src/Root.tsx index 3823f3b..a334bd9 100644 --- a/remotion/src/Root.tsx +++ b/remotion/src/Root.tsx @@ -7,6 +7,7 @@ import {FolgenKompositionen} from './baukasten/folge'; import {NEST_BILD} from './baukasten/natur'; import {NestStill, ORTE, OrtStill} from './baukasten/orte'; import {F02} from './folge02/Folge02'; +import {Banner, BannerRahmen, Profilbild} from './kanal/KanalBilder'; const BILD = {fps: 30, width: 1920, height: 1080} as const; @@ -18,6 +19,9 @@ export const Root: React.FC = () => ( + + + {(['hinten', 'vorne'] as const).map((seite) => ( ))} diff --git a/remotion/src/baukasten/sprache.ts b/remotion/src/baukasten/sprache.ts index 4bc603a..ddc4050 100644 --- a/remotion/src/baukasten/sprache.ts +++ b/remotion/src/baukasten/sprache.ts @@ -25,6 +25,8 @@ type Woerter = { heute: (titel: string) => string; namen: Record; leise: string; + kanalUntertitel: string; // Banner + kanalRhythmus: string; // Banner kalenderTitel: string; hatschi: string; }; @@ -37,6 +39,8 @@ const WOERTER: Record = { heute: (t) => `Heute: ${t}.`, namen: {ERZ: 'Erzählstimme', PINO: 'Pino', NOA: 'Noa', LULU: 'Lulu', ALLE: 'Alle', NOA_LULU: 'Noa und Lulu'}, leise: '(leise)', + kanalUntertitel: 'Ruhige Geschichten für Kinder von 3 bis 6', + kanalRhythmus: 'Jeden Sonntag eine neue Geschichte', kalenderTitel: 'Pinos Winterfest-Kalender', hatschi: 'Hatschi!', }, @@ -47,6 +51,8 @@ const WOERTER: Record = { heute: (t) => `Hoy: ${t}.`, namen: {ERZ: 'Narración', PINO: 'Pino', NOA: 'Noa', LULU: 'Lulu', ALLE: 'Todos', NOA_LULU: 'Noa y Lulu'}, leise: '(bajito)', + kanalUntertitel: 'Cuentos tranquilos para niños de 3 a 6 años', + kanalRhythmus: 'Un cuento nuevo cada domingo', kalenderTitel: 'El calendario de Pino', hatschi: '¡Achís!', }, @@ -57,6 +63,8 @@ const WOERTER: Record = { heute: (t) => `Aujourd'hui : ${t}.`, namen: {ERZ: 'Narration', PINO: 'Pino', NOA: 'Noa', LULU: 'Lulu', ALLE: 'Tous', NOA_LULU: 'Noa et Lulu'}, leise: '(doucement)', + kanalUntertitel: 'Des histoires douces pour les 3 à 6 ans', + kanalRhythmus: 'Une nouvelle histoire chaque dimanche', kalenderTitel: 'Le calendrier de Pino', hatschi: 'Atchoum !', }, diff --git a/remotion/src/kanal/KanalBilder.tsx b/remotion/src/kanal/KanalBilder.tsx new file mode 100644 index 0000000..aa1e4e2 --- /dev/null +++ b/remotion/src/kanal/KanalBilder.tsx @@ -0,0 +1,108 @@ +import React from 'react'; +import {AbsoluteFill, random} from 'remotion'; +import {Figur} from '../baukasten/figur'; +import {Blatt} from '../baukasten/natur'; +import {W} from '../baukasten/sprache'; +import {SCHRIFT} from '../baukasten/untertitel'; + +// Profilbild (800 × 800) und Kanalbanner (2560 × 1440) für YouTube, je Sprache: +// npx remotion still src/index.ts Kanal-Profilbild ../veroeffentlichung/kanalbilder/profilbild.png +// npx remotion still src/index.ts Kanal-Banner ../veroeffentlichung/kanalbilder/banner-de.jpg --image-format=jpeg --jpeg-quality=92 +// … --props='{"sprache":"es"}' +// Farben wie der Buchdeckel im Intro. Alles Wichtige im Banner liegt im +// sicheren Bereich (1546 × 423 in der Mitte), den YouTube auf allen Geräten zeigt. + +const HIMMEL = 'linear-gradient(180deg, #fbf4e4 0%, #f8e7bf 55%, #f3d79a 100%)'; + +// Sanfte Hügel als SVG; `boden` ist die Linie, auf der die Figuren stehen. +const Huegel: React.FC<{b: number; h: number; boden: number}> = ({b, h, boden}) => ( + + + + + +); + +const Sonne: React.FC<{x: number; y: number; r: number}> = ({x, y, r}) => ( +
+); + +const Wolke: React.FC<{x: number; y: number; s: number}> = ({x, y, s}) => ( +
+ {[ + [0, 30, 90], + [60, 0, 120], + [150, 25, 95], + ].map(([dx, dy, d], i) => ( +
+ ))} +
+); + +// Kleine Blumen auf der Wiese +const Blumen: React.FC<{anzahl: number; b: number; von: number; bis: number; s: number}> = ({anzahl, b, von, bis, s}) => ( + <> + {new Array(anzahl).fill(0).map((_, i) => { + const x = random(`bx${i}`) * b; + const y = von + random(`by${i}`) * (bis - von); + const farbe = ['#f6f1e4', '#e9c97a', '#d98a8a', '#c8a2d6'][i % 4]; + return ( + + {[0, 72, 144, 216, 288].map((w) => ( + + ))} + + + ); + })} + +); + +export const Profilbild: React.FC = () => ( + +
+ + + + +); + +const BB = 2560; +const BH = 1440; +const SICHER = {x: (BB - 1546) / 2, y: (BH - 423) / 2, b: 1546, h: 423}; +const BODEN = SICHER.y + SICHER.h - 14; + +export const Banner: React.FC = () => { + const titelGroesse = Math.min(124, 1080 / (W.kanal.length * 0.58)); + return ( + + + + + + + + {[0, 1, 2, 3, 4, 5].map((i) => ( + + ))} + {/* Text links im sicheren Bereich */} +
+
{W.kanal}
+
{W.kanalUntertitel}
+
{W.kanalRhythmus}
+
+ {/* Figuren rechts im sicheren Bereich, Pino vorn */} + + + +
+ ); +}; + +// Zum Prüfen: Banner mit eingezeichnetem sicheren Bereich +export const BannerRahmen: React.FC = () => ( + + +
+ +); diff --git a/veroeffentlichung/kanal-beschreibung-schlagwoerter.md b/veroeffentlichung/kanal-beschreibung-schlagwoerter.md index fd36efd..d080190 100644 --- a/veroeffentlichung/kanal-beschreibung-schlagwoerter.md +++ b/veroeffentlichung/kanal-beschreibung-schlagwoerter.md @@ -1,6 +1,6 @@ # Kanal: Beschreibung und Schlagwörter -Entwurf vom 26.10.2026, zum Einfügen in YouTube Studio (Anpassung → Basisinfo, je Sprache über „Sprache hinzufügen“). Kanalname seit 02.11.2026: „Pinos kleine Welt“ (DE); ES „El pequeño mundo de Pino“ und FR „Le petit monde de Pino“ (alle drei entschieden 02.11.2026). ES und FR am 26.10. per Rückübersetzung geprüft, hier keine Korrektur nötig. Am 02.11. angepasst: Hinweis auf die anderen Sprachkanäle statt Audiospur, KI-Satz an Remotion angepasst (Bilder mit KI, Animation durch uns). DE ist so im Kanal „Pinos kleine Welt“ veröffentlicht (02.11.2026, mit Land Deutschland und den Schlagwörtern unten plus „Pinos kleine Welt“). +Entwurf vom 26.10.2026, zum Einfügen in YouTube Studio (Anpassung → Basisinfo, je Sprache über „Sprache hinzufügen“). Kanalname seit 02.11.2026: „Pinos kleine Welt“ (DE); ES „El pequeño mundo de Pino“ und FR „Le petit monde de Pino“ (alle drei entschieden 02.11.2026). ES und FR am 26.10. per Rückübersetzung geprüft, hier keine Korrektur nötig. Am 02.11. angepasst: Hinweis auf die anderen Sprachkanäle statt Audiospur, KI-Absatz gestrichen. DE ist so im Kanal „Pinos kleine Welt“ veröffentlicht (02.11.2026, mit Land Deutschland und den Schlagwörtern unten plus „Pinos kleine Welt“). ## Deutsch @@ -12,8 +12,6 @@ Pino ist ein kleiner Igel, Lulu eine große Giraffe, und Noa ist mittendrin. Jed Im Dezember: Pinos Adventskalender. Jeden Tag ein Türchen, vom 1. bis 24. Dezember. Neue Folgen jeden Sonntag. Alle Folgen gibt es auch auf Spanisch („El pequeño mundo de Pino“) und Französisch („Le petit monde de Pino“). - -Für Eltern: Die Geschichten und Figuren sind selbst ausgedacht und geschrieben. Die Bilder entstehen mit KI-Werkzeugen und werden von uns ausgewählt, animiert und geschnitten. ``` **Schlagwörter:** Kindergeschichten, Gute-Nacht-Geschichte, Geschichten für Kinder ab 3, Vorschule, Adventskalender für Kinder, Igel, Giraffe, Gefühle für Kinder, Zählen lernen, Bilderbuch, Kinderserie, ruhige Kindervideos, Winterschlaf, Mitmachgeschichte @@ -28,8 +26,6 @@ Pino es un erizo pequeño, Lulu una jirafa muy alta y Noa está en medio. Cada d En diciembre: el calendario de Adviento de Pino. Una ventanita cada día, del 1 al 24 de diciembre. Nuevos episodios cada domingo. Todos los episodios están también en alemán («Pinos kleine Welt») y en francés («Le petit monde de Pino»). - -Para las familias: las historias y los personajes son nuestros, inventados y escritos por nosotros. Las imágenes se crean con herramientas de IA, y nosotros las elegimos, animamos y montamos. ``` **Etiquetas:** cuentos para niños, cuentos para dormir, cuentos infantiles, preescolar, calendario de Adviento para niños, erizo, jirafa, emociones para niños, aprender a contar, libro ilustrado, serie infantil, videos tranquilos para niños, hibernación @@ -44,15 +40,13 @@ Pino est un petit hérisson, Lulu une très grande girafe, et Noa est au milieu. En décembre : le calendrier de l'Avent de Pino. Une petite porte chaque jour, du 1er au 24 décembre. Nouveaux épisodes chaque dimanche. Tous les épisodes existent aussi en allemand (« Pinos kleine Welt ») et en espagnol (« El pequeño mundo de Pino »). - -Pour les parents : les histoires et les personnages sont inventés et écrits par nous. Les images sont créées avec des outils d'IA, puis choisies, animées et montées par nous. ``` **Mots-clés :** histoires pour enfants, histoire du soir, contes pour enfants, maternelle, calendrier de l'Avent pour enfants, hérisson, girafe, émotions pour enfants, apprendre à compter, album illustré, série pour enfants, vidéos calmes pour enfants, hibernation -## Warum der KI-Satz drinsteht +## KI-Absatz (gestrichen am 02.11.2026) -YouTube prüft seit 2025/2026 ganze Kanäle auf „inauthentic content“. Ein offener Satz, dass Geschichten und Figuren selbst gemacht sind und KI nur das Werkzeug ist, zeigt die menschliche Handschrift und schafft Vertrauen bei Eltern. Wenn du ihn nicht willst, streich den letzten Absatz; Pflicht ist er für gezeichnete Figuren nicht. +Bis 02.11. stand am Ende ein Absatz für Eltern, dass Geschichten und Figuren selbst gemacht sind und die Bilder mit KI-Werkzeugen entstehen. Auf Wunsch gestrichen. Pflicht ist er für gezeichnete Figuren nicht; die Kennzeichnung „veränderte oder synthetische Inhalte“ gilt in YouTube Studio je Video nur für realistisch wirkende Inhalte. ## Elternhinweis für jede Videobeschreibung diff --git a/veroeffentlichung/kanalbilder/banner-de.jpg b/veroeffentlichung/kanalbilder/banner-de.jpg new file mode 100644 index 0000000..f588164 Binary files /dev/null and b/veroeffentlichung/kanalbilder/banner-de.jpg differ diff --git a/veroeffentlichung/kanalbilder/banner-es.jpg b/veroeffentlichung/kanalbilder/banner-es.jpg new file mode 100644 index 0000000..28b6b2b Binary files /dev/null and b/veroeffentlichung/kanalbilder/banner-es.jpg differ diff --git a/veroeffentlichung/kanalbilder/banner-fr.jpg b/veroeffentlichung/kanalbilder/banner-fr.jpg new file mode 100644 index 0000000..a4007f9 Binary files /dev/null and b/veroeffentlichung/kanalbilder/banner-fr.jpg differ diff --git a/veroeffentlichung/kanalbilder/profilbild.png b/veroeffentlichung/kanalbilder/profilbild.png new file mode 100644 index 0000000..732b900 Binary files /dev/null and b/veroeffentlichung/kanalbilder/profilbild.png differ