#!/usr/bin/env python3
"""Post Threads AI Overview content to @ukyhandoko & StudioSoft."""
import base64
import json
import sys
import urllib.request
import urllib.error

from repliz_client import HEADERS, BASE_URL as BASE


SCHEDULE_AT = "2026-07-25T07:00:00.000Z"

ACCOUNT_UKY = "6a334e89c5ff4ce3a3225a48"        # @ukyhandoko Threads
ACCOUNT_STUDIOSOFT = "6a335b9ec5ff4ce3a3225c2a" # StudioSoft Threads


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, SEO, GEO, Search Everywhere",
        "type": "text",
        "medias": [],
        "meta": {"title": "", "description": "", "url": ""},
        "additionalInfo": {
            "isAiGenerated": False,
            "isDraft": False,
            "collaborators": [],
            "mentions": [],
            "music": {"id": "", "artist": "", "name": "", "thumbnail": ""},
            "products": [],
            "tags": [],
        },
        "replies": replies,
        "accountId": account_id,
        "scheduleAt": schedule_at,
    }
    return payload


# --- @ukyhandoko content ---
uky_p1 = (
    "AI Overviews udah mengubah cara orang mencari informasi di Google.\n\n"
    "Dulu: cari keyword muncul 10 link biru.\n"
    "Sekarang: AI langsung kasih jawaban tanpa perlu klik.\n\n"
    "Ini yang bikin Search Everywhere Optimization jadi penting.\n\n"
    "Bukan cuma soal ranking di Google. Tapi gimana brand kamu muncul "
    "di ChatGPT, Perplexity, YouTube, Reddit, TikTok di semua tempat "
    "konsumen mencari.\n\n"
    "Data dari SparkToro: 73% search intent masih di Google. "
    "Tapi 27% sisanya tersebar di 40 platform lain. "
    "Dan itu yang paling cepat tumbuh.\n\n"
    "Neil Patel bilang: You need to show up everywhere "
    "your customers are discovering.\n\n"
    "studiosoft.id"
)

uky_p2 = (
    "Generative Engine Optimization (GEO) beda tipis sama SEO.\n\n"
    "SEO = optimasi biar muncul di halaman hasil pencarian Google.\n"
    "GEO = optimasi biar disebut di jawaban AI (ChatGPT, Gemini, Perplexity).\n\n"
    "Bedanya: AI nggak sekadar nampilin link AI menyusun jawaban dari "
    "berbagai sumber. Brand kamu bisa disebut, dikutip, atau bahkan "
    "jadi rekomendasi utama.\n\n"
    "Brian Dean dari Backlinko nemuin: referral dari AI/LLM naik 800% "
    "dalam 3 bulan.\n"
    "Dan Semrush prediksi traffic dari LLM akan overtake Google search "
    "akhir 2027.\n\n"
    "Yang penting: website bukan satu-satunya kunci AI visibility. "
    "Brand kamu 6,5x lebih mungkin dikutip AI lewat sumber pihak ketiga "
    "(Reddit, review site, YouTube) daripada website sendiri."
)

uky_p3 = (
    "3 hal yang perlu kamu lakukan SEKARANG untuk AI Overview:\n\n"
    "1. Buat konten yang menjawab pertanyaan secara langsung "
    "AI suka konten informatif, terstruktur, berbasis data. "
    "FAQ, how-to, listicle.\n\n"
    "2. Bangun citra di luar website "
    "Reddit, YouTube, forum, publikasi industri. "
    "AI mengutip 6,5x lebih sering dari sumber pihak ketiga.\n\n"
    "3. Pastikan website teknisnya rapi "
    "schema markup, page speed, internal linking. "
    "AI crawler juga butuh akses yang baik.\n\n"
    "Google AI Overviews sekarang muncul di 16% pencarian "
    "naik dari 6,5% setahun lalu.\n\n"
    "Search Everywhere Optimization bukan tren. Ini evolusi."
)

