<?php
require_once __DIR__ . '/../config/database.php';

class GPTAPI {
    private $api_key;
    private $api_url = 'https://api.openai.com/v1/chat/completions';
    
    public function __construct($api_key = null) {
        $this->api_key = $api_key ?: $this->getApiKey();
    }
    
    private function getApiKey() {
        $database = new Database();
        $db = $database->getConnection();
        
        $query = "SELECT setting_value FROM system_settings WHERE setting_key = 'gpt_api_key'";
        $stmt = $db->prepare($query);
        $stmt->execute();
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        
        return $result ? $result['setting_value'] : null;
    }
    
    public function generateContent($prompt, $max_tokens = 2000, $temperature = 0.7) {
        if(!$this->api_key) {
            return ['error' => 'API key not configured'];
        }
        
        $data = [
            'model' => 'gpt-3.5-turbo',
            'messages' => [
                [
                    'role' => 'system',
                    'content' => 'You are a professional SEO content writer and digital marketing expert.'
                ],
                [
                    'role' => 'user',
                    'content' => $prompt
                ]
            ],
            'max_tokens' => $max_tokens,
            'temperature' => $temperature
        ];
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->api_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Authorization: Bearer ' . $this->api_key
        ]);
        
        $response = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if($http_code === 200) {
            $result = json_decode($response, true);
            return [
                'success' => true,
                'content' => $result['choices'][0]['message']['content'],
                'usage' => $result['usage']
            ];
        } else {
            return [
                'error' => 'API request failed',
                'http_code' => $http_code,
                'response' => $response
            ];
        }
    }
    
    public function generateSEOAnalysis($website_url, $keywords = []) {
        $prompt = "Analyze the SEO performance of the website: {$website_url}\n\n";
        $prompt .= "Focus on:\n";
        $prompt .= "1. Technical SEO issues\n";
        $prompt .= "2. Content quality and structure\n";
        $prompt .= "3. Keyword optimization opportunities\n";
        $prompt .= "4. Page speed and mobile optimization\n";
        $prompt .= "5. Backlink profile assessment\n\n";
        
        if(!empty($keywords)) {
            $prompt .= "Target keywords: " . implode(', ', $keywords) . "\n\n";
        }
        
        $prompt .= "Provide a comprehensive SEO audit report with actionable recommendations.";
        
        return $this->generateContent($prompt, 3000);
    }
    
    public function generateContentPlan($brand_info, $target_keywords = []) {
        $prompt = "Create a comprehensive content marketing plan for:\n\n";
        $prompt .= "Brand: {$brand_info['name']}\n";
        $prompt .= "Industry: {$brand_info['industry']}\n";
        $prompt .= "Description: {$brand_info['description']}\n\n";
        
        if(!empty($target_keywords)) {
            $prompt .= "Target keywords: " . implode(', ', $target_keywords) . "\n\n";
        }
        
        $prompt .= "Create a 3-month content calendar with:\n";
        $prompt .= "1. Blog post topics and titles\n";
        $prompt .= "2. Content types and formats\n";
        $prompt .= "3. Publishing schedule\n";
        $prompt .= "4. SEO optimization strategies\n";
        $prompt .= "5. Content promotion tactics";
        
        return $this->generateContent($prompt, 4000);
    }
    
    public function generateArticle($topic, $keywords = [], $word_count = 1000) {
        $prompt = "Write a comprehensive, SEO-optimized article about: {$topic}\n\n";
        
        if(!empty($keywords)) {
            $prompt .= "Target keywords: " . implode(', ', $keywords) . "\n";
            $prompt .= "Naturally incorporate these keywords throughout the article.\n\n";
        }
        
        $prompt .= "Requirements:\n";
        $prompt .= "- Word count: approximately {$word_count} words\n";
        $prompt .= "- Include engaging introduction and conclusion\n";
        $prompt .= "- Use proper heading structure (H1, H2, H3)\n";
        $prompt .= "- Include actionable insights and examples\n";
        $prompt .= "- Write in a professional, informative tone\n";
        $prompt .= "- Optimize for search engines while maintaining readability";
        
        return $this->generateContent($prompt, $word_count * 2);
    }
}
?>

    public function generateTitles($context) {
        $prompt = "請為以下內容計畫生成{$context['count']}個吸引人的文章標題：\n\n";
        $prompt .= "計畫標題：{$context['plan_title']}\n";
        
        if (!empty($context['brand_name'])) {
            $prompt .= "品牌名稱：{$context['brand_name']}\n";
        }
        
        if (!empty($context['target_keywords'])) {
            $prompt .= "目標關鍵字：{$context['target_keywords']}\n";
        }
        
        $prompt .= "內容類型：{$context['content_type']}\n";
        $prompt .= "語調：{$context['tone']}\n\n";
        
        $prompt .= "標題要求：\n";
        $prompt .= "1. 長度控制在50-60字元內\n";
        $prompt .= "2. 包含主要關鍵字\n";
        $prompt .= "3. 具有吸引力和點擊誘因\n";
        $prompt .= "4. 符合{$context['tone']}語調\n";
        $prompt .= "5. 適合{$context['content_type']}內容類型\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"titles\": [\n";
        $prompt .= "    {\n";
        $prompt .= "      \"title\": \"標題1\",\n";
        $prompt .= "      \"type\": \"標題類型\",\n";
        $prompt .= "      \"reason\": \"推薦原因\"\n";
        $prompt .= "    }\n";
        $prompt .= "  ]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 500,
            'temperature' => 0.8
        ]);
    }
    
    public function analyzeTitle($title, $keywords = '') {
        $prompt = "請分析以下文章標題的SEO效果和吸引力：\n\n";
        $prompt .= "標題：{$title}\n";
        
        if (!empty($keywords)) {
            $prompt .= "目標關鍵字：{$keywords}\n";
        }
        
        $prompt .= "\n請從以下角度分析：\n";
        $prompt .= "1. SEO優化程度（關鍵字密度、位置）\n";
        $prompt .= "2. 吸引力（是否吸引點擊）\n";
        $prompt .= "3. 長度適宜性（建議50-60字元）\n";
        $prompt .= "4. 情感觸發（是否引起情感共鳴）\n";
        $prompt .= "5. 改進建議\n\n";
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"seo_score\": 分數(1-10),\n";
        $prompt .= "  \"attractiveness_score\": 分數(1-10),\n";
        $prompt .= "  \"length_score\": 分數(1-10),\n";
        $prompt .= "  \"emotion_score\": 分數(1-10),\n";
        $prompt .= "  \"overall_score\": 總分(1-10),\n";
        $prompt .= "  \"analysis\": \"詳細分析\",\n";
        $prompt .= "  \"suggestions\": [\"建議1\", \"建議2\", \"建議3\"]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 300,
            'temperature' => 0.3
        ]);
    }
    
    public function optimizeTitle($title, $keywords = '', $target_length = 60, $tone = 'professional') {
        $prompt = "請優化以下文章標題：\n\n";
        $prompt .= "原始標題：{$title}\n";
        
        if (!empty($keywords)) {
            $prompt .= "目標關鍵字：{$keywords}\n";
        }
        
        $prompt .= "目標長度：{$target_length}字元\n";
        $prompt .= "語調：{$tone}\n\n";
        $prompt .= "優化要求：\n";
        $prompt .= "1. 保持原意不變\n";
        $prompt .= "2. 優化SEO效果\n";
        $prompt .= "3. 增強吸引力\n";
        $prompt .= "4. 控制長度在目標範圍內\n";
        $prompt .= "5. 符合指定語調\n\n";
        $prompt .= "請提供3個優化版本，以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"optimized_titles\": [\n";
        $prompt .= "    {\n";
        $prompt .= "      \"title\": \"優化標題1\",\n";
        $prompt .= "      \"reason\": \"優化原因\"\n";
        $prompt .= "    }\n";
        $prompt .= "  ]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 400,
            'temperature' => 0.7
        ]);
    }

    public function generateContent($context) {
        $prompt = "請根據以下要求生成一篇完整的文章內容：\n\n";
        $prompt .= "標題：{$context['title']}\n";
        
        if (!empty($context['brand_name'])) {
            $prompt .= "品牌名稱：{$context['brand_name']}\n";
        }
        
        if (!empty($context['target_keywords'])) {
            $prompt .= "目標關鍵字：{$context['target_keywords']}\n";
        }
        
        $prompt .= "內容類型：{$context['content_type']}\n";
        $prompt .= "語調：{$context['tone']}\n";
        $prompt .= "長度：{$context['length']}\n";
        
        if (!empty($context['target_audience'])) {
            $prompt .= "目標受眾：{$context['target_audience']}\n";
        }
        
        if (!empty($context['plan_description'])) {
            $prompt .= "計畫描述：{$context['plan_description']}\n";
        }
        
        $prompt .= "\n文章要求：\n";
        $prompt .= "1. 結構清晰，包含引言、主體、結論\n";
        $prompt .= "2. 自然融入關鍵字，避免關鍵字堆砌\n";
        $prompt .= "3. 符合{$context['tone']}語調\n";
        $prompt .= "4. 適合{$context['content_type']}內容類型\n";
        
        // 根據長度設定字數要求
        switch ($context['length']) {
            case 'short':
                $prompt .= "5. 字數控制在500-800字\n";
                break;
            case 'medium':
                $prompt .= "5. 字數控制在1000-1500字\n";
                break;
            case 'long':
                $prompt .= "5. 字數控制在2000-3000字\n";
                break;
            default:
                $prompt .= "5. 字數控制在1000-1500字\n";
        }
        
        $prompt .= "6. 使用HTML標籤格式化內容\n";
        $prompt .= "7. 包含適當的標題層級（h2, h3等）\n";
        $prompt .= "8. 提供實用的資訊和價值\n\n";
        $prompt .= "請直接生成完整的文章內容，使用HTML格式：";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 2000,
            'temperature' => 0.7
        ]);
    }
    
    public function generateOutline($title, $keywords = '', $content_type = 'blog', $length = 'medium') {
        $prompt = "請為以下文章生成詳細的大綱：\n\n";
        $prompt .= "標題：{$title}\n";
        
        if (!empty($keywords)) {
            $prompt .= "關鍵字：{$keywords}\n";
        }
        
        $prompt .= "內容類型：{$content_type}\n";
        $prompt .= "長度：{$length}\n\n";
        
        $prompt .= "大綱要求：\n";
        $prompt .= "1. 包含引言、主體、結論三個主要部分\n";
        $prompt .= "2. 主體部分至少包含3-5個章節\n";
        $prompt .= "3. 每個章節要有明確的主題\n";
        $prompt .= "4. 自然融入關鍵字\n";
        $prompt .= "5. 結構邏輯清晰\n\n";
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"outline\": [\n";
        $prompt .= "    {\n";
        $prompt .= "      \"section\": \"引言\",\n";
        $prompt .= "      \"title\": \"章節標題\",\n";
        $prompt .= "      \"description\": \"章節描述\",\n";
        $prompt .= "      \"keywords\": [\"關鍵字1\", \"關鍵字2\"]\n";
        $prompt .= "    }\n";
        $prompt .= "  ]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 800,
            'temperature' => 0.6
        ]);
    }
    
    public function expandSection($section_title, $section_content = '', $keywords = '', $tone = 'professional', $length = 'medium') {
        $prompt = "請擴展以下章節內容：\n\n";
        $prompt .= "章節標題：{$section_title}\n";
        
        if (!empty($section_content)) {
            $prompt .= "現有內容：{$section_content}\n";
        }
        
        if (!empty($keywords)) {
            $prompt .= "關鍵字：{$keywords}\n";
        }
        
        $prompt .= "語調：{$tone}\n";
        $prompt .= "長度：{$length}\n\n";
        
        $prompt .= "擴展要求：\n";
        $prompt .= "1. 提供詳細的內容和解釋\n";
        $prompt .= "2. 包含實用的例子或案例\n";
        $prompt .= "3. 自然融入關鍵字\n";
        $prompt .= "4. 符合{$tone}語調\n";
        $prompt .= "5. 使用HTML標籤格式化\n";
        $prompt .= "6. 內容要有價值和實用性\n\n";
        $prompt .= "請直接生成擴展後的章節內容：";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 1000,
            'temperature' => 0.7
        ]);
    }
    
    public function optimizeContent($content, $keywords = '', $target_audience = '', $seo_focus = true) {
        $prompt = "請優化以下文章內容：\n\n";
        $prompt .= "原始內容：\n{$content}\n\n";
        
        if (!empty($keywords)) {
            $prompt .= "目標關鍵字：{$keywords}\n";
        }
        
        if (!empty($target_audience)) {
            $prompt .= "目標受眾：{$target_audience}\n";
        }
        
        $prompt .= "SEO優化：{$seo_focus ? '是' : '否'}\n\n";
        
        $prompt .= "優化要求：\n";
        $prompt .= "1. 改善內容結構和可讀性\n";
        $prompt .= "2. 優化關鍵字密度和分佈\n";
        $prompt .= "3. 增強內容的吸引力和價值\n";
        $prompt .= "4. 保持原有信息的完整性\n";
        $prompt .= "5. 使用HTML標籤格式化\n";
        
        if ($seo_focus) {
            $prompt .= "6. 特別注意SEO優化\n";
        }
        
        $prompt .= "\n請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"optimized_content\": \"優化後的內容\",\n";
        $prompt .= "  \"improvements\": [\"改進點1\", \"改進點2\"],\n";
        $prompt .= "  \"seo_score\": 分數(1-10),\n";
        $prompt .= "  \"readability_score\": 分數(1-10)\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 1500,
            'temperature' => 0.5
        ]);
    }
    
    public function generateIntro($title, $keywords = '', $tone = 'professional', $hook_type = 'question') {
        $prompt = "請為以下文章生成吸引人的引言：\n\n";
        $prompt .= "標題：{$title}\n";
        
        if (!empty($keywords)) {
            $prompt .= "關鍵字：{$keywords}\n";
        }
        
        $prompt .= "語調：{$tone}\n";
        $prompt .= "開頭類型：{$hook_type}\n\n";
        
        $prompt .= "引言要求：\n";
        $prompt .= "1. 吸引讀者注意\n";
        $prompt .= "2. 自然融入關鍵字\n";
        $prompt .= "3. 符合{$tone}語調\n";
        $prompt .= "4. 使用{$hook_type}開頭方式\n";
        $prompt .= "5. 簡潔有力，不超過200字\n";
        $prompt .= "6. 為後續內容做鋪墊\n\n";
        $prompt .= "請直接生成引言內容：";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 300,
            'temperature' => 0.8
        ]);
    }
    
    public function generateConclusion($title, $content_summary = '', $keywords = '', $tone = 'professional', $call_to_action = '') {
        $prompt = "請為以下文章生成有力的結論：\n\n";
        $prompt .= "標題：{$title}\n";
        
        if (!empty($content_summary)) {
            $prompt .= "內容摘要：{$content_summary}\n";
        }
        
        if (!empty($keywords)) {
            $prompt .= "關鍵字：{$keywords}\n";
        }
        
        $prompt .= "語調：{$tone}\n";
        
        if (!empty($call_to_action)) {
            $prompt .= "行動呼籲：{$call_to_action}\n";
        }
        
        $prompt .= "\n結論要求：\n";
        $prompt .= "1. 總結主要觀點\n";
        $prompt .= "2. 自然融入關鍵字\n";
        $prompt .= "3. 符合{$tone}語調\n";
        $prompt .= "4. 提供價值和啟發\n";
        $prompt .= "5. 簡潔有力，不超過200字\n";
        
        if (!empty($call_to_action)) {
            $prompt .= "6. 包含行動呼籲\n";
        }
        
        $prompt .= "\n請直接生成結論內容：";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 300,
            'temperature' => 0.7
        ]);
    }

    public function analyzeContentSEO($content, $title = '', $keywords = '', $url = '') {
        $prompt = "請分析以下內容的SEO效果：\n\n";
        
        if (!empty($title)) {
            $prompt .= "標題：{$title}\n";
        }
        
        if (!empty($url)) {
            $prompt .= "網址：{$url}\n";
        }
        
        if (!empty($keywords)) {
            $prompt .= "目標關鍵字：{$keywords}\n";
        }
        
        $prompt .= "內容：\n{$content}\n\n";
        
        $prompt .= "請從以下角度進行分析：\n";
        $prompt .= "1. 關鍵字密度和分佈\n";
        $prompt .= "2. 內容結構和可讀性\n";
        $prompt .= "3. 標題標籤優化\n";
        $prompt .= "4. 內部連結建議\n";
        $prompt .= "5. 圖片優化建議\n";
        $prompt .= "6. 技術SEO檢查\n";
        $prompt .= "7. 用戶體驗評估\n";
        $prompt .= "8. 競爭力分析\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"overall_score\": 總分(1-100),\n";
        $prompt .= "  \"keyword_analysis\": {\n";
        $prompt .= "    \"density\": 關鍵字密度(%),\n";
        $prompt .= "    \"distribution\": \"分佈評估\",\n";
        $prompt .= "    \"relevance\": 相關性分數(1-10)\n";
        $prompt .= "  },\n";
        $prompt .= "  \"content_analysis\": {\n";
        $prompt .= "    \"readability\": 可讀性分數(1-10),\n";
        $prompt .= "    \"structure\": \"結構評估\",\n";
        $prompt .= "    \"length\": 內容長度評估\n";
        $prompt .= "  },\n";
        $prompt .= "  \"technical_seo\": {\n";
        $prompt .= "    \"title_optimization\": 標題優化分數(1-10),\n";
        $prompt .= "    \"meta_description\": Meta描述評估,\n";
        $prompt .= "    \"heading_structure\": 標題結構評估\n";
        $prompt .= "  },\n";
        $prompt .= "  \"improvements\": [\"建議1\", \"建議2\", \"建議3\"],\n";
        $prompt .= "  \"strengths\": [\"優點1\", \"優點2\"],\n";
        $prompt .= "  \"weaknesses\": [\"缺點1\", \"缺點2\"]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 1000,
            'temperature' => 0.3
        ]);
    }
    
    public function optimizeContentSEO($content, $title = '', $keywords = '', $target_audience = '', $optimization_goals = []) {
        $prompt = "請優化以下內容的SEO效果：\n\n";
        
        if (!empty($title)) {
            $prompt .= "標題：{$title}\n";
        }
        
        if (!empty($keywords)) {
            $prompt .= "目標關鍵字：{$keywords}\n";
        }
        
        if (!empty($target_audience)) {
            $prompt .= "目標受眾：{$target_audience}\n";
        }
        
        if (!empty($optimization_goals)) {
            $prompt .= "優化目標：" . implode(', ', $optimization_goals) . "\n";
        }
        
        $prompt .= "原始內容：\n{$content}\n\n";
        
        $prompt .= "優化要求：\n";
        $prompt .= "1. 改善關鍵字密度和分佈\n";
        $prompt .= "2. 優化內容結構和可讀性\n";
        $prompt .= "3. 增強標題和副標題\n";
        $prompt .= "4. 添加相關關鍵字\n";
        $prompt .= "5. 改善段落結構\n";
        $prompt .= "6. 保持內容的原始價值\n";
        $prompt .= "7. 確保內容自然流暢\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"optimized_content\": \"優化後的內容\",\n";
        $prompt .= "  \"optimization_summary\": \"優化摘要\",\n";
        $prompt .= "  \"changes_made\": [\"變更1\", \"變更2\"],\n";
        $prompt .= "  \"seo_score_improvement\": 分數提升,\n";
        $prompt .= "  \"keyword_improvements\": [\"關鍵字改進1\", \"關鍵字改進2\"],\n";
        $prompt .= "  \"structure_improvements\": [\"結構改進1\", \"結構改進2\"]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 1500,
            'temperature' => 0.5
        ]);
    }
    
    public function generateMetaTags($title, $content = '', $keywords = '', $brand_name = '') {
        $prompt = "請為以下內容生成SEO優化的Meta標籤：\n\n";
        
        if (!empty($title)) {
            $prompt .= "標題：{$title}\n";
        }
        
        if (!empty($content)) {
            $prompt .= "內容摘要：{$content}\n";
        }
        
        if (!empty($keywords)) {
            $prompt .= "關鍵字：{$keywords}\n";
        }
        
        if (!empty($brand_name)) {
            $prompt .= "品牌名稱：{$brand_name}\n";
        }
        
        $prompt .= "\n請生成以下Meta標籤：\n";
        $prompt .= "1. Title標籤（50-60字元）\n";
        $prompt .= "2. Meta Description（150-160字元）\n";
        $prompt .= "3. Meta Keywords（相關關鍵字）\n";
        $prompt .= "4. Open Graph標籤\n";
        $prompt .= "5. Twitter Card標籤\n";
        $prompt .= "6. 結構化數據建議\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"title_tag\": \"優化的Title標籤\",\n";
        $prompt .= "  \"meta_description\": \"Meta描述\",\n";
        $prompt .= "  \"meta_keywords\": \"關鍵字列表\",\n";
        $prompt .= "  \"open_graph\": {\n";
        $prompt .= "    \"og:title\": \"OG標題\",\n";
        $prompt .= "    \"og:description\": \"OG描述\",\n";
        $prompt .= "    \"og:type\": \"website\"\n";
        $prompt .= "  },\n";
        $prompt .= "  \"twitter_card\": {\n";
        $prompt .= "    \"twitter:title\": \"Twitter標題\",\n";
        $prompt .= "    \"twitter:description\": \"Twitter描述\"\n";
        $prompt .= "  },\n";
        $prompt .= "  \"structured_data\": \"結構化數據建議\"\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 800,
            'temperature' => 0.4
        ]);
    }
    
    public function analyzeKeywordDensity($content, $target_keywords = '', $competitor_urls = []) {
        $prompt = "請分析以下內容的關鍵字密度：\n\n";
        $prompt .= "內容：\n{$content}\n\n";
        
        if (!empty($target_keywords)) {
            $prompt .= "目標關鍵字：{$target_keywords}\n";
        }
        
        if (!empty($competitor_urls)) {
            $prompt .= "競爭對手網址：" . implode(', ', $competitor_urls) . "\n";
        }
        
        $prompt .= "\n請分析：\n";
        $prompt .= "1. 主要關鍵字密度\n";
        $prompt .= "2. 長尾關鍵字分佈\n";
        $prompt .= "3. 關鍵字位置分析\n";
        $prompt .= "4. 相關關鍵字建議\n";
        $prompt .= "5. 競爭對手關鍵字對比\n";
        $prompt .= "6. 關鍵字優化建議\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"keyword_density\": {\n";
        $prompt .= "    \"primary_keyword\": {\n";
        $prompt .= "      \"keyword\": \"主要關鍵字\",\n";
        $prompt .= "      \"density\": 密度(%),\n";
        $prompt .= "      \"count\": 出現次數\n";
        $prompt .= "    },\n";
        $prompt .= "    \"secondary_keywords\": [\n";
        $prompt .= "      {\"keyword\": \"關鍵字\", \"density\": 密度, \"count\": 次數}\n";
        $prompt .= "    ]\n";
        $prompt .= "  },\n";
        $prompt .= "  \"keyword_analysis\": {\n";
        $prompt .= "    \"optimal_density\": \"建議密度\",\n";
        $prompt .= "    \"distribution_score\": 分佈分數(1-10),\n";
        $prompt .= "    \"position_score\": 位置分數(1-10)\n";
        $prompt .= "  },\n";
        $prompt .= "  \"suggestions\": [\"建議1\", \"建議2\"],\n";
        $prompt .= "  \"related_keywords\": [\"相關關鍵字1\", \"相關關鍵字2\"]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 800,
            'temperature' => 0.3
        ]);
    }
    
    public function suggestSEOImprovements($content, $title = '', $keywords = '', $current_ranking = 0, $target_ranking = 1) {
        $prompt = "請為以下內容提供SEO改進建議：\n\n";
        
        if (!empty($title)) {
            $prompt .= "標題：{$title}\n";
        }
        
        if (!empty($keywords)) {
            $prompt .= "關鍵字：{$keywords}\n";
        }
        
        $prompt .= "目前排名：{$current_ranking}\n";
        $prompt .= "目標排名：{$target_ranking}\n";
        $prompt .= "內容：\n{$content}\n\n";
        
        $prompt .= "請提供具體的改進建議：\n";
        $prompt .= "1. 內容優化建議\n";
        $prompt .= "2. 關鍵字優化建議\n";
        $prompt .= "3. 技術SEO建議\n";
        $prompt .= "4. 用戶體驗改進\n";
        $prompt .= "5. 競爭對手分析\n";
        $prompt .= "6. 排名提升策略\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"priority_improvements\": [\n";
        $prompt .= "    {\n";
        $prompt .= "      \"category\": \"類別\",\n";
        $prompt .= "      \"suggestion\": \"建議\",\n";
        $prompt .= "      \"impact\": \"影響程度\",\n";
        $prompt .= "      \"difficulty\": \"實施難度\"\n";
        $prompt .= "    }\n";
        $prompt .= "  ],\n";
        $prompt .= "  \"quick_wins\": [\"快速改進1\", \"快速改進2\"],\n";
        $prompt .= "  \"long_term_strategy\": [\"長期策略1\", \"長期策略2\"],\n";
        $prompt .= "  \"expected_improvement\": \"預期改進效果\"\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 1000,
            'temperature' => 0.4
        ]);
    }
    
    public function checkTechnicalSEO($url = '', $content = '') {
        $prompt = "請檢查以下內容的技術SEO：\n\n";
        
        if (!empty($url)) {
            $prompt .= "網址：{$url}\n";
        }
        
        if (!empty($content)) {
            $prompt .= "內容：\n{$content}\n";
        }
        
        $prompt .= "\n請檢查以下技術SEO要素：\n";
        $prompt .= "1. 頁面載入速度\n";
        $prompt .= "2. 移動端友好性\n";
        $prompt .= "3. 標題標籤優化\n";
        $prompt .= "4. Meta標籤完整性\n";
        $prompt .= "5. 圖片優化\n";
        $prompt .= "6. 內部連結結構\n";
        $prompt .= "7. URL結構\n";
        $prompt .= "8. 結構化數據\n";
        $prompt .= "9. 安全性檢查\n";
        $prompt .= "10. 可訪問性\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"technical_score\": 技術SEO分數(1-100),\n";
        $prompt .= "  \"checks\": [\n";
        $prompt .= "    {\n";
        $prompt .= "      \"element\": \"檢查項目\",\n";
        $prompt .= "      \"status\": \"通過/失敗/警告\",\n";
        $prompt .= "      \"score\": 分數(1-10),\n";
        $prompt .= "      \"suggestion\": \"建議\"\n";
        $prompt .= "    }\n";
        $prompt .= "  ],\n";
        $prompt .= "  \"critical_issues\": [\"關鍵問題1\", \"關鍵問題2\"],\n";
        $prompt .= "  \"recommendations\": [\"建議1\", \"建議2\"]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 1000,
            'temperature' => 0.3
        ]);
    }
    
    public function generateSitemap($urls) {
        $prompt = "請為以下網址生成XML Sitemap：\n\n";
        $prompt .= "網址列表：\n" . implode("\n", $urls) . "\n\n";
        
        $prompt .= "請生成完整的XML Sitemap，包含：\n";
        $prompt .= "1. XML聲明和命名空間\n";
        $prompt .= "2. 每個URL的完整標籤\n";
        $prompt .= "3. 最後修改時間\n";
        $prompt .= "4. 變更頻率\n";
        $prompt .= "5. 優先級設定\n\n";
        
        $prompt .= "請直接返回XML格式的Sitemap：";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 2000,
            'temperature' => 0.2
        ]);
    }
    
    public function analyzeCompetitorSEO($target_keywords, $competitor_urls = [], $brand_id = '') {
        $prompt = "請分析競爭對手的SEO策略：\n\n";
        $prompt .= "目標關鍵字：{$target_keywords}\n";
        
        if (!empty($competitor_urls)) {
            $prompt .= "競爭對手網址：" . implode(', ', $competitor_urls) . "\n";
        }
        
        $prompt .= "\n請分析：\n";
        $prompt .= "1. 關鍵字策略分析\n";
        $prompt .= "2. 內容策略對比\n";
        $prompt .= "3. 技術SEO比較\n";
        $prompt .= "4. 反向連結分析\n";
        $prompt .= "5. 社交媒體策略\n";
        $prompt .= "6. 競爭優勢識別\n";
        $prompt .= "7. 改進機會發現\n\n";
        
        $prompt .= "請以JSON格式回應：\n";
        $prompt .= "{\n";
        $prompt .= "  \"competitor_analysis\": {\n";
        $prompt .= "    \"keyword_strategy\": \"關鍵字策略分析\",\n";
        $prompt .= "    \"content_quality\": \"內容質量評估\",\n";
        $prompt .= "    \"technical_seo\": \"技術SEO評估\"\n";
        $prompt .= "  },\n";
        $prompt .= "  \"competitive_advantages\": [\"優勢1\", \"優勢2\"],\n";
        $prompt .= "  \"improvement_opportunities\": [\"機會1\", \"機會2\"],\n";
        $prompt .= "  \"recommended_actions\": [\"行動1\", \"行動2\"]\n";
        $prompt .= "}";
        
        return $this->generateContent($prompt, [
            'max_tokens' => 1200,
            'temperature' => 0.4
        ]);
    }
