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

Topik : SEO untuk Bisnis Properti
Sumber: https://studiosoft.id/seo-untuk-bisnis-properti/ (artikel 2 Okt 2026)
Engine: ss_carousel_lib.py, BG ikut POLA HARIAN (perintah Bos 2 Okt 2026):
        tanggal GENAP → slide 1 PUTIH lalu biru; tanggal GANJIL → kebalikannya.
        Deck ini tayang 4 Okt 2026 (genap) → mulai PUTIH.
"""
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_seo_properti")
TAG = "#seoproperti"
NAVY = (18, 43, 99)
WHITE = (255, 255, 255)
SKY = L.SKY
BLUE = (37, 99, 235)
TOTAL = 10
TANGGAL = datetime.date(2026, 10, 4)      # slot tayang 4 Okt 2026 08:30 WIB


def mk(num):
    """BG ikut pola harian (`L.warna_ke`), bukan ganjil/genap nomor slide."""
    if L.warna_ke(TANGGAL, num) == "putih":
        return L.Slide(num, TOTAL, TAG, bg=WHITE, fg=NAVY, dot_color=NAVY), BLUE
    return L.Slide(num, TOTAL, TAG, bg=NAVY, fg=WHITE), SKY


def s1():
    s, ac = mk(1)
    s.title([("SEO UNTUK", ac), "BISNIS PROPERTI"], after=40)
    s.lead("Kenapa listing Anda tidak muncul saat orang mencari rumah di daerah tertentu.",
           after=30)
    s.para("Yang menentukan bukan jumlah foto, tapi jumlah halaman.", size=30)
    return s.render("ss_car10_seoproperti_01.png", OUT_DIR)


def s2():
    s, ac = mk(2)
    s.title([("PENCARIAN", ac), "PROPERTI SELALU", "SPESIFIK"], after=36)
    s.bullets([
        ("Bentuknya", "jenis properti ditambah lokasi, bukan kata umum."),
        ("Contoh", "rumah dijual di Rungkut, apartemen sewa nama tower."),
        ("Artinya", "satu halaman katalog tidak akan pernah cukup."),
    ])
    return s.render("ss_car10_seoproperti_02.png", OUT_DIR)


def s3():
    s, ac = mk(3)
    s.title([("STRUKTUR", ac), "YANG PERLU", "DIBANGUN"], after=36)
    s.bullets([
        ("Halaman hub", "per jenis properti, tugasnya mengumpulkan tautan."),
        ("Halaman lokasi", "satu per kecamatan atau area yang Anda layani."),
        ("Halaman unit", "spesifikasi, harga, foto, dan tombol WhatsApp."),
        ("Halaman pendukung", "cicilan, biaya jual beli, cara cek sertifikat."),
    ])
    return s.render("ss_car10_seoproperti_03.png", OUT_DIR)


def s4():
    s, ac = mk(4)
    s.title([("ANATOMI", ac), "HALAMAN LISTING"], after=36)
    s.bullets([
        ("Judul deskriptif", "rumah 2 lantai 4 kamar di Rungkut, bukan rumah mewah."),
        ("Tabel spesifikasi", "luas, kamar, listrik, hadap, sertifikat, tahun bangun."),
        ("Foto berlabel", "keterangan menyebut ruangan, bukan nama file."),
        ("Harga dan WhatsApp", "angka yang jelas menyaring pertanyaan tidak serius."),
    ])
    return s.render("ss_car10_seoproperti_04.png", OUT_DIR)


def s5():
    s, ac = mk(5)
    s.title([("KATA KUNCI", ac), "TIGA LAPIS"], after=36)
    s.bullets([
        ("Lapis 1", "jenis properti ditambah kota."),
        ("Lapis 2", "jenis properti ditambah kecamatan atau area."),
        ("Lapis 3", "nama proyek atau nama jalan, pembelinya paling dekat."),
        ("Tambahan", "atribut seperti jumlah kamar atau dekat jalan utama."),
    ])
    return s.render("ss_car10_seoproperti_05.png", OUT_DIR)


def s6():
    s, ac = mk(6)
    s.title([("KENAPA HARUS", ac), "ADA HARGA"], after=36)
    s.bullets([
        ("Halaman tanpa angka", "dianggap belum serius oleh calon pembeli."),
        ("Mesin pencari", "sulit memahami rentang harga properti Anda."),
        ("Solusinya", "tulis harga, atau rentang harga plus faktor yang mempengaruhi."),
    ])
    return s.render("ss_car10_seoproperti_06.png", OUT_DIR)


def s7():
    s, ac = mk(7)
    s.title([("TEKNIS YANG", ac), "PALING BERPENGARUH"], after=36)
    s.bullets([
        ("Schema", "Product atau RealEstateListing plus Offer dan Place."),
        ("Kecepatan", "foto dikompres, format WebP, dan lazy load."),
        ("Peta", "titik lokasi dan area layanan di setiap halaman unit."),
        ("Ponsel", "hampir semua calon pembeli membuka dari ponsel."),
    ])
    return s.render("ss_car10_seoproperti_07.png", OUT_DIR)


def s8():
    s, ac = mk(8)
    s.title([("GOOGLE", ac), "BUSINESS PROFILE"], after=36)
    s.bullets([
        ("Kantor pemasaran", "lengkapi jam buka, peta, dan nomor WhatsApp."),
        ("Rumah contoh", "unggah foto terbaru, bukan foto tahun lalu."),
        ("Review", "minta setelah serah terima, saat pengalaman masih segar."),
        ("Pertanyaan umum", "jawab sekali di profil, tidak perlu berulang."),
    ])
    return s.render("ss_car10_seoproperti_08.png", OUT_DIR)


def s9():
    s, ac = mk(9)
    s.title([("KESALAHAN", ac), "YANG MAHAL"], after=36)
    s.bullets([
        ("Hapus halaman unit", "menghilangkan peringkat yang sudah dibangun."),
        ("Foto seadanya", "miring dan kecil, padahal properti dibeli dengan mata."),
        ("Satu halaman semua unit", "tidak ada yang cukup relevan."),
        ("Tanpa halaman pendukung", "pertanyaan pembeli dijawab pesaing."),
    ])
    return s.render("ss_car10_seoproperti_09.png", OUT_DIR)


def s10():
    s, ac = mk(10)
    s.title([("UKUR", ac), "EMPAT HAL"], after=34)
    s.bullets([
        ("Halaman terindeks", "berapa yang benar-benar masuk pencarian."),
        ("Posisi kata kunci lokal", "per area, bukan rata-rata nasional."),
        ("Percakapan dari organik", "berapa WhatsApp yang datang dari pencarian."),
        ("Biaya per prospek", "organik dibandingkan berbayar."),
    ])
    s.para("Panduan lengkapnya ada di www.studiosoft.id atau kirim pesan lewat DM.", size=28, color=ac)
    return s.render("ss_car10_seoproperti_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()))