# --- StudioSoft content ---
ss_p1 = (
    "Google AI Overviews udah mengubah lanskap digital marketing.\n\n"
    "Data dari Semrush: AI Overviews muncul di 16% dari seluruh "
    "pencarian Google. Naik drastis dari 6,5% di awal 2025.\n\n"
    "Ini artinya: jutaan pencarian per bulan jawabannya langsung "
    "dikasih AI tanpa perlu klik.\n\n"
    "Dampak buat bisnis? Traffic organik bisa turun drastis kalau "
    "cuma andalin SEO tradisional.\n\n"
    "Solusinya: Search Everywhere Optimization.\n\n"
    "SEO bukan cuma soal Google lagi. Tapi soal muncul di ChatGPT, "
    "YouTube, Reddit, Perplexity di semua platform tempat calon "
    "konsumen kamu mencari.\n\n"
    "Yang adaptasi sekarang, yang menang di 2027.\n\n"
    "studiosoft.id"
)

ss_p2 = (
    "Perbedaan SEO vs GEO yang harus kamu paham:\n\n"
    "SEO (Search Engine Optimization)\n"
    "- Target: muncul di halaman Google\n"
    "- Fokus: ranking keyword + backlink\n"
    "- Tools: Google Search Console, Ahrefs\n\n"
    "GEO (Generative Engine Optimization)\n"
    "- Target: disebut di jawaban AI\n"
    "- Fokus: konten informatif + otoritas pihak ketiga\n"
    "- Tools: Brand monitoring, citation tracking\n\n"
    "Keduanya penting dan saling melengkapi.\n\n"
    "Neil Patel: SEO dulu soal ranking. Sekarang soal relevance "
    "dan trust di tiap platform.\n\n"
    "Backlinko: LLM traffic referrals naik 800% YoY. "
    "ChatGPT udah 900 juta weekly users.\n\n"
    "Bisnis yang nggak siap akan ketinggalan."
)

ss_p3 = (
    "Search Everywhere Optimization framework praktis:\n\n"
    "Step 1: Audit di mana audiens kamu mencari\n"
    "Google? YouTube? TikTok? Reddit? ChatGPT?\n"
    "Cek data analytics + riset audiens\n\n"
    "Step 2: Optimasi managed experiences\n"
    "Website (SEO teknis + konten), YouTube channel, "
    "Google Business Profile, sosmed\n\n"
    "Step 3: Bangun influenced experiences\n"
    "Ulasan di Google & marketplace\n"
    "Konten di YouTube, forum (Reddit/Quora)\n"
    "Guest posting di publikasi industri\n\n"
    "Ingat: AI mengutip brand 6,5x lebih sering lewat "
    "sumber pihak ketiga.\n\n"
    "Mau mulai? Hubungi StudioSoft kita siapkan "
    "strategi AI search kamu.\n\n"
    "studiosoft.id"
)

print("=" * 60)
print("THREADS AI OVERVIEW POSTING")
print("Schedule: 14:00 WIB (07:00 UTC)")
print("=" * 60)

# Post @ukyhandoko
print("\n@ukyhandoko:")
uky_payload = make_nested_post([uky_p1, uky_p2, uky_p3], ACCOUNT_UKY, SCHEDULE_AT)
result = api_call("POST", "/public/schedule", uky_payload)
if "error" in result:
    print(f"  ERROR: {result['error']} - {result.get('body', '')}")
else:
    sid = result.get('scheduleId', 'unknown')
    print(f"  SUCCESS! Schedule ID: {sid}")

# Post StudioSoft
print("\nStudioSoft:")
ss_payload = make_nested_post([ss_p1, ss_p2, ss_p3], ACCOUNT_STUDIOSOFT, SCHEDULE_AT)
result2 = api_call("POST", "/public/schedule", ss_payload)
if "error" in result2:
    print(f"  ERROR: {result2['error']} - {result2.get('body', '')}")
else:
    sid2 = result2.get('scheduleId', 'unknown')
    print(f"  SUCCESS! Schedule ID: {sid2}")

print("\n" + "=" * 60)
print("DONE")

