#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Soto Semarang Pak Otto — Threads Scheduler (klien baru 20/08/2026).

Spek dari Bos:
- 7 slot waktu posting WIB: 05/08/11/14/17/20/23 (jeda 3 jam)
- Setiap update mengikuti slot KOSONG berikutnya (cek via API Repliz, bukan tracker lokal)
- Kalo slot sudah ada isi → geser ke slot kosong setelahnya
- Post setiap hari sesuai niche (kuliner soto Semarang), bentuk NESTED:
  post 1 dibalas post 2, post 2 dibalas post 3
- Autoreply ON (cron tiap jam), bahasa humanis, sambutan positif, pakai "saya"
- Maks 500 karakter/post (threads_text_check), konten UNIK (tracker hash)
- TikTok reshare MAKS 1×/hari (series 13/15/18/20) — sisanya puisi/rayuan receh,
  nostalgia Semarang, lokasi ikonik (Lawang Sewu, Tugu Muda, Kota Lama, Simpang Lima,
  Stasiun Tawang, Lumpia Gang Baru, Sam Poo Kong, Polder Tawang, Marina, dll),
  ajak diskusi & bikin rame (aturan Bos 21/08).

Akun: ACC.SOTO_THREADS = 6a86d84b62caae1e04fff12c
Cron: 0 * * * * python3 soto_threads_scheduler.py
"""
import json, os, sys, random
from datetime import datetime, timezone, timedelta
import urllib.request

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from repliz_client import HEADERS, BASE, ACC
from threads_text_check import cek_teks_threads, ThreadsTextError

WIB = timezone(timedelta(hours=7))
ROOT = os.path.dirname(os.path.abspath(__file__))
LOG_FILE = os.path.join(ROOT, "soto_threads_log.txt")
TRACK_FILE = os.path.join(ROOT, "soto_threads_used.json")
ACCOUNT_ID = ACC.SOTO_THREADS

SLOT_HOURS = [5, 8, 11, 14, 17, 20, 23]  # 7 slot WIB
SLOT_WIB = [f"{h:02d}:00 WIB" for h in SLOT_HOURS]

# Series reshare TikTok — aturan Bos (21/08): maks 1×/hari, sisanya puisi/nostalgia
TIKTOK_SERIES = {13, 15, 18, 20}

# ── Desain menu — aturan Bos (22/08): WAJIB tayang minimal 2×/hari ──
# Caption bertema "Romansa Rasa Semarang", humanis, humble, mengundang datang,
# plus perbanyak kata kunci: Kulineran Malam di Sidoarjo / Nasi Goreng Sidoarjo / Kuliner Murah Sidoarjo
MENU_MIN_DAILY = 2
MENU_IMAGE = os.path.join(ROOT, "openclaw-img", "soto_menu.jpg")
MENU_STATE_FILE = os.path.join(ROOT, "soto_threads_menu_state.json")

# Kata kunci yang WAJIB diperbanyak (aturan Bos 22/08)
KEYWORD_MALAM = ["kulineran malam di sidoarjo", "nasi goreng sidoarjo", "kuliner murah sidoarjo"]

# ── BANK KONTEN: 12 series × 3 nested post (≤500 chars) ──
# Sumber: profil IG & TikTok asli + karakteristik soto Semarang
CONTENT_SERIES = [
    # 1. Kenalan Soto Semarang Pak Otto
    [
        "Halo! Kenalin, Soto Semarang Pak Otto 🍜\n"
        "\n"
        "Kami hadir di Sidoarjo bawa soto Semarang asli — kuah bening, ayam kampung, dan rasa yang hangat di lidah.\n"
        "\n"
        "Buat kamu yang kangen soto khas Semarang atau penasaran sama rasanya, mampir aja! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kenapa harus soto ayam kampung? 🤔\n"
        "\n"
        "Ayam kampung punya tekstur lebih kenyal, aroma lebih gurih, dan kuahnya terasa lebih ringan dibanding ayam negeri.\n"
        "\n"
        "Kombinasi kuah bening yang segar + ayam kampung = soto yang pas buat sarapan maupun makan siang 👍 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Siap-siap nambah terus! 😄\n"
        "\n"
        "Soto Semarang Pak Otto 📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "Yuk mampir — kami tunggu! #SotoSemarangPakOtto #SotoSidoarjo #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 2. Kuah bening khas Semarang
    [
        "Yang bikin soto Semarang beda? Kuahnya bening, segar, dan gurih! 🍲\n"
        "\n"
        "Bukan kuah santan — tapi kaldu ayam kampung yang dimasak dengan rempah khas Jawa Tengah.\n"
        "\n"
        "Ringan di perut, tapi kaya rasa. Cocok dimakan kapan aja! 😋 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Rahasia kuah soto yang enak: kesabaran 😄\n"
        "\n"
        "Kaldu dimasak pelan-pelan biar kaldu ayam kampungnya keluar maksimal. Ditambah bawang putih, merica, dan rempah pilihan — jadi gurih alami tanpa MSG berlebihan.\n"
        "\n"
        "Hasilnya? Kuah bening yang bikin pengen nambah terus 🥰 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Soto hangat + cuaca Sidoarjo = cocok banget! ☀️\n"
        "\n"
        "Biar gak penasaran sama kuah beningnya, mampir langsung yuk:\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#SotoSemarang #SotoAyamKampung #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 3. Lauk pelengkap
    [
        "Soto doang? Kurang afdol tanpa lauk! 😄\n"
        "\n"
        "Di Pak Otto lengkap:\n"
        "✅ Sate kerang — khas Semarang banget\n"
        "✅ Sate ayam, sate telur puyuh\n"
        "✅ Perkedel kentang yang gurih\n"
        "\n"
        "Pilih lauk favoritmu, atau cobain semuanya! 😋 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Sate kerang itu hidden gem-nya soto Semarang 🦪\n"
        "\n"
        "Dibakar dengan bumbu kecap, rasanya manis-gurih, teksturnya kenyal. Dipadukan sama kuah soto yang segar — kombinasi yang jarang ditemuin di tempat lain!\n"
        "\n"
        "Kalau belum pernah coba, ini saatnya! 👌 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Satu porsi soto + sate kerang + perkedel = combo terbaik 🏆\n"
        "\n"
        "Mampir sekarang:\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#SateKerang #SotoSemarangPakOtto #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 4. Nasi Goreng Babat & Kulit
    [
        "Selain soto, ada nasi goreng babat & kulit! 🍳\n"
        "\n"
        "Buat pecinta jeroan, ini wajib coba. Babatnya empuk, kulitnya kenyal, dimasak dengan bumbu yang meresap.\n"
        "\n"
        "Nasi gorengnya gurih, sedikit manis, dan pastinya bikin kenyang! 🔥 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kenapa nasi goreng babat & kulit Pak Otto beda? 🤔\n"
        "\n"
        "Babat & kulitnya diolah dengan teknik khusus biar empuk tapi gak amis. Bumbunya diracik pas — gurih, pedasnya nendang kalau mau.\n"
        "\n"
        "Level pedas bisa disesuaikan, jadi aman buat semua! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Lapar siang? Nasi goreng babat & kulit jawabannya! 🍳\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#NasiGorengBabat #NasiGorengKulit #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 5. Hidden gem Sidoarjo
    [
        "Jarang yang tau — Soto Semarang Pak Otto itu hidden gem di Sidoarjo! 🤫\n"
        "\n"
        "Lokasinya di Ruko Pagerwojo, Graha Anggrek Mas No. C-16. Tenang, gampang dicari dan parkirnya mudah.\n"
        "\n"
        "Rasanya? Soto Semarang asli yang bikin kangen. 🥰 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kata siapa hidden gem susah dicari? 😄\n"
        "\n"
        "Pak Otto ada di area ruko yang strategis, dekat pemukiman dan perkantoran. Cocok buat makan siang karyawan, keluarga, atau anak kos.\n"
        "\n"
        "Harga bersahabat, porsi mengenyangkan! 💯 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Temenin hidden gem ini, yuk! 😊\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#HiddenGemSidoarjo #SotoSemarangPakOtto #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 6. Sarapan & makan siang praktis
    [
        "Bingung sarapan atau makan siang? Soto aja! 🍜\n"
        "\n"
        "Praktis, hangat, dan mengenyangkan. Kuahnya ringan jadi cocok buat pagi hari, tapi tetap bikin kenyang buat siang.\n"
        "\n"
        "Dijamin fresh dan disajikan hangat 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Anak kos merapat! 🏠\n"
        "\n"
        "Makan enak gak harus mahal. Di Pak Otto soto cuma Rp10 ribu — soto termurah sedunia versi kami 😄 porsinya pas, rasanya juara.\n"
        "\n"
        "Buat yang lagi hemat tapi mau tetap makan enak — ini tempatnya! 👍 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Sarapan hangat, hari jadi semangat! ☀️\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#SarapanSidoarjo #MakanSiang #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 7. Bumbu & racikan
    [
        "Soto Semarang yang otentik itu soal racikan! 🧂\n"
        "\n"
        "Bawang goreng, seledri, soun, tauge, dan perasan jeruk nipis — semua lengkap di Pak Otto. Tambah sambal & kecap sesuai selera.\n"
        "\n"
        "Setiap mangkuk diracik pas buat kamu 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Tips makan soto biar makin nikmat: 🤫\n"
        "\n"
        "1️⃣ Peras jeruk nipis dulu biar segar\n"
        "2️⃣ Tambah sambal dikit demi dikit\n"
        "3️⃣ Campur soun & tauge biar merata\n"
        "\n"
        "Terakhir, lahap selagi hangat! 🔥 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Racikan terbaik? Kamu yang nentuin! 😄\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#SotoSemarangPakOtto #KulinerSidoarjo #SotoAyamKampung #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 8. Cerita rasa & kualitas
    [
        "Kami percaya, makanan enak dimulai dari bahan yang benar 🧡\n"
        "\n"
        "Pak Otto pakai ayam kampung asli, rempah segar, dan dimasak setiap hari. Gak ada cerita masak seminggu sekali — semua fresh!\n"
        "\n"
        "Kualitas adalah prioritas kami 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kenapa fresh itu penting? 🤔\n"
        "\n"
        "Ayam kampung yang segar bikin kuah lebih gurih alami. Rempah yang baru diracik bikin aroma lebih keluar.\n"
        "\n"
        "Hasilnya: rasa yang konsisten enak tiap kali kamu datang 👍 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Dijamin fresh, dibuktikan pas dicicip! 😋\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#SotoSemarangPakOtto #KulinerSidoarjo #MasakanFresh #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 9. Menu lengkap buat keluarga
    [
        "Makan bareng keluarga? Pak Otto siap! 👨‍👩‍👧‍👦\n"
        "\n"
        "Menu lengkap: soto ayam kampung, nasi goreng babat & kulit, plus aneka sate dan gorengan.\n"
        "\n"
        "Ada yang gak suka soto? Pasti masih ada pilihan lain 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Satu meja, semua senang! 😊\n"
        "\n"
        "Anak-anak suka sate telur puyuh & perkedel. Orang tua suka soto hangatnya. Yang muda cobain nasi goreng babat & kulit.\n"
        "\n"
        "Menu lengkap bikin gak perlu bingung milih! ✅ #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kumpul keluarga makin hangat dengan soto 🧡\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#MakanKeluarga #SotoSemarangPakOtto #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 10. Sate-satean
    [
        "Sate-satean di Pak Otto, lengkap! 🍢\n"
        "\n"
        "✅ Sate kerang\n"
        "✅ Sate ayam\n"
        "✅ Sate telur puyuh\n"
        "✅ Sate ati ampela\n"
        "\n"
        "Bakarannya pas, bumbu kecapnya meresap. Cocok jadi teman soto! 😋 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Favorit pelanggan: sate kerang! 🦪\n"
        "\n"
        "Kerang segar, dibakar dengan bumbu manis-gurih. Teksturnya kenyal, gak amis, dan bikin nagih.\n"
        "\n"
        "Sate kerang + soto = kombinasi yang gak boleh dilewatkan! 👍 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Pesen soto + sate kerang, dijamin puas! 😄\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#SateKerang #SotoSemarangPakOtto #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 11. Cocok buat motoran / nongkrong
    [
        "Buat para motoran & pencari kuliner enak — merapat! 🏍️\n"
        "\n"
        "Pak Otto sering jadi tujuan mampir karena lokasinya gampang diakses & parkirnya luas.\n"
        "\n"
        "Abis gaspol, mampir soto hangat — pulangnya kenyang 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Hidden gem yang lagi naik daun di kalangan food vlogger! 📸\n"
        "\n"
        "Banyak yang udah mampir dan rekam pengalamannya. Soto Semarang asli di Sidoarjo, siapa yang gak penasaran?\n"
        "\n"
        "Biar gak penasaran, dateng aja langsung! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Sampai di Sidoarjo, mampir sini dulu! 🏍️\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#Motoran #SotoSemarangPakOtto #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 12. Terima kasih & ajakan
    [
        "Terima kasih buat semua yang udah mampir ke Soto Semarang Pak Otto! 🙏\n"
        "\n"
        "Dukungan kalian bikin kami semangat terus masak dengan sepenuh hati. Masukan dari kalian juga selalu kami dengar!\n"
        "\n"
        "Sampai ketemu di mangkuk soto berikutnya 🍜 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kami masih baru, tapi kami serius! 😊\n"
        "\n"
        "Terus dukung kami ya — dan kalau ada saran menu atau masukan, jangan ragu bilang. Kami pasti baca!\n"
        "\n"
        "Yang penting: masak dengan hati, sajikan dengan senyum 🧡 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Sampai ketemu di Pak Otto! 👋\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n"
        "\n"
        "#SotoSemarangPakOtto #KulinerSidoarjo #TerimaKasih #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 13. Share video TikTok — soto asli Semarang
    [
        "Cak, mbak — pernah nonton video soto kami di TikTok? 🎬\n"
        "\n"
        "Kali ini kami bagikan videonya biar kalian bisa lihat langsung kuah bening & ayam kampungnya!\n"
        "\n"
        "https://www.tiktok.com/@sotosemarang.pakotto/video/6998146951637550106\n"
        "\n"
        "Cocok buat temen nonton sambil laper 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Dari videonya keliatan kan, cak? Soto kami dimasak fresh, kuahnya bening, dan sate kerangnya juara.\n"
        "\n"
        "Kalian yang udah nonton, komen di sini ya — nanti kami balas! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Penasaran sama rasanya? Mampir langsung aja, cak!\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 14. Share reel IG — hidden gem Sidoarjo
    [
        "Sidoarjo ternyata punya hidden gem soto, cak! 🤫\n"
        "\n"
        "Banyak food vlogger udah mampir ke Soto Semarang Pak Otto. Ini videonya dari Instagram kami:\n"
        "\n"
        "https://www.instagram.com/reel/DZpPGTdv8h6/\n"
        "\n"
        "Yuk tonton dulu, siapa tau langsung laper 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Yang bikin kami seneng: banyak yang bilang rasanya otentik, kayak soto Semarang asli di kampung halaman.\n"
        "\n"
        "Itu bikin kami makin semangat masak tiap hari! 💪 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kalian penasaran? Mampir aja, cak!\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 15. Share video TikTok — proses masak
    [
        "Pernah lihat proses masak soto kami? 🍲\n"
        "\n"
        "Di TikTok kami ada videonya — dari rebus kaldu sampai racik bumbu. Semua fresh, semua pakai hati.\n"
        "\n"
        "https://www.tiktok.com/@sotosemarang.pakotto\n"
        "\n"
        "Follow TikTok kami ya, biar gak ketinggalan kontennya! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kami bukan cuma jual soto, cak — kami juga mau ajak kalian lihat dapur kami. Transparan, apa adanya.\n"
        "\n"
        "Yang penting: bersih, fresh, dan enak! 🧡 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Lihat videonya, mampir rasanya! 😄\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 16. Share reel IG — review food vlogger
    [
        "Ada video review dari food vlogger tentang kami! 📸\n"
        "\n"
        "Kami bersyukur banget bisa direview — dan syukurnya, responnya positif! Ini videonya:\n"
        "\n"
        "https://www.instagram.com/reel/DGPly1fxahb/\n"
        "\n"
        "Makasih ya buat yang udah mampir & mereview 🙏 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kami masih terus belajar biar makin baik. Masukan dari kalian selalu kami dengar — baik lewat komen maupun chat langsung.\n"
        "\n"
        "Yang penting, kalian puas & kenyang! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Belum pernah coba? Mampir yuk, cak!\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 17. Share reel IG — sate kerang
    [
        "Sate kerang kami sempat viral di Instagram, cak! 🦪\n"
        "\n"
        "Banyak yang penasaran sama rasanya. Ini videonya buat kalian yang belum lihat:\n"
        "\n"
        "https://www.instagram.com/reel/DREHoQ4EkZX/\n"
        "\n"
        "Sate kerang + soto = combo yang bikin nagih 😋 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kenapa sate kerang kami juara? Karena kerangnya fresh, dibakar pas, dan bumbu kecapnya meresap.\n"
        "\n"
        "Gak heran banyak yang request lauk ini terus! 👍 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Cobain sendiri yuk, cak!\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 18. Share TikTok — nasi goreng babat
    [
        "Nasi goreng babat & kulit kami juga ada di TikTok! 🍳\n"
        "\n"
        "Buat pecinta jeroan, ini wajib nonton — babatnya empuk, kulitnya kenyal.\n"
        "\n"
        "https://www.tiktok.com/@sotosemarang.pakotto/video/6998146951637550106\n"
        "\n"
        "Dijamin ngiler 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Rahasia nasi goreng babat kami? Bumbu diracik pas, pedasnya bisa disesuaikan.\n"
        "\n"
        "Kamu tim babat atau tim kulit? Komen di bawah ya! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Lapar? Mampir aja, cak!\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 19. Share reel IG — kuah bening
    [
        "Satu hal yang bikin soto kami beda: kuahnya bening & segar! ✨\n"
        "\n"
        "Lihat sendiri di video Instagram kami ini — beningnya kebangetan, kan?\n"
        "\n"
        "https://www.instagram.com/reel/DbNvc60hzVn/\n"
        "\n"
        "Kuah ringan, rasa mantap — itu motto kami 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kuah bening ini hasil kaldu ayam kampung yang dimasak pelan-pelan, cak.\n"
        "\n"
        "Gak pakai santan, gak bikin enek — pas buat sarapan maupun makan siang! 👍 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Penasaran sama kuahnya? Dateng yuk!\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 20. Share TikTok & IG — ajak follow
    [
        "Ikutin keseruan Soto Semarang Pak Otto di TikTok & Instagram, cak! 🎉\n"
        "\n"
        "Kami rutin posting konten seru: proses masak, menu baru, dan momen pelanggan.\n"
        "\n"
        "TikTok: https://www.tiktok.com/@sotosemarang.pakotto\n"
        "IG: https://www.instagram.com/sotosemarang.pakotto/\n"
        "\n"
        "Follow & aktifin loncengnya ya! 🔔 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Di TikTok ada video-video singkat yang bikin laper, di IG ada reels & info lengkap.\n"
        "\n"
        "Pilih aja yang mana — atau dua-duanya biar gak ketinggalan! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kontennya seru, makanannya lebih seru! 😄\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 21. Romansa Semarang — Stasiun Tawang
    [
        "Aku tunggu kamu datang di Stasiun Tawang, Semarang. 🚂✨\n"
        "\n"
        "Sambil nunggu, aku ingat hangatnya Semarang — kayak kuah soto bening yang selalu bikin tenang.\n"
        "\n"
        "Kamu yang pernah nunggu kereta di Tawang, cerita dong di kolom komentar! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Stasiun Tawang itu bukan cuma tempat berangkat — tapi tempat semua cerita dimulai. 🥹\n"
        "\n"
        "Kangen nunggu di bangku kayunya, kangen suara kereta masuk, kangen Semarang.\n"
        "\n"
        "Kalau kangen, sumonggo mampir — kami siapkan soto hangat buat nemenin ceritamu. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Buat kamu yang kangen suasana Semarang: sumonggo datang ke Warung Pak Otto. 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 22. Romansa Semarang — Kota Lama
    [
        "Aku inget kita pernah bercanda di kedai kecil sekitar Kota Lama. ☕\n"
        "\n"
        "Gedung-gedung tua, sepeda ontel, dan tawa kita yang gak berhenti. Semarang memang punya cara buat bikin orang rindu.\n"
        "\n"
        "Cerita Kota Lama versi kamu gimana? Komen di bawah ya! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kota Lama itu saksi: banyak cerita cinta, pertemanan, dan kenangan yang dimulai dari sana. 🏛️\n"
        "\n"
        "Kami percaya, rasa itu bisa dihadirkan lagi — lewat semangkuk soto yang dimasak dengan hati.\n"
        "\n"
        "Kangen Semarang? Kami tunggu kamu di sini. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Sumonggo, cak & mbak! 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 23. Romansa Semarang — Tugu Muda
    [
        "Tugu Muda, bundaran yang selalu sibuk — tapi di mataku, tempat paling romantis buat nunggu. 🗼\n"
        "\n"
        "Kangen sore-sore di Semarang, anginnya sejuk, dan harinya ditutup dengan soto hangat.\n"
        "\n"
        "Kamu kangen momen apa di Semarang? Cerita yuk! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Semarang itu kayak soto kami: bening di luar, tapi dalamnya penuh rasa dan kenangan. 🥹\n"
        "\n"
        "Tugu Muda, Lawang Sewu, Simpang Lima — semua punya cerita yang gak pernah selesai diceritakan.\n"
        "\n"
        "Kami bawa sedikit rasa Semarang itu ke Sidoarjo. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Buat yang kangen Semarang: sumonggo mampir ke Warung Pak Otto! 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 24. Romansa Semarang — Lumpia & sore
    [
        "Kangen lumpia Semarang? Sore-sore nongkrong sambil nyemil lumpia panas. 😋\n"
        "\n"
        "Di Warung Pak Otto, kami punya sate kerang yang rasanya gak kalah bikin kangen!\n"
        "\n"
        "Makanan khas Semarang favoritmu apa? Komen di bawah! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Lumpia, soto Bangkong, wingko babat, tahu gimbal — Semarang itu surga kuliner yang dirindukan. 🍢\n"
        "\n"
        "Kami gak bisa bawa semua ke Sidoarjo, tapi kami bawa yang paling hangat: soto ayam kampung.\n"
        "\n"
        "Rasa Semarang, porsinya Sidoarjo. Sumonggo! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kangen kuliner Semarang? Soto kami siap nemenin! 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 25. Romansa Semarang — Hujan di Semarang
    [
        "Hujan di Semarang selalu punya cerita. ☔\n"
        "\n"
        "Pernah gak sih, kamu nunggu hujan reda sambil makan soto panas di pinggir jalan? Itu salah satu kenangan yang gak akan kulupa.\n"
        "\n"
        "Cerita hujan versi kamu gimana? Komen ya! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Soto dan hujan itu pasangan paling romantis. Kuahnya hangat, hujannya dingin — dan rasanya semua masalah ilang sesaat. 🌧️\n"
        "\n"
        "Di Warung Pak Otto, hujan malah bikin kami makin seru masak.\n"
        "\n"
        "Kangen momen kayak gitu? Datang aja, cak! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Hujan-hujan gini paling enak soto! 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 26. Romansa Semarang — Lawang Sewu
    [
        "Lawang Sewu, seribu pintu — dan salah satunya mungkin mengarah ke kenangan kita. 🚪\n"
        "\n"
        "Semarang selalu terasa magis: sejarahnya, bangunannya, dan rasanya.\n"
        "\n"
        "Pernah ke Lawang Sewu? Cerita pengalamanmu di komentar! 😊 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Seribu pintu Lawang Sewu, tapi hanya satu yang bikin kita pulang: pintu rumah yang selalu hangat. 🏡\n"
        "\n"
        "Buat kami, pintu Warung Pak Otto selalu terbuka buat siapa pun yang kangen rasa Semarang.\n"
        "\n"
        "Sumonggo mampir, cak & mbak! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Pintu kami terbuka buat kamu yang kangen Semarang 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 27. Diskusi — Apa yang kamu rindukan dari Semarang?
    [
        "Diskusi dulu yuk, cak & mbak! 🤔\n"
        "\n"
        "Kalau boleh milih SATU hal yang paling kamu rindukan dari Semarang — apa?\n"
        "\n"
        "A. Soto & kulinernya\n"
        "B. Tempat & bangunannya\n"
        "C. Orang-orangnya\n"
        "\n"
        "Pilih di komentar ya! 👇 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kami tebak jawabannya mayoritas A — soto! 😄\n"
        "\n"
        "Tapi jujur, semua jawaban bener. Semarang itu gabungan rasa, tempat, dan orang yang bikin kangen.\n"
        "\n"
        "Kalau kangen, gak perlu nunggu mudik — mampir aja ke sini! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Jawaban kamu apa? Komen di bawah! 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 28. Diskusi — Soto Semarang vs Soto lainnya
    [
        "Perang pendapat halal: Soto Semarang vs soto daerah lain! 🍜⚔️\n"
        "\n"
        "Kami gak akan bilang soto kami paling enak — biar kamu yang nilai. Tapi kuah bening + sate kerang itu kombinasi juara.\n"
        "\n"
        "Kamu tim soto apa? Komen di bawah! 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Soto Semarang: kuah bening, ayam kampung, sate kerang, dan perkedel. Simpel, tapi gak ada lawan buat yang kangen. 🏆\n"
        "\n"
        "Soto daerah lain juga enak kok — tapi kami setia sama yang satu ini.\n"
        "\n"
        "Tim soto Semarang, angkat tangan! 🙋 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Apapun tim sotomu, sumonggo mampir! 🍜\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 29. Romansa — Pulang ke Semarang
    [
        "Pulang ke Semarang itu kayak napas lega setelah perjalanan panjang. 😌\n"
        "\n"
        "Gerbang masuk kota, udara yang berubah, dan aroma soto yang mulai tercium. Semarang, kamu selalu dirindukan.\n"
        "\n"
        "Kapan terakhir kali kamu pulang ke Semarang? Komen! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Buat yang gak bisa pulang sekarang: kami hadirkan Semarang di Sidoarjo lewat satu mangkuk soto. 🍜\n"
        "\n"
        "Rasanya mungkin gak 100% sama — tapi kehangatannya, kami usahakan sama.\n"
        "\n"
        "Kangen? Sumonggo, kami tunggu. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Rasa Semarang, hati Sidoarjo 🥹\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 30. Romansa — Janji di Semarang
    [
        "Kita pernah janji ketemu lagi di Semarang — entah di Tawang, Kota Lama, atau kedai soto kecil. 🤝\n"
        "\n"
        "Janji itu mungkin belum kesampaian, tapi kami percaya kenangan gak pernah benar-benar pergi.\n"
        "\n"
        "Kamu juga punya janji yang belum ditepati di Semarang? #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Sementara menunggu janji itu, kami jagain rasanya di sini. 🍜\n"
        "\n"
        "Soto hangat, sate kerang, dan senyum — siap nemenin cerita yang masih berlanjut.\n"
        "\n"
        "Semarang menunggu, dan kami juga. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Ketemu lagi yuk, di Warung Pak Otto! 🥹\n"
        "\n"
        "📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n"
        "⏰ Selasa–Minggu 10.00–21.00 WIB\n"
        "📲 081230777713 #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 31. Lawang Sewu — misteri & romantis
    [
        "Lawang Sewu katanya seribu pintu. 🚪\nTapi aku cuma butuh satu — pintu yang kamu buka buat cerita kita.\n\nSoto kami juga gitu: satu mangkuk, seribu kenangan. 😄\nPernah ke Lawang Sewu? Cerita dong! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Misterius kayak Lawang Sewu, tapi hangat kayak soto kami. 🍜\nDulu takut sama bangunannya, sekarang malah kangen.\n\nKamu tim 'Lawang Sewu angker' atau 'Lawang Sewu estetik'? 😆 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Biar makin rame ceritanya, mampir yuk! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #Semarang #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 32. Tugu Muda — semangat & nostalgia
    [
        "Tugu Muda berdiri tegak, ngelawan capek dan waktu. 🗼\nKami juga — tiap pagi masak kaldu, tiap siang siapin soto buat kamu.\n\nSemangat yang gak pernah padam, kayak kenangan di Semarang. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Banyak yang foto di Tugu Muda, tapi jarang yang tau ceritanya. Sama kayak soto — keliatan simpel, padahal prosesnya panjang. 😄\n\nKamu pernah nongkrong di sekitar Tugu Muda? #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Mampir, biar kamu juga punya cerita baru! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #Semarang #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 33. Kota Lama & Gereja Blenduk — romantis
    [
        "Kota Lama itu kayak surat cinta dari masa lalu — tua, tapi romantis. 💌\nGereja Blenduk berdiri sejak dulu, nyaksenin orang-orang jatuh cinta.\n\nKami juga mau jadi saksi cerita kamu — ditemenin soto hangat. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Jalan-jalan sore di Kota Lama, sorenya makan soto. Kombinasi yang gak pernah gagal. 😌\n\nPernah ngerasain vibe Kota Lama? Atau baru kepo? Cerita di komen yuk! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kota Lama nungguin kamu, soto juga! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #KotaLama #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 34. Simpang Lima — rame & diskusi
    [
        "Simpang Lima tuh kayak tongkrongan — selalu rame, selalu ada cerita. 🗣️\nKami pengen Warung Pak Otto jadi Simpang Lima-nya pecinta soto: rame, hangat, penuh tawa.\n\nSoto favoritmu: soun banyak atau dikit? #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Diskusi receh tapi penting: soto itu sate kerangnya dimakan duluan atau nyemplung ke kuah? 😄\nTim mana kamu? Yang jelas, tim hangat-hangat di Warung Pak Otto. #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Yuk ramein! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #SimpangLima #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 35. Lumpia Gang Baru — rayuan receh
    [
        "Kamu kayak lumpia Gang Baru — dari luar keliatan simpel, tapi dalemnya penuh kejutan. 😍\n\nSoto kami juga: keliatan biasa, tapi kuahnya bikin nagih.\n\nRayuan receh level Semarang, mau lanjut? #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Lumpia, wingko, soto — Semarang itu kota yang bikin kenyang sekaligus kangen. 🥟\n\nKamu paling kangen kuliner Semarang yang mana? Komentar di bawah ya! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kangennya jangan ditahan, mampir aja! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #LumpiaSemarang #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 36. Polder Tawang — malam & lampu kota
    [
        "Malam di Polder Tawang, lampu kota nari di atas air. ✨\nAku gak butuh ribuan lampu — cukup senyum kamu dan soto hangat.\n\nHujan di Semarang selalu punya cerita. Kamu punya? #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Pencakar langit kecemin di polder, kayak kenangan kecemin di hati. 🥹\n\nDulu sering lewat Polder Tawang pas magrib? Atau baru mau coba? Cerita dong! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Malam makin hangat dengan soto! 🌙\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #Semarang #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 37. Sam Poo Kong — doa & harapan
    [
        "Sam Poo Kong — tempat orang titip doa dan harapan. 🙏\nKami juga titip harapan: semoga sotonya bikin kamu senyum hari ini.\n\nPernah ke Sam Poo Kong? Momen apa yang paling kamu inget? #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Kelenteng yang tenang, doa yang khusyuk, dan soto yang hangat — Semarang punya semuanya. 🍜\n\nKamu tim ziarah budaya atau tim kulineran dulu? 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Titip doa & lapar kamu ke kami! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #SamPooKong #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 38. Kampung Pelangi — warna & ceria
    [
        "Kampung Pelangi itu bukti: yang keliatan biasa bisa jadi luar biasa. 🌈\nSama kayak soto kami — dari dapur kecil, jadi hangat buat banyak orang.\n\nKalau soto, warnanya bening tapi rasanya pelangi. 😄 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Dulu kampung biasa, sekarang jadi spot foto. Cerita perjuangan yang menginspirasi! 📸\n\nKamu udah pernah foto-foto di Kampung Pelangi? Share ceritanya! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Warna-warni ceritamu, kami tunggu di sini! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #KampungPelangi #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 39. Marina — sunset & angin laut
    [
        "Sunset di Marina itu gratis, tapi rasanya mewah banget. 🌅\nKami mau ngasih rasa yang sama lewat semangkuk soto — sederhana, tapi berkesan.\n\nSiapa yang kangen sunset Semarang? Angkat tangan! 🙋 #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Angin laut, ombak, dan soto hangat — kombinasi aneh tapi nyaman. 😌\n\nKamu tim sunset sendirian atau rame-rame? Cerita dong di komen! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Soto hangat buat nemenin cerita sunset-mu! 🌅\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #MarinaSemarang #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 40. Bukit Sari / Brown Canyon — kejutan Semarang
    [
        "Brown Canyon di Bukit Sari — di Semarang ada Grand Canyon versi mini. 😲\nNggak nyangka, kan? Sama kayak soto kami: di Sidoarjo, tapi rasa Semarang asli.\n\nPernah ke Bukit Sari? Cerita pengalamannya! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Alamnya gahar, tapi hati kita tetap lembut — apalagi abis makan soto. 😄\n\nKamu lebih suka wisata alam atau wisata kuliner? Boleh dua-duanya! #kulinermalamsidoarjo #kulinermurahsidoarjo",
        "Dua-duanya bisa, asal mampir dulu ke sini! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #BukitSari #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 41. Tanya pemirsa — kuliner malam vs kuliner murah
    [
        "Pertanyaan receh tapi seru buat diskusi: 🍜\nKamu tim #kulinermalamsidoarjo atau tim #kulinermurahsidoarjo? 😄\n\nDua-duanya legit sih, tapi mana yang lebih sering kamu buru? Jawab di komen ya!",
        "Kalau aku, dua-duanya kebagian — malamnya makan di #kulinermalamsidoarjo, harganya ramah di #kulinermurahsidoarjo. 😆\n\nSoto kami masuk dua-duanya: buka sampai malam, harga bersahabat.\n\nKamu tim mana nih?",
        "Yang penting kenyang & senang! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    # 42. Rekomendasi kuliner Sidoarjo dari pemirsa
    [
        "Kamu anak Sidoarjo? Pasti punya daftar #kulinermalamsidoarjo atau #kulinermurahsidoarjo andalan! 🗣️\n\nYuk bagi-bagi rekomendasi kuliner favoritmu di kolom komen — biar makin rame dan saling ngasih referensi. 😄",
        "Rekomendasiku: soto Semarang hangat buat kulineran malam di Sidoarjo, harganya juga bersahabat buat kantong anak kos. 😉\n\nNah, giliran kamu — kuliner apa yang wajib dicoba di Sidoarjo?",
        "Catet rekomendasinya, mampir juga ke sini! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #KulineranMalamDiSidoarjo #KulinerSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
]

# ══════════════════════════════════════════════════════════════════
# BANK DISKUSI GADUH — "bikin rame, ajak diskusi, ajak datang" (Bos 22/08)
# Pertanyaan receh kontroversial → memancing perang komentar (engagement),
# ditutup ajakan mampir. Nested 3. Dipilih PRIORITAS setelah desain menu.
# ══════════════════════════════════════════════════════════════════
DISKUSI_GADUH = [
    [
        "Perang pendapat lagi yuk, cak & mbak! ⚔️\n\nSoto Semarang kuah bening vs soto kuah santan — tim mana kamu? Jujur aja, jangan diplomatis 😄\n\nKomen di bawah, nanti kami balesin satu-satu! 👇",
        "Kami jelas tim bening — segar, ringan, kaldu ayam kampungnya kerasa banget. Tapi santan juga enak kok, gak bakal kami hina 😄\n\nTim santan boleh protes di komentar! Kami siap gaduh 👀",
        "Apapun tim kamu, mampir dulu yuk biar penilaiannya adil! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #SotoBeningVsSantan #KulineranMalamDiSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    [
        "Pertanyaan serius buat pecinta sate kerang: 🦪\n\nSate kerang dicelupin ke kuah soto dulu, atau dimakan gitu aja?\n\nIni bisa bikin gaduh — hati-hati milih jawaban 😄👇",
        "Versi kami: celup bentar biar hangat & bumbunya lumer — tapi kalau kamu tim kering, kami respect 😄\n\nTim celup vs tim kering, mana suaramu? Komen! 🗣️",
        "Mau dicelup atau gak, sate kerangnya tetap enak — buktiin sendiri yuk! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #SateKerang #KulineranMalamDiSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    [
        "Perang keluarga paling panas: soto dimakan sama nasi, atau kuah+isi doang? 🍚\n\nJangan bilang 'sama aja' ya — itu jawaban buat hindarin konflik 😄\n\nKamu tim mana? Komen di bawah! 👇",
        "Tim nasi: lebih kenyang, lebih mantap. Tim tanpa nasi: lebih kerasa kuah & sotonya. Dua-duanya bener, dua-duanya bikin gaduh 😄\n\nKami tunggu argumen kalian di komentar! 🗣️",
        "Apapun tim kamu, soto kami siap jadi saksi perdamaian 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #SotoPakaiNasi #KulineranMalamDiSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    [
        "Debat receh yang gak ada habisnya: soun banyak atau soun dikit? 🤔\n\nSoun banyak = lebih kenyang. Soun dikit = lebih berasa kuah.\n\nKamu tim mana? Jangan asal jawab ya 😄👇",
        "Kami sih sayang kalau sounnya dikit — soalnya soto kami kuahnya enak, sayang gak diseruput bareng soun 😄\n\nTapi tim dikit juga punya alasan. Ayo debat! 🗣️",
        "Sounnya banyak atau dikit, yang penting mampir! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #SounBanyak #KulinerMurahSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    [
        "Nasi goreng babat & kulit kami: kamu tim babat, tim kulit, atau dua-duanya? 🍳\n\nIni pertanyaan yang bisa bikin pertemanan retak 😄\n\nKomen pilihanmu — kami siap baca semua! 👇",
        "Tim babat: empuk & gurih. Tim kulit: kenyal & nagih. Dua-duanya: kami anggap orang bijak 😄\n\nKalau belum pernah coba, mampir — cobain dua-duanya sekalian! 😋",
        "Cobain sendiri biar gak cuma berdebat! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #NasiGorengSidoarjo #TimBabatTimKulit #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    [
        "Soto panas + minuman apa sih paling pas? 🥤\n\nEs teh, es jeruk, atau wedang jahe? Ini bisa bikin gaduh juga lho 😄\n\nKomen pilihanmu, cak & mbak! 👇",
        "Kami sih tim es teh — manisnya pas lawan gurihnya kuah. Apalagi paket tanpa drama: 2 soto + 2 es teh + 4 tempe mendoan, hanya 35rb tok! 😄\n\nKamu tim apa?",
        "Soto Rp10 ribu + minuman, kenyang tanpa drama — mampir yuk! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #PromoMakanBerdua #KulineranMalamDiSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    [
        "Soto paling enak dimakan jam berapa? 🌙\n\nPagi buat sarapan, siang buat ngisi tenaga, atau malam buat kulineran?\n\nKami terima semua jawaban — asal nanti mampir ke Pak Otto ya 😄👇",
        "Kami buka Selasa–Minggu jam 10.00–21.00 WIB — jadi pagi, siang, sore, malam semuanya kebagian! 😄\n\nJam favoritmu kapan? Komen, nanti kami siapin soto pas kamu dateng! 🔥",
        "Jam berapa pun kamu dateng, soto hangatnya siap! 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #KulineranMalamDiSidoarjo #KulinerMurahSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
    [
        "Makan soto: sendirian biar fokus, atau rame-rame biar seru? 🍜\n\nSendirian = nikmatin kuahnya tenang. Rame-rame = rebutan sate kerang 😄\n\nKamu tim mana? Komen! 👇",
        "Kami sih seneng kalau rame-rame — makin banyak cerita, makin hangat suasananya. Tapi yang sendirian juga kami layani dengan senyum! 😊\n\nGimana menurutmu?",
        "Sendirian atau rame-rame, semuanya kami tunggu! 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #MakanRameRame #KulineranMalamDiSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    ],
]

# ══════════════════════════════════════════════════════════════════
# BANK DESAIN MENU — "Romansa Rasa Semarang" (tayang minimal 2×/hari)
# Nested 3: [Post 1 = gambar menu + romansa] → [Post 2 = highlight menu + keyword]
#           → [Post 3 = ajakan datang humble + alamat]
# Dirakit acak dari pool → 5×4×4 = 80 kombinasi unik (anti duplikasi via hash tracker)
# ══════════════════════════════════════════════════════════════════
MENU_INTRO = [
    "Romansa Rasa Semarang — itu yang kami bawa ke Sidoarjo malam ini. 🍜\n\nSemarang selalu punya cara buat bikin orang rindu: aromanya, orangnya, dan rasa sotonya. Desain menu lengkapnya ada di gambar, silakan dilihat-lihat dulu, cak & mbak.",
    "Semarang itu kota yang hangat — dan kami ingin kehangatannya sampai ke Sidoarjo. ✨\n\nSoto ayam kampung kuah bening, sate kerang, perkedel, sampai nasi goreng babat & kulit — semua ada di desain menu ini. Silakan dicek, kami tunggu kedatangannya.",
    "Ada yang bilang, kangen itu paling enak diobati dengan rasa. 🥹\n\nBuat kamu yang kangen Semarang — menu lengkap Soto Semarang Pak Otto ada di gambar. Sederhana, tapi kami masak dengan sepenuh hati.",
    "Malam di Sidoarjo, tapi rasanya Semarang. 🌙\n\nSoto hangat + lauk favorit, semuanya terangkum di desain menu ini. Datang, duduk, dan biarkan kami yang menyiapkan.",
    "Bukan sekadar soto — ini cara kami menjaga Romansa Rasa Semarang tetap dekat di hati. 🧡\n\nMenu lengkapnya ada di gambar. Kalau nanti mampir, jangan sungkan bilang kalau lihat dari Threads ya.",
]

MENU_HIGHLIGHT = [
    "Kalau agenda kulineran malam di Sidoarjo belum lengkap tanpa soto hangat — di sini tempatnya. 😊\n\nSoto ayam kampung kuah bening, sate kerang, perkedel, dan nasi goreng babat & kulit siap nemenin malam kamu. Harganya cuma Rp10 ribu — soto termurah sedunia versi kami 😄",
    "Soal nasi goreng Sidoarjo, kami punya versi spesial: nasi goreng babat & kulit. 🍳\n\nBabat empuk, kulit kenyal, bumbu meresap — ditemani soto hangat makin mantap. Kulineran malam di Sidoarjo terasa lengkap di sini.",
    "Kuliner murah Sidoarjo yang enak itu ada — dan salah satunya di sini. 😄\n\nHarga bersahabat, porsi mengenyangkan, rasa Semarang asli. Soto hangatnya cuma Rp10 ribu aja lho — cocok buat makan malam bareng keluarga atau teman.",
    "Malam makin hangat kalau ditemani soto + sate kerang. 🦪\n\nKulineran malam di Sidoarjo gak melulu harus mahal — di Pak Otto soto cuma Rp10 ribu, rasanya juara, harganya ramah di kantong.",
    "Promo tanpa drama, tok gaesss! 😄\n\nPaket 35rb: 2 soto ayam kampung + 2 es teh + 4 tempe mendoan. Makan & minum berdua, kenyang tanpa drama — hanya 35rb tok!\n\nCocok buat pacaran, sahabat, atau keluarga kecil — dijamin puas.",
    "Soto Semarang cuma 10 ribu tok! 😄\n\nGak percaya? Mampir buktiin sendiri — kuah bening, ayam kampung, lauk lengkap. Kuliner murah Sidoarjo yang gak ada obatnya.",
]

MENU_AJAK = [
    "Kami warung kecil yang masih terus belajar — tapi satu hal pasti: kami masak dengan hati. 🙏\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #RomansaRasaSemarang #KulineranMalamDiSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    "Gak perlu ragu mampir — soto hangat cuma Rp10 ribu aja, kami siapkan buat kamu. 😊\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #KulinerMurahSidoarjo #KulineranMalamDiSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    "Kalau mampir, bilang saja dari Threads — senang sekali rasanya disapa. 😄\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #NasiGorengSidoarjo #KulinerMurahSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
    "Jangan lupa paket tanpa drama kami: 2 soto ayam kampung + 2 es teh + 4 tempe mendoan — hanya 35rb tok gaesss! 🤝\n\n📍 Jl. Graha Anggrek Mas No. C-16, Ruko Pagerwojo, Buduran, Sidoarjo\n⏰ Selasa–Minggu 10.00–21.00 WIB (Senin tutup)\n📲 081230777713\n\n#SotoSemarangPakOtto #PaketTanpaDrama #KulineranMalamDiSidoarjo #KulinerMurahSidoarjo #kulinermalamsidoarjo #kulinermurahsidoarjo",
]


def build_menu_caption(used):
    """Rakit caption desain menu (nested 3) acak dari pool; hash dari GABUNGAN lengkap
    biar kombinasi intro×highlight×ajak semuanya unik (5×6×4 = 120 kombinasi)."""
    import hashlib
    texts = None
    h = None
    for _ in range(200):
        texts = [random.choice(MENU_INTRO), random.choice(MENU_HIGHLIGHT), random.choice(MENU_AJAK)]
        h = hashlib.md5("|".join(texts).encode()).hexdigest()
        if h not in used:
            return texts, h
    return texts, h


def sisip_keyword_malam(text, slot_hour):
    """Slot malam (17/20/23 WIB): sisipkan kata kunci kulineran malam / nasi goreng / kuliner murah
    sebelum alamat, asal masih ≤500 karakter. (Aturan Bos 22/08: perbanyak kata kunci.)"""
    if slot_hour not in (17, 20, 23):
        return text
    if "📍" not in text:
        return text
    low = text.lower()
    if any(k in low for k in KEYWORD_MALAM):
        return text
    sisip = random.choice([
        "Paket tanpa drama 35rb: 2 soto + 2 es teh + 4 mendoan — kulineran malam di Sidoarjo makin hemat. ",
        "Soto Semarang cuma 10 ribu tok — kulineran malam di Sidoarjo gak perlu mikir mahal. ",
        "Promo makan & minum berdua hanya Rp35rb — kenyang tanpa drama buat agenda kulineran malam di Sidoarjo. ",
        "Soto termurah sedunia cuma Rp10 ribu — kulineran malam di Sidoarjo makin mantap. ",
        "Soto hangat cuma Rp10 ribu — kulineran malam di Sidoarjo gak perlu mahal. ",
        "Agenda kulineran malam di Sidoarjo makin hangat dengan soto cuma Rp10 ribu. ",
        "Buat yang cari kulineran malam di Sidoarjo — soto hangat Rp10 ribu udah siap. ",
        "Kuliner murah Sidoarjo yang enak? Soto Rp10 ribu kami jawabannya. ",
        "Nasi goreng Sidoarjo + soto Rp10 ribu, kombo malam yang pas. ",
    ])
    new = text.replace("📍", sisip + "📍", 1)
    ok = enforce_max_chars(new, maxlen=500)
    return ok if ok is not None else text

def enforce_max_chars(text, maxlen=500):
    """VALIDASI KETAT: teks harus <= maxlen & semua link nyala. Gagal -> None (JANGAN dikirim)."""
    try:
        return cek_teks_threads(text, label="Caption Threads", maxlen=maxlen)
    except ThreadsTextError as e:
        print(f"  SKIP: {e}")
        return None


def load_json(path, default):
    if not os.path.exists(path):
        return default
    try:
        with open(path) as f:
            return json.load(f)
    except Exception:
        return default


def save_json(path, data):
    with open(path, "w") as f:
        json.dump(data, f)


def log(msg):
    line = f"{datetime.now(WIB).strftime('%Y-%m-%d %H:%M:%S')} | {msg}"
    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(line + "\n")
    print(line)


def get_schedules_window():
    """Semua schedule akun Soto Threads pada rentang UTC [kemarin, besok).
    (Perlu rentang ini karena slot 05:00 WIB hari ini berada di UTC tanggal kemarin.)"""
    now_utc = datetime.now(timezone.utc)
    start = (now_utc - timedelta(days=1)).strftime("%Y-%m-%d")
    end = (now_utc + timedelta(days=1)).strftime("%Y-%m-%d")
    out = []
    for status in ("pending", "success"):
        for page in range(1, 10):
            try:
                d = json.loads(urllib.request.urlopen(
                    urllib.request.Request(
                        f"{BASE}/public/schedule?page={page}&limit=50&status={status}",
                        headers=HEADERS), timeout=30).read())
            except Exception as e:
                log(f"⚠️ Gagal fetch schedule {status} page {page}: {e}")
                break
            batch = d.get("docs", [])
            for x in batch:
                if x.get("accountId") != ACCOUNT_ID:
                    continue
                sched = x.get("scheduleAt", "")
                if start <= sched[:10] <= end:
                    out.append(x)
            if len(batch) < 50:
                break
    return out


def get_pending_slot(schedules_window):
    """Slot kosong berikutnya (WIB): cek jam yang sudah terpakai HARI INI (WIB)."""
    today_wib_date = datetime.now(WIB).date()
    used_hours = set()
    for x in schedules_window:
        sched = x.get("scheduleAt", "")
        try:
            dt = datetime.strptime(sched, "%Y-%m-%dT%H:%M:%S.000Z")
            dt = dt.replace(tzinfo=timezone.utc) + timedelta(hours=7)  # → WIB
            if dt.date() == today_wib_date:
                used_hours.add(dt.hour)
        except Exception:
            continue
    now_wib = datetime.now(WIB)
    for i, hour in enumerate(SLOT_HOURS):
        if hour in used_hours:
            continue
        # Jangan isi slot yang jamnya sudah lewat (kecuali sudah lewat semua → besok)
        if hour > now_wib.hour or (hour == now_wib.hour and now_wib.minute < 30):
            return i
    return None


def pick_fresh_series(used, skip_tiktok=False):
    """Pilih series yang belum terpakai (berdasarkan hash konten post 1).
    skip_tiktok=True → jangan pilih series reshare TikTok (aturan Bos: maks 1×/hari)."""
    import hashlib
    for idx in range(len(CONTENT_SERIES)):
        if skip_tiktok and (idx + 1) in TIKTOK_SERIES:
            continue
        h = hashlib.md5(CONTENT_SERIES[idx][0][:80].encode()).hexdigest()
        if h not in used:
            return idx, h
    return None, None


def pick_fresh_diskusi(used):
    """Pilih series diskusi gaduh (bikin rame) yang belum terpakai."""
    import hashlib
    for idx in range(len(DISKUSI_GADUH)):
        h = hashlib.md5(DISKUSI_GADUH[idx][0][:80].encode()).hexdigest()
        if h not in used:
            return idx, h
    return None, None


def tiktok_sudah_dipakai_hari_ini(used):
    """True kalau hari ini (WIB) sudah ada series reshare TikTok yang diposting."""
    today = datetime.now(WIB).strftime("%Y-%m-%d")
    for v in used.values():
        if v.get("series") in TIKTOK_SERIES and v.get("posted", "").startswith(today):
            return True
    return False


def post_nested(texts, slot_hour, media_path=None):
    """Post nested: Post 1 → Reply 2 → Reply 3, jeda 1 menit, jam WIB slot_hour.
    Kalau media_path diberikan → post 1 pakai gambar (upload WP dulu, URL publik, bukan base64)."""
    from repliz_client import ReplizClient
    today = datetime.now(WIB).strftime("%Y-%m-%d")
    parent_id = None
    ids = []
    wp_url = None
    if media_path and os.path.exists(media_path):
        client = ReplizClient()
        wp_url = client.upload_to_wp(media_path, filename=os.path.basename(media_path))
        if wp_url:
            log(f"🖼️ Media: {wp_url}")
        else:
            log("⚠️ Upload media gagal — lanjut text only")
    for i, text in enumerate(texts):
        wib_dt = datetime.strptime(f"{today}T{slot_hour:02d}:{i:02d}:00", "%Y-%m-%dT%H:%M:%S")
        iso_utc = (wib_dt - timedelta(hours=7)).strftime("%Y-%m-%dT%H:%M:%S.000Z")

        payload = {
            "accountId": ACCOUNT_ID,
            "title": "",
            "description": text,
            "topic": "Kuliner" if i == 0 else "",
            "type": "image" if (i == 0 and wp_url) else "text",
            "medias": [{"url": wp_url, "type": "image", "alt": os.path.basename(media_path)}] if (i == 0 and wp_url) else [],
            "scheduleAt": iso_utc,
            "replies": [parent_id] if parent_id else [],
        }
        body = json.dumps(payload).encode()
        req = urllib.request.Request(f"{BASE}/public/schedule", data=body, headers=HEADERS, method="POST")
        try:
            with urllib.request.urlopen(req, timeout=30) as r:
                result = json.loads(r.read())
                sid = result.get("scheduleId", result.get("id", "?"))
                ids.append(sid)
                parent_id = sid
                log(f"✅ Post {i+1} → {sid} | {slot_hour:02d}:{i:02d} WIB")
        except urllib.error.HTTPError as e:
            err = e.read().decode()
            log(f"❌ Post {i+1}: HTTP {e.code} — {err[:200]}")
            raise
    return ids


def main():
    now_str = datetime.now(WIB).strftime("%Y-%m-%d %H:%M WIB")
    print("=" * 60)
    print(f"🍜 SOTO SEMARANG PAK OTTO — THREADS 7 SLOT NESTED")
    print(f"   {now_str}")
    print("=" * 60)

    # 1. Cek slot kosong dari API Repliz
    scheds = get_schedules_window()
    slot_idx = get_pending_slot(scheds)
    if slot_idx is None:
        print("   ⚠️  Semua slot hari ini sudah terisi. Selesai.")
        return
    slot_wib = SLOT_WIB[slot_idx]
    slot_hour = SLOT_HOURS[slot_idx]
    print(f"   🎯 Slot kosong berikutnya: {slot_wib} WIB")

    # 2. Pilih konten — desain menu WAJIB minimal 2×/hari (aturan Bos 22/08),
    #    sisanya series unik (TikTok maks 1×/hari)
    used = load_json(TRACK_FILE, {})
    menu_state = load_json(MENU_STATE_FILE, {"date": "", "count": 0})
    today_wib = datetime.now(WIB).strftime("%Y-%m-%d")
    if menu_state.get("date") != today_wib:
        menu_state = {"date": today_wib, "count": 0}

    is_menu = False
    diskusi_idx = None
    if menu_state.get("count", 0) < MENU_MIN_DAILY:
        print(f"   🍽️  Desain menu wajib tayang ({menu_state['count']}/{MENU_MIN_DAILY} hari ini) — pilih konten MENU")
        texts, h = build_menu_caption(used)
        series_label = "MENU"
        is_menu = True
        media_path = MENU_IMAGE
    else:
        # Preferensi konten: diskusi gaduh dulu (bikin rame & viral), baru series biasa
        idx_d, h_d = pick_fresh_diskusi(used)
        if idx_d is not None:
            texts = DISKUSI_GADUH[idx_d]
            series_label = f"Diskusi {idx_d+1}"
            diskusi_idx = idx_d + 1
            media_path = None
            print(f"   🗣️  Diskusi gaduh {idx_d+1} of {len(DISKUSI_GADUH)} — bikin rame!")
        else:
            skip_tiktok = tiktok_sudah_dipakai_hari_ini(used)
            idx, h = pick_fresh_series(used, skip_tiktok=skip_tiktok)
            if skip_tiktok:
                print("   🚫 TikTok sudah dipakai hari ini — pilih konten puisi/nostalgia")
            if idx is None:
                print("   ⚠️  Semua series sudah terpakai — perlu tambah konten baru. Selesai.")
                return
            texts = CONTENT_SERIES[idx]
            series_label = f"Series {idx+1}"
            print(f"   📌 Series {idx+1} of {len(CONTENT_SERIES)}")
            media_path = os.path.join(ROOT, "soto_ig_zip", "2.png") if 21 <= (idx + 1) <= 40 else None

    # 3. Validasi (maks 500 karakter) + pastikan ajakan mampir + sisip kata kunci malam
    validated = []
    for i, t in enumerate(texts):
        # Post terakhir (info warung) → pastikan ADA ajakan MAMPIR (aturan Bos 21/08)
        if i == len(texts) - 1 and "mampir" not in t.lower():
            ajakan = random.choice([
                "Yuk mampir — soto hangatnya udah siap! 😊\n\n",
                "Mampir yuk, kami tunggu di warung! 🍜\n\n",
                "Ayo mampir, buktiin sendiri rasanya! 😄\n\n",
                "Jangan cuma lihat — mampir cobain! 🥣\n\n",
            ])
            if "📍" in t:
                t = t.replace("📍", ajakan + "📍", 1)
            else:
                t = ajakan + t
        # Slot malam: sisip kata kunci kulineran malam / nasi goreng / kuliner murah (Bos 22/08)
        if i == len(texts) - 1:
            t = sisip_keyword_malam(t, slot_hour)
        ok = enforce_max_chars(t, maxlen=500)
        if ok is None:
            log(f"SKIP: {series_label} post {i+1} gagal validasi")
            return
        validated.append(ok)

    # 4. Kirim nested — post 1 pakai media (desain menu / gambar 2.png romansa)
    try:
        ids = post_nested(validated, slot_hour, media_path=media_path)
    except Exception as e:
        log(f"❌ Gagal posting: {str(e)[:150]}")
        return

    # 5. Tracker anti duplikasi + state menu harian
    import hashlib
    if not is_menu:
        h = hashlib.md5(texts[0][:80].encode()).hexdigest()
    if is_menu:
        used[h] = {"series": "MENU", "posted": datetime.now(WIB).strftime("%Y-%m-%d %H:%M"), "slot": slot_wib}
        menu_state["count"] += 1
        save_json(MENU_STATE_FILE, menu_state)
        log(f"💾 Desain menu ditandai ({menu_state['count']}/{MENU_MIN_DAILY} hari ini, slot {slot_wib})")
    else:
        if diskusi_idx is not None:
            used[h] = {"series": f"DISKUSI-{diskusi_idx}", "posted": datetime.now(WIB).strftime("%Y-%m-%d %H:%M"), "slot": slot_wib}
            log(f"💾 Diskusi gaduh {diskusi_idx} ditandai sudah terpakai (slot {slot_wib})")
        else:
            used[h] = {"series": idx + 1, "posted": datetime.now(WIB).strftime("%Y-%m-%d %H:%M"), "slot": slot_wib}
            log(f"💾 Series {idx+1} ditandai sudah terpakai (slot {slot_wib})")
    save_json(TRACK_FILE, used)

    print("=" * 60)
    print("✅ Selesai — Nested 3 post terkirim ke slot", slot_wib, "WIB")
    print("=" * 60)


if __name__ == "__main__":
    main()
