add_action('init', function() { $rss_url = "https://www.ansa.it/sito/ansait_rss.xml"; $openai_api_key = "INSERISCI_LA_TUA_API_KEY"; // 🔑 error_log("NewsBot: inizio test OpenAI"); // 1. Recupera RSS $response = wp_remote_get($rss_url); if (is_wp_error($response)) { error_log("NewsBot: errore RSS -> " . $response->get_error_message()); return; } $body = wp_remote_retrieve_body($response); $rss = simplexml_load_string($body); if (!$rss) { error_log("NewsBot: impossibile parsare RSS"); return; } $items = $rss->channel->item; if (count($items) == 0) { error_log("NewsBot: nessun articolo trovato"); return; } $titolo = (string)$items[0]->title; $descrizione = strip_tags((string)$items[0]->description); error_log("NewsBot: primo titolo = $titolo"); // 2. Chiamata OpenAI $api_url = "https://api.openai.com/v1/chat/completions"; $headers = [ "Content-Type" => "application/json", "Authorization" => "Bearer $openai_api_key" ]; $payload = [ "model" => "gpt-4o-mini", "messages" => [ ["role" => "system", "content" => "Riscrivi la notizia in italiano, stile giornalistico, massimo 200 parole."], ["role" => "user", "content" => $descrizione] ] ]; error_log("NewsBot: invio richiesta a OpenAI"); $res = wp_remote_post($api_url, [ "headers" => $headers, "body" => json_encode($payload), "timeout" => 30 ]); if (is_wp_error($res)) { error_log("NewsBot: errore OpenAI (cURL) -> " . $res->get_error_message()); return; } $status = wp_remote_retrieve_response_code($res); $resp_body = wp_remote_retrieve_body($res); error_log("NewsBot: HTTP code da OpenAI = $status"); error_log("NewsBot: corpo risposta (primi 500 caratteri) = " . substr($resp_body, 0, 500)); if ($status !== 200) { error_log("NewsBot: risposta non valida da OpenAI ($status)"); return; } $json = json_decode($resp_body, true); if (!$json) { error_log("NewsBot: impossibile decodificare JSON"); return; } $articolo = $json["choices"][0]["message"]["content"] ?? null; if ($articolo) { error_log("NewsBot: articolo riscritto = " . substr($articolo, 0, 200) . "..."); } else { error_log("NewsBot: nessun contenuto riscritto ricevuto"); } error_log("NewsBot: fine test OpenAI"); });