#!/usr/bin/env python3
"""ss_ig_car10_geo.py — TEMPLATE carousel 10 slide untuk FEED IG StudioSoft.

Topik : GEO (Generative Engine Optimization) — cara konten bisnis dikutip AI.
Sumber: https://studiosoft.id/apa-itu-geo-generative-engine-optimization/ (25 Sep 2026)
Standar: engine ss_carousel_lib.py (1080x1350, rata kiri, blok tengah vertikal,
         tanpa separator, Poppins) + **BG ikut POLA HARIAN** (perintah Bos 2 Okt 2026):
         tanggal GENAP → slide 1 PUTIH lalu biru; tanggal GANJIL → slide 1 NAVY lalu putih.
         Pakai `L.warna_ke(TANGGAL, num)` — jangan hardcode ganjil/genap nomor slide.
BELUM dijadwalkan — mode preview untuk Bos.
"""
import datetime
import os
import sys

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import ss_carousel_lib as L

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
OUT_DIR = os.path.join(WS, "ss_ig_car10_geo")
TAG = "#geo"
NAVY = (18, 43, 99)      # #122B63
WHITE = (255, 255, 255)
SKY = L.SKY
BLUE_TERANG = (37, 99, 235)   # #2563EB — aksen di slide putih (SKY terlalu pucat)
TOTAL = 10
TANGGAL = datetime.date(2026, 10, 1)      # tanggal tayang deck ini (ganti sesuai slot)


def mk(num):
    """BG ikut pola harian (`L.warna_ke`) + aksen yang cocok: SKY di atas navy, #2563EB di atas putih."""
    if L.warna_ke(TANGGAL, num) == "putih":
        return L.Slide(num, TOTAL, TAG, bg=WHITE, fg=NAVY, dot_color=NAVY), BLUE_TERANG
    return L.Slide(num, TOTAL, TAG, bg=NAVY, fg=WHITE), SKY


def s1():
    s, ac = mk(1)
    s.title([("GEO", ac), "BIAR BISNIS", "ANDA DIKUTIP", "MESIN AI"], after=40)
    s.lead("Orang makin sering bertanya langsung ke AI, bukan menelusuri sepuluh tautan biru.",
           after=30)
    s.para("GEO menyiapkan konten supaya ikut disebut saat AI menjawab.", size=30)
    return s.render("ss_car10_geo_01.png", OUT_DIR)


def s2():
    s, ac = mk(2)
    s.title([("APA ITU", ac), "GEO?"], after=40)
    s.lead("GEO = Generative Engine Optimization: menyusun konten supaya dikutip ChatGPT, "
           "Perplexity, Gemini, dan ringkasan AI di Google.", after=30)
    s.bullets([
        ("SEO", "bersaing untuk peringkat di halaman hasil pencarian."),
        ("GEO", "bersaing supaya kalimat kita disebut sebagai sumber jawaban."),
    ])
    return s.render("ss_car10_geo_02.png", OUT_DIR)


def s3():
    s, ac = mk(3)
    s.title([("KENAPA", ac), "SEKARANG?"], after=40)
    s.bullets([
        ("Pola mencari berubah", "orang minta rekomendasi dan perbandingan langsung ke asisten AI."),
        ("AI menyebut sedikit sumber", "biasanya hanya beberapa nama yang muncul di jawaban."),
        ("Sisanya tidak terlihat", "bisnis yang tidak masuk daftar itu praktis hilang dari percakapan."),
    ])
    return s.render("ss_car10_geo_03.png", OUT_DIR)


def s4():
    s, ac = mk(4)
    s.title([("BEDA GEO", ac), "DAN SEO"], after=34)
    s.h2("SEO MENGURUS HALAMAN", color=ac, after=14)
    s.bullets([("Struktur URL", ""), ("Kecepatan halaman", ""), ("Tautan masuk", "")], after=26)
    s.h2("GEO MENGURUS ISI", color=ac, after=14)
    s.bullets([("Kejelasan jawaban", ""), ("Bukti dan angka", ""), ("Pengalaman nyata", "")])
    return s.render("ss_car10_geo_04.png", OUT_DIR)


def s5():
    s, ac = mk(5)
    s.title([("TIGA PILAR", ac), "GEO"], after=40)
    s.bullets([
        ("Kejelasan jawaban", "konten yang membuka dengan jawaban langsung lebih mudah dikutip."),
        ("Struktur ramah mesin", "subjudul jelas, daftar, tabel, dan skema tanya-jawab."),
        ("Kredibilitas", "nama penulis, angka, dan sumber yang bisa ditelusuri."),
    ])
    return s.render("ss_car10_geo_05.png", OUT_DIR)


def s6():
    s, ac = mk(6)
    s.title([("CIRI KONTEN", ac), "YANG SERING", "DIKUTIP AI"], after=36)
    s.bullets([
        ("Jawaban di paragraf pertama", ""),
        ("Angka atau rentang yang spesifik", ""),
        ("Pengalaman sendiri: \u201ckami menemukan\u201d", ""),
        ("Tanggal pembaruan yang jelas", ""),
    ])
    return s.render("ss_car10_geo_06.png", OUT_DIR)


def s7():
    s, ac = mk(7)
    s.title([("LANGKAH 1", ac), "MULAI DARI", "PERTANYAAN"], after=36)
    s.bullets([
        ("Kumpulkan 10 pertanyaan", "yang paling sering diajukan calon pelanggan Anda."),
        ("Satu halaman satu jawaban", "jawab langsung di paragraf pertama, jelaskan setelahnya."),
        ("Tambahkan FAQ", "supaya mesin mudah membaca struktur isinya."),
    ])
    return s.render("ss_car10_geo_07.png", OUT_DIR)


def s8():
    s, ac = mk(8)
    s.title([("LANGKAH 2", ac), "TATA ULANG", "KONTEN LAMA"], after=36)
    s.bullets([
        ("Tidak perlu tulis ulang dari nol", "artikel lama cukup ditata ulang."),
        ("Taruh jawaban singkat di atas", ""),
        ("Pecah paragraf panjang jadi daftar", ""),
        ("Ganti subjudul jadi pertanyaan", ""),
    ])
    return s.render("ss_car10_geo_08.png", OUT_DIR)


def s9():
    s, ac = mk(9)
    s.title([("CARA", ac), "MENGUKURNYA"], after=40)
    s.bullets([
        ("Kemunculan merek", "berapa kali nama bisnis Anda muncul di jawaban AI."),
        ("Rujukan dari domain AI", "di Analytics muncul sebagai kanal AI Assistant."),
        ("Pencarian bermerek", "pertumbuhan orang yang mencari nama bisnis Anda."),
    ])
    return s.render("ss_car10_geo_09.png", OUT_DIR)


def s10():
    s, ac = mk(10)
    s.title([("MULAI", ac), "DARI SATU", "HALAMAN"], after=34)
    s.lead("Pilih satu pertanyaan pelanggan, jawab dengan jelas, lalu ukur apakah nama Anda "
           "ikut disebut AI.", after=28)
    s.para("Kami bantu audit dan tata ulang konten Anda. Kirim pesan lewat DM atau cek "
           "www.studiosoft.id.", size=30, color=ac)
    return s.render("ss_car10_geo_10.png", OUT_DIR)


if __name__ == "__main__":
    os.makedirs(OUT_DIR, exist_ok=True)
    for fn in (s1, s2, s3, s4, s5, s6, s7, s8, s9, s10):
        print("render:", os.path.basename(fn()))
