'; echo ''; echo ''; for($i=0;$i<$max;$i++){ echo ''; foreach([$h1,$h2,$h3] as $col){ $item = $col[$i] ?? null; if($item){ echo ''; }else{ echo ''; } } if($i == 0){ echo ''; } echo ''; } echo '
Top 1 Top 2 Top 3 Custom Outline
'.$item['tag'].' '.esc_html($item['text']).'
'; echo ''; echo ''; wp_die(); } /* ===== SERP ===== */ function ai_get_top3_results($keyword){ $key = get_option('ai_seo_serp_key'); if(empty($key)) return []; $url = 'https://serpapi.com/search.json?q='.urlencode($keyword).'&num=10&api_key='.$key; $response = wp_remote_get($url); if(is_wp_error($response)) return []; $body = json_decode(wp_remote_retrieve_body($response),true); $results = []; if(!empty($body['organic_results'])){ foreach($body['organic_results'] as $item){ $link = $item['link']; if(strpos($link,'shopee') !== false) continue; if(strpos($link,'lazada') !== false) continue; $results[] = $link; if(count($results) == 3) break; } } return $results; } /* ===== HEADER EXTRACT ===== */ function ai_extract_headers($url){ if(empty($url)) return []; $response = wp_remote_get($url); if(is_wp_error($response)) return []; $html = wp_remote_retrieve_body($response); libxml_use_internal_errors(true); $dom = new DOMDocument(); if(!$dom->loadHTML($html)) return []; $xpath = new DOMXPath($dom); $headers = []; foreach(['h1','h2','h3'] as $tag){ $nodes = $xpath->query("//$tag"); foreach($nodes as $node){ $text = trim($node->nodeValue); if(!empty($text)){ $headers[] = [ 'tag'=>strtoupper($tag), 'text'=>$text ]; } } } return $headers; }$keyword, 'post_content'=>$content, 'post_status'=>'draft', 'post_type'=>$post_type, 'post_author'=>get_current_user_id() ]); echo "

✅ Draft đã tạo

"; echo "Mở bài viết"; echo ""; wp_die(); } /* ===== GEMINI API ===== */ function ai_call_gemini($prompt){ $key = get_option('ai_seo_gemini_key'); if(empty($key)) return "❌ Chưa cấu hình Gemini API key"; $url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=".$key; $body = [ "contents"=>[ [ "parts"=>[ ["text"=>$prompt] ] ] ] ]; $response = wp_remote_post($url,[ 'headers'=>[ 'Content-Type'=>'application/json' ], 'body'=>json_encode($body), 'timeout'=>60 ]); if(is_wp_error($response)){ return "❌ Lỗi kết nối Gemini"; } $data = json_decode(wp_remote_retrieve_body($response),true); if(empty($data['candidates'][0]['content']['parts'][0]['text'])){ return "❌ Gemini không trả dữ liệu"; } return $data['candidates'][0]['content']['parts'][0]['text']; }