#!/usr/bin/env python3
"""Posting LinkedIn Uky Yanuhandoko hari ini — tema AI + link artikel studiosoft.id (belum pernah di-share)."""
import sys, json, urllib.request
from datetime import datetime, timedelta, timezone

sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

WIB = timezone(timedelta(hours=7))
LI_UKY = "6a33ca10c5ff4ce3a322705d"
SLOTS = [5, 8, 11, 14, 17, 20, 23]

ARTIKEL = {
    "judul": "Bagaimana AI Mengubah Algoritma Google dan Strategi SEO Anda?",
    "url": "https://studiosoft.id/bagaimana-ai-mengubah-algoritma-google-dan-strategi-seo-anda",
}

CAP = (
    "AI sedang mengubah cara Google bekerja — dan banyak strategi SEO lama mulai tidak relevan. 🧠\n\n"
    "Google kini lebih paham maksud pengguna, bukan sekadar mencocokkan kata kunci. Konten yang menjawab pertanyaan dengan jelas, terstruktur, dan punya otoritas — itulah yang menang. AI Overview juga mengubah cara orang menemukan jawaban: dari daftar link, menjadi ringkasan langsung.\n\n"
    "Artinya, strategi kita harus beradaptasi: fokus pada maksud pencarian, struktur konten yang rapi, dan data terstruktur. Bukan sekadar mengejar keyword density.\n\n"
    "Saya tulis panduan lengkapnya di artikel ini — lengkap dengan langkah praktisnya 👇\n" + ARTIKEL["url"] + "\n\n"
    "Menurut Anda, apakah AI membuat SEO lebih mudah atau justru lebih sulit? Silakan diskusi di kolom komentar! 👇\n\n"
    "#AI #SEO #DigitalMarketing #Google #StudioSoft #ArtificialIntelligence"
)

def get_pending():
    pend = []
    for p in range(1, 60):
        raw = urllib.request.Request(f"{BASE}/public/schedule?page={p}&limit=100", headers=HEADERS)
        with urllib.request.urlopen(raw, timeout=30) as r:
            docs = json.load(r)["docs"]
        for d in docs:
            if d.get("accountId") == LI_UKY and (d.get("status") or "").lower() == "pending":
                pend.append(d)
    return pend

def next_free_slot(pend, start):
    day = start
    for _ in range(14):
        taken = {(d.get("scheduleAt") or "")[:13] for d in pend}
        for h in SLOTS:
            utc_h = day.replace(hour=h, minute=0, tzinfo=WIB).astimezone(timezone.utc).strftime("%Y-%m-%dT%H")
            if utc_h not in taken:
                return day, h
        day += timedelta(days=1)
    return None, None

pend = get_pending()
day, hour = next_free_slot(pend, datetime.now(WIB).replace(minute=0, second=0, microsecond=0))
at = day.replace(hour=hour, minute=0, tzinfo=WIB).astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.000Z")
payload = {
    "accountId": LI_UKY,
    "title": f"Uky Yanuhandoko — {ARTIKEL['judul'][:45]}",
    "description": CAP,
    "topic": "AI & SEO",
    "type": "text",
    "medias": [],
    "scheduleAt": at,
    "replies": [
        {"text": "Kuncinya: konten yang benar-benar membantu manusia, bukan sekadar mengejar algoritma. 🤖", "username": ""},
        {"text": "Penasaran bagaimana AI Overview memengaruhi website kamu? Artikel ini menjelaskan lengkap. 📖", "username": ""},
    ],
}
req = urllib.request.Request(f"{BASE}/public/schedule",
                             data=json.dumps(payload).encode(),
                             headers={**HEADERS, "Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=30) as r:
    res = json.load(r)
sid = res.get("_id") or res.get("id") or "?"
print(f"✅ LinkedIn Uky | {day.strftime('%d/%m')} {hour:02d}:00 WIB | {sid}")
print(f"   artikel: {ARTIKEL['judul']}")
