mirror of
https://github.com/complexcaresolutions/cms.c2sgmbh.git
synced 2026-03-17 17:24:12 +00:00
feat: add blog post seed script for sensualmoment.de (tenant 13)
8 boudoir photography journal posts covering topics like first shooting experience, self-love, posing tips, behind the scenes, gifting, body positivity, preparation, and photo albums. Idempotent: skips existing posts based on slug + tenant match. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8cb04fd130
commit
6d13361ad4
1 changed files with 484 additions and 0 deletions
484
scripts/seed-sensualmoment-posts.ts
Normal file
484
scripts/seed-sensualmoment-posts.ts
Normal file
|
|
@ -0,0 +1,484 @@
|
||||||
|
/**
|
||||||
|
* Sensualmoment (Tenant 13) Blog Posts Seed Script
|
||||||
|
*
|
||||||
|
* Creates 8 blog posts for the Journal page of sensualmoment.de
|
||||||
|
*
|
||||||
|
* Run with: npx tsx scripts/seed-sensualmoment-posts.ts
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { getPayload } from 'payload'
|
||||||
|
import config from '../src/payload.config'
|
||||||
|
|
||||||
|
const TENANT_ID = 13
|
||||||
|
|
||||||
|
function richText(paragraphs: string[]): object {
|
||||||
|
return {
|
||||||
|
root: {
|
||||||
|
type: 'root',
|
||||||
|
children: paragraphs.map((text) => ({
|
||||||
|
type: 'paragraph',
|
||||||
|
children: [{ type: 'text', text }],
|
||||||
|
})),
|
||||||
|
direction: 'ltr',
|
||||||
|
format: '',
|
||||||
|
indent: 0,
|
||||||
|
version: 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function richTextWithHeadings(
|
||||||
|
blocks: Array<{ tag?: string; text: string; bold?: boolean }>,
|
||||||
|
): object {
|
||||||
|
return {
|
||||||
|
root: {
|
||||||
|
type: 'root',
|
||||||
|
children: blocks.map((block) => {
|
||||||
|
if (block.tag) {
|
||||||
|
return {
|
||||||
|
type: 'heading',
|
||||||
|
tag: block.tag,
|
||||||
|
children: [{ type: 'text', text: block.text }],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (block.bold) {
|
||||||
|
return {
|
||||||
|
type: 'paragraph',
|
||||||
|
children: [{ type: 'text', text: block.text, format: 1 }],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
type: 'paragraph',
|
||||||
|
children: [{ type: 'text', text: block.text }],
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
direction: 'ltr',
|
||||||
|
format: '',
|
||||||
|
indent: 0,
|
||||||
|
version: 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PostData {
|
||||||
|
title: string
|
||||||
|
slug: string
|
||||||
|
excerpt: string
|
||||||
|
type: 'blog'
|
||||||
|
status: 'published'
|
||||||
|
publishedAt: string
|
||||||
|
isFeatured: boolean
|
||||||
|
content: object
|
||||||
|
seo: { metaTitle: string; metaDescription: string }
|
||||||
|
}
|
||||||
|
|
||||||
|
const posts: PostData[] = [
|
||||||
|
{
|
||||||
|
title: 'Dein erstes Boudoir-Shooting: Was dich erwartet',
|
||||||
|
slug: 'dein-erstes-boudoir-shooting',
|
||||||
|
excerpt:
|
||||||
|
'Du spielst mit dem Gedanken, ein Boudoir-Shooting zu machen? Hier erfaehrst du, wie ein Shooting bei Sensual Moment ablaeuft und warum du keine Angst davor haben musst.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-01T10:00:00.000Z',
|
||||||
|
isFeatured: true,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Der erste Schritt ist der mutigste',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Du hast laengst darueber nachgedacht. Vielleicht hast du Bilder auf Instagram gesehen, die dich inspiriert haben. Vielleicht moechtest du dir selbst ein Geschenk machen. Oder du willst einfach einmal sehen, wie schoen du bist, wenn du dich fallen laesst. Was auch immer der Grund ist: Du bist hier genau richtig.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Wie laeuft ein Shooting ab?',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Jedes Shooting beginnt mit einem persoenlichen Vorgespraech. Wir sprechen ueber deine Wuensche, deine Vorstellungen und auch ueber deine Unsicherheiten. Es gibt kein Richtig oder Falsch. Du bestimmst das Tempo, du bestimmst die Grenzen.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Am Tag des Shootings nehmen wir uns Zeit. Kein Zeitdruck, keine Hektik. Du wirst professionell gestylt, wir waehlen gemeinsam die Outfits aus und dann beginnen wir ganz entspannt. Ich leite dich durch jede Pose, sodass du dich nie verloren fuehlen wirst.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Was soll ich anziehen?',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Alles, worin du dich schoen fuehlst. Das kann Dessous sein, ein oversized Hemd, ein Bademantel oder auch einfach nur ein Bettlaken. Boudoir bedeutet nicht automatisch freizuegig. Es bedeutet, sich in seiner eigenen Haut wohlzufuehlen.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Was, wenn ich unsicher bin?',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Dann bist du in bester Gesellschaft. Fast jede Kundin kommt mit gemischten Gefuehlen zum Shooting. Und fast jede geht mit einem Strahlen im Gesicht nach Hause. Denn das ist die Magie von Boudoir: Es zeigt dir, was du laengst wusstest, aber nie gesehen hast.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: 'Dein erstes Boudoir-Shooting | Sensual Moment',
|
||||||
|
metaDescription:
|
||||||
|
'Was erwartet dich bei einem Boudoir-Shooting? Ablauf, Tipps und alles, was du wissen musst.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Selbstliebe ist kein Luxus',
|
||||||
|
slug: 'selbstliebe-ist-kein-luxus',
|
||||||
|
excerpt:
|
||||||
|
'Warum ein Boudoir-Shooting mehr ist als schoene Bilder. Ueber die transformative Kraft, sich selbst mit neuen Augen zu sehen.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-05T10:00:00.000Z',
|
||||||
|
isFeatured: true,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Mehr als ein Fotoshooting',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Wenn ich Frauen frage, warum sie ein Boudoir-Shooting machen moechten, hoere ich oft: Ich moechte mich einmal schoen fuehlen. Und dann sage ich: Du BIST schoen. Das Shooting zeigt es dir nur.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Selbstliebe ist kein Trend und kein Hashtag. Es ist die Entscheidung, sich selbst zu sehen, anzunehmen und zu feiern. Mit allen vermeintlichen Makeln, mit jeder Narbe, mit jeder Kurve.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Die Geschichten hinter den Bildern',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Jedes Shooting erzaehlt eine Geschichte. Die Geschichte einer Frau, die nach der Schwangerschaft ihren Koerper neu entdeckt. Die Geschichte einer Frau, die nach einer schweren Trennung wieder zu sich selbst findet. Die Geschichte einer Frau, die einfach mal Ja zu sich selbst sagt.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Diese Geschichten sind es, die meine Arbeit so besonders machen. Nicht die perfekte Lichtsetzung oder der richtige Winkel. Sondern der Moment, in dem eine Frau in den Spiegel schaut und sagt: Wow, das bin wirklich ich.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Du verdienst es',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Du musst keinen besonderen Anlass haben. Du brauchst keinen perfekten Koerper. Du brauchst nur den Mut, Ja zu dir selbst zu sagen. Der Rest kommt von allein.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: 'Selbstliebe ist kein Luxus | Sensual Moment Blog',
|
||||||
|
metaDescription:
|
||||||
|
'Warum ein Boudoir-Shooting mehr als schoene Bilder ist. Ueber die transformative Kraft der Selbstliebe.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '5 Tipps fuer natuerliches Posing',
|
||||||
|
slug: '5-tipps-natuerliches-posing',
|
||||||
|
excerpt:
|
||||||
|
'Du bist kein Model? Kein Problem. Mit diesen einfachen Tipps wirken deine Boudoir-Fotos natuerlich und authentisch.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-08T10:00:00.000Z',
|
||||||
|
isFeatured: false,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Vergiss das Posieren',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Die schoensten Boudoir-Bilder entstehen nicht durch perfektes Posieren, sondern durch echte Emotionen. Hier sind fuenf Tipps, die dir helfen, vor der Kamera ganz du selbst zu sein.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h3',
|
||||||
|
text: '1. Atme tief durch',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Bevor wir mit dem Shooting beginnen, nehmen wir uns einen Moment. Atme tief ein, lasse die Schultern fallen und schliesse kurz die Augen. Entspannung ist das beste Styling.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h3',
|
||||||
|
text: '2. Bewege dich',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Steife Posen sehen steif aus. Stattdessen: Streiche dir durchs Haar, drehe dich langsam, spiele mit dem Stoff deines Outfits. Bewegung erzeugt Natuerlichkeit.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h3',
|
||||||
|
text: '3. Denke an etwas Schoenes',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Dein Gesichtsausdruck verrät alles. Denke an einen schoenen Moment, an jemanden, den du liebst, oder an etwas, das dich zum Laecheln bringt. Das sieht man auf den Bildern.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h3',
|
||||||
|
text: '4. Vertraue der Fotografin',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Ich sehe, was die Kamera sieht. Wenn ich sage, dass es grossartig aussieht, dann meine ich das. Vertraue mir, und vertraue dir selbst.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h3',
|
||||||
|
text: '5. Perfektion ist langweilig',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Die kleinen Unperfektheiten machen dich einzigartig. Das Laecheln, das nicht ganz symmetrisch ist. Die Locke, die nicht sitzen will. Das sind die Momente, die deine Bilder besonders machen.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: '5 Tipps fuer natuerliches Posing | Sensual Moment',
|
||||||
|
metaDescription:
|
||||||
|
'Natuerlich und authentisch vor der Kamera. 5 einfache Tipps fuer dein Boudoir-Shooting.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Behind the Scenes: So entsteht ein Boudoir-Bild',
|
||||||
|
slug: 'behind-the-scenes-boudoir',
|
||||||
|
excerpt:
|
||||||
|
'Ein Blick hinter die Kulissen meiner Arbeit. Vom Lichtaufbau bis zur Bildbearbeitung.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-12T10:00:00.000Z',
|
||||||
|
isFeatured: false,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Mehr als nur ein Klick',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Ein Boudoir-Bild entsteht nicht im Bruchteil einer Sekunde. Es ist das Ergebnis von sorgfaeltiger Vorbereitung, dem richtigen Licht und vor allem einer vertrauensvollen Atmosphaere.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Das Licht macht die Stimmung',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Natuerliches Licht ist mein liebster Begleiter. Grosse Fenster, weiche Schatten, warme Toene. Ich arbeite bevorzugt mit Available Light und ergaenze nur dezent mit Reflektoren. Das Ergebnis: Bilder, die sich anfuehlen wie ein schoener Nachmittag.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Die Location',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Mein Studio ist kein klinisch weisser Raum. Es ist ein Ort, an dem du dich wohlfuehlen sollst. Warme Farben, weiche Stoffe, Kerzen. Eine Atmosphaere, in der du vergisst, dass eine Kamera im Raum ist.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Die Nachbearbeitung',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Nach dem Shooting beginnt die Feinarbeit. Ich bearbeite jedes Bild einzeln, optimiere Licht und Farben und gebe ihm den finalen Schliff. Dabei gilt: Weniger ist mehr. Ich glaette keine Haut und veraendere keine Koerperformen. Deine Bilder sollen nach DIR aussehen, nur im besten Licht.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: 'Behind the Scenes: Boudoir-Fotografie | Sensual Moment',
|
||||||
|
metaDescription:
|
||||||
|
'So entsteht ein Boudoir-Bild. Ein Blick hinter die Kulissen von Sensual Moment Photography.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Boudoir als Geschenk: Fuer dich oder jemand Besonderen',
|
||||||
|
slug: 'boudoir-als-geschenk',
|
||||||
|
excerpt:
|
||||||
|
'Ein Boudoir-Shooting ist das persoenlichste Geschenk, das du machen kannst. An dich selbst oder an einen geliebten Menschen.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-15T10:00:00.000Z',
|
||||||
|
isFeatured: false,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Das Geschenk der Selbstliebe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Viele Frauen buchen ein Boudoir-Shooting als Geschenk. Fuer den Partner zum Hochzeitstag, zum Valentinstag oder einfach so. Aber das schoenste Geschenk machst du dabei dir selbst.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Gutscheine und Pakete',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Wenn du jemandem ein Boudoir-Shooting schenken moechtest, biete ich liebevoll gestaltete Geschenkgutscheine an. Diese beinhalten das Shooting, das Styling und eine festgelegte Anzahl bearbeiteter Bilder. So kann die Beschenkte sich ganz auf ihr Erlebnis freuen.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Auch als Selbstgeschenk',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Du brauchst keinen Anlass und keinen Empfaenger. Schenke dir selbst einen Tag, an dem es nur um dich geht. Einen Tag, an dem du dich verwöhnen laesst, an dem du strahlst und an dem du siehst, wie wunderschoen du bist.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: 'Boudoir als Geschenk | Sensual Moment Photography',
|
||||||
|
metaDescription:
|
||||||
|
'Das persoenlichste Geschenk: Ein Boudoir-Shooting fuer dich oder jemand Besonderen.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Koerperpositivitaet und Boudoir-Fotografie',
|
||||||
|
slug: 'koerperpositivitaet-boudoir',
|
||||||
|
excerpt:
|
||||||
|
'Jeder Koerper ist ein Boudoir-Koerper. Warum ich an Body Positivity glaube und wie sich das in meiner Arbeit zeigt.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-18T10:00:00.000Z',
|
||||||
|
isFeatured: false,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Jeder Koerper erzaehlt eine Geschichte',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'In meinem Studio gibt es keine Idealgroesse, kein Idealgewicht und keine ideale Koerperform. Jede Frau, die zu mir kommt, ist genau richtig so, wie sie ist. Denn Schoenheit hat keine Konfektionsgroesse.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Was Body Positivity fuer mich bedeutet',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Body Positivity ist fuer mich nicht nur ein Schlagwort. Es ist eine Haltung. Es bedeutet, jeden Koerper mit Respekt und Bewunderung zu fotografieren. Es bedeutet, Dehnungsstreifen nicht als Makel, sondern als Teil einer Geschichte zu sehen. Es bedeutet, Kurven zu feiern statt zu verstecken.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Deine Zweifel sind willkommen',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Wenn du denkst, Boudoir ist nichts fuer mich, dann moechte ich dir sagen: Gerade dann ist es fuer dich. Denn es gibt keinen schoeneren Moment als den, in dem du erkennst, dass all deine Zweifel unberechtigt waren.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Ich habe Frauen jeder Groesse, jedes Alters und jeder Herkunft fotografiert. Und jede einzelne hat am Ende gesagt: Das haette ich nie gedacht. Lass auch du dich ueberraschen.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: 'Body Positivity & Boudoir | Sensual Moment',
|
||||||
|
metaDescription:
|
||||||
|
'Jeder Koerper ist ein Boudoir-Koerper. Ueber Koerperpositivitaet in der Boudoir-Fotografie.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Die richtige Vorbereitung auf dein Shooting',
|
||||||
|
slug: 'vorbereitung-boudoir-shooting',
|
||||||
|
excerpt:
|
||||||
|
'Was du vor deinem Boudoir-Shooting beachten solltest. Praktische Tipps fuer Kleidung, Haut und die richtige Einstellung.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-22T10:00:00.000Z',
|
||||||
|
isFeatured: false,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Die Woche davor',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Lege deine Outfits bereit. Probiere sie an und schaue, wie du dich darin fuehlst. Bequemlichkeit geht vor Sex-Appeal. Wenn du dich in etwas unwohl fuehlst, wird man das auf den Bildern sehen.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Trinke viel Wasser, schlafe ausreichend und vermeide es, neue Hautpflegeprodukte auszuprobieren. Deine Haut sollte am Tag des Shootings entspannt und hydratisiert sein.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Am Tag des Shootings',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Komme ungeschminkt und mit sauberer Haut. Das Styling ist im Shooting inbegriffen, und unsere Stylistin wird einen Look kreieren, der perfekt zu dir und deinem gewaehlten Stil passt.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Iss vorher etwas Leichtes und bringe eine Flasche Wasser mit. Ein Shooting dauert mehrere Stunden, und du sollst dich die ganze Zeit ueber wohlfuehlen.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Die richtige Einstellung',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Das Wichtigste, was du mitbringen kannst, ist Offenheit. Lass dich auf das Erlebnis ein, vertraue dem Prozess und erlaube dir, Spass zu haben. Es geht nicht um Perfektion, sondern um DICH.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: 'Vorbereitung Boudoir-Shooting | Sensual Moment',
|
||||||
|
metaDescription:
|
||||||
|
'Praktische Tipps fuer dein Boudoir-Shooting. Kleidung, Hautpflege und die richtige Einstellung.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Warum jede Frau ein Boudoir-Album verdient',
|
||||||
|
slug: 'warum-jede-frau-boudoir-album-verdient',
|
||||||
|
excerpt:
|
||||||
|
'Ein gedrucktes Album ist mehr als eine Sammlung von Bildern. Es ist ein Anker fuer die Momente, in denen du vergisst, wie wunderschoen du bist.',
|
||||||
|
type: 'blog',
|
||||||
|
status: 'published',
|
||||||
|
publishedAt: '2026-02-25T10:00:00.000Z',
|
||||||
|
isFeatured: false,
|
||||||
|
content: richTextWithHeadings([
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Digital ist gut, gedruckt ist besser',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Natuerlich bekommst du deine Bilder auch digital. Aber ein gedrucktes Album hat eine ganz andere Qualitaet. Du kannst es in die Hand nehmen, die Seiten umblättern und in Erinnerungen schwelgen. Es wird nicht in einem Ordner auf dem Handy verschwinden.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Handverlesene Qualitaet',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Meine Alben werden auf hochwertigem Fotopapier gedruckt und in Handarbeit gebunden. Jedes Album ist ein Unikat, genau wie du. Die Bilder werden sorgfaeltig kuratiert und in einer Geschichte angeordnet, die deinen Tag erzaehlt.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
tag: 'h2',
|
||||||
|
text: 'Ein Anker fuer schlechte Tage',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Es wird Tage geben, an denen du dich nicht schoen fuehlst. An denen der Spiegel ein Feind zu sein scheint. An genau diesen Tagen nimmst du dein Album zur Hand und erinnerst dich: Das bin ich. Und ich bin wunderschoen.',
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
seo: {
|
||||||
|
metaTitle: 'Warum ein Boudoir-Album? | Sensual Moment Photography',
|
||||||
|
metaDescription:
|
||||||
|
'Ein gedrucktes Boudoir-Album als Anker fuer Selbstliebe. Warum jede Frau eines verdient.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
async function seed() {
|
||||||
|
console.log('Initializing Payload...')
|
||||||
|
const payload = await getPayload({ config })
|
||||||
|
|
||||||
|
console.log(`\nSeeding ${posts.length} blog posts for tenant ${TENANT_ID}...\n`)
|
||||||
|
|
||||||
|
let created = 0
|
||||||
|
let skipped = 0
|
||||||
|
|
||||||
|
for (const post of posts) {
|
||||||
|
// Check if post already exists
|
||||||
|
const existing = await payload.find({
|
||||||
|
collection: 'posts',
|
||||||
|
where: {
|
||||||
|
and: [
|
||||||
|
{ tenant: { equals: TENANT_ID } },
|
||||||
|
{ slug: { equals: post.slug } },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
limit: 1,
|
||||||
|
locale: 'de',
|
||||||
|
})
|
||||||
|
|
||||||
|
if (existing.docs.length > 0) {
|
||||||
|
console.log(` SKIP: "${post.title}" (already exists)`)
|
||||||
|
skipped++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
await payload.create({
|
||||||
|
collection: 'posts',
|
||||||
|
locale: 'de',
|
||||||
|
data: {
|
||||||
|
...post,
|
||||||
|
tenant: TENANT_ID,
|
||||||
|
} as never,
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(` OK: "${post.title}"`)
|
||||||
|
created++
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`\nDone: ${created} created, ${skipped} skipped`)
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
seed().catch((err) => {
|
||||||
|
console.error('Seed failed:', err)
|
||||||
|
process.exit(1)
|
||||||
|
})
|
||||||
Loading…
Reference in a new issue