#!/usr/bin/env python3
"""Post to FB StudioSoft about AI Overview / GEO / Search Everywhere."""
import base64
import json
import sys
import urllib.request
import urllib.error
import os

from repliz_client import HEADERS, BASE_URL as BASE


# FB StudioSoft: 6a334952c5ff4ce3a3225941
ACCOUNT_FB = "6a334952c5ff4ce3a3225941"

# Slot: 15:00 WIB = 08:00 UTC
SCHEDULE_AT = "2026-07-25T08:00:00.000Z"


def api_call(method, endpoint, data=None):
    url = f"{BASE_URL}{endpoint}"
    body = json.dumps(data).encode() if data else None
    req = urllib.request.Request(url, data=body, headers=HEADERS, method=method)
    try:
        with urllib.request.urlopen(req) as resp:
            raw = resp.read()
            if resp.status == 204:
                return {"success": True}
            try:
                return json.loads(raw)
            except:
                return {"success": True, "raw": raw[:200]}
    except urllib.error.HTTPError as e:
        body = e.read().decode()
        try:
            return {"error": e.code, "body": json.loads(body)}
        except:
            return {"error": e.code, "body": body[:500]}


def make_nested_post(posts, account_id, schedule_at):
    replies = []
    for text in posts[1:]:
        replies.append({"text": text, "username": ""})
    payload = {
        "title": "",
        "description": posts[0],
        "topic": "AI Overview, GEO, SEO, Search Everywhere",
        "type": "text",
        "medias": [],
        "meta": {
            "title": "Tren SEO 2026: AI Overview dan Search Everywhere Optimization",
            "description": "Pelajari bagaimana AI Overviews mengubah strategi SEO dan pentingnya Search Everywhere Optimization untuk bisnis Anda.",
            "url": "https://studiosoft.id/6-tren-seo-2026-yang-wajib-dikuasai-pebisnis-malang/",
        },
        "additionalInfo": {
            "isAiGenerated": False,
            "isDraft": False,
            "collaborators": [],
            "mentions": [],
            "music": {"id": "", "artist": "", "name": "", "thumbnail": ""},
            "products": [],
            "tags": [],
        },
        "replies": replies,
        "accountId": account_id,
        "scheduleAt": schedule_at,
    }
    return payload


# FB caption: 2 paragraf + hashtags (aturan FB StudioSoft)
fb_main = (
    "Google AI Overviews sekarang muncul di 16% dari seluruh pencarian "
    "naik dari 6,5% setahun lalu. Artinya, jutaan pengguna mendapat "
    "jawaban langsung dari AI tanpa perlu klik ke website.\n\n"
    "Ini bukan kabar buruk buat bisnis yang siap adaptasi. Justru ini "
    "peluang besar untuk memperluas visibilitas lewat Search Everywhere "
    "Optimization strategi muncul tidak hanya di Google, tapi juga "
    "di ChatGPT, YouTube, Reddit, Perplexity, dan platform lain tempat "
    "calon konsumen Anda mencari.\n\n"
    "Neil Patel menyebutnya sebagai evolusi SEO: dari sekadar ranking "
    "keyword menjadi membangun relevance dan trust di seluruh permukaan "
    "digital. Brian Dean dari Backlinko menambahkan: referral dari "
    "AI/LLM naik 800% dalam 3 bulan terakhir.\n\n"
    "Kuncinya ada di tiga hal: konten informatif yang menjawab "
    "pertanyaan langsung, otoritas pihak ketiga (review, forum, "
    "publikasi), dan teknis website yang rapi.\n\n"
    "Baca selengkapnya tentang 6 tren SEO 2026 di artikel kami >"
    "\nhttps://studiosoft.id/6-tren-seo-2026-yang-wajib-dikuasai-pebisnis-malang/\n\n"
    "#SEO2026 #AIOverview #SearchEverywhere #DigitalMarketing #StudioSoft"
)

fb_reply1 = (
    "Apa beda SEO dan GEO?\n\n"
    "SEO (Search Engine Optimization): optimasi untuk muncul di "
    "halaman pencarian Google.\n"
    "GEO (Generative Engine Optimization): optimasi untuk disebut "
    "di jawaban AI seperti ChatGPT, Gemini, Perplexity.\n\n"
    "Keduanya penting dan saling melengkapi. Tapi yang sering "
    "terlewat: AI 6,5x lebih sering mengutip brand dari sumber "
    "pihak ketiga (Reddit, YouTube, review site) daripada "
    "dari website sendiri.\n\n"
    "Jadi bangun reputasi di luar website sama pentingnya "
    "dengan SEO teknis di dalam."
)

fb_reply2 = (
    "3 langkah mulai Search Everywhere Optimization:\n\n"
    "1. Audit di mana audiens Anda mencari (Google, YouTube, "
    "TikTok, ChatGPT, Reddit?)\n\n"
    "2. Optimasi managed experiences: website, Google Business "
    "Profile, channel YouTube, profil sosmed\n\n"
    "3. Bangun influenced experiences: ulasan, guest posting, "
    "konten YouTube, diskusi forum\n\n"
    "Siap mulai? StudioSoft siap bantu bisnis Anda berkembang "
    "di era AI search."
    "\nhttps://studiosoft.id"
)

print("=" * 60)
print("FB STUDIOSOFT - AI OVERVIEW / SEO / GEO")
print("Schedule: 15:00 WIB (08:00 UTC)")
print("=" * 60)

payload = make_nested_post([fb_main, fb_reply1, fb_reply2], ACCOUNT_FB, SCHEDULE_AT)
result = api_call("POST", "/public/schedule", payload)

if "error" in result:
    print(f"ERROR: {result['error']} - {result.get('body', '')}")
    sys.exit(1)
else:
    sid = result.get('scheduleId', 'unknown')
    print(f"SUCCESS! Schedule ID: {sid}")

print("DONE")

