{"id":606,"date":"2025-11-23T18:15:11","date_gmt":"2025-11-23T10:15:11","guid":{"rendered":"https:\/\/isunnylife.space\/?p=606"},"modified":"2025-11-23T19:12:37","modified_gmt":"2025-11-23T11:12:37","slug":"ai%e7%bf%bb%e8%af%91%e6%b5%8b%e8%af%95v5","status":"publish","type":"post","link":"https:\/\/isunnylife.space\/?p=606","title":{"rendered":"AI\u7ffb\u8bd1\u6d4b\u8bd5V5"},"content":{"rendered":"\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u591a\u8bed\u8a00\u667a\u80fd\u7ffb\u8bd1\u5668<\/title>\n    <style>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n\n    body {\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n        min-height: 100vh;\n        padding: 20px;\n    }\n    \n    .container {\n        max-width: 1200px;\n        margin: 0 auto;\n        background: white;\n        border-radius: 16px;\n        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n        overflow: hidden;\n    }\n    \n    .header {\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n        color: white;\n        padding: 30px;\n        text-align: center;\n    }\n    \n    .header h1 {\n        font-size: 28px;\n        margin-bottom: 10px;\n    }\n    \n    .header p {\n        opacity: 0.9;\n        font-size: 14px;\n    }\n    \n\n    \n    .translator-wrapper {\n        display: flex;\n        min-height: 500px;\n    }\n    \n    .panel {\n        flex: 1;\n        padding: 30px;\n        display: flex;\n        flex-direction: column;\n    }\n    \n    .panel-left {\n        border-right: 2px solid #e5e7eb;\n    }\n    \n    .panel-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        margin-bottom: 20px;\n        gap: 15px;\n    }\n    \n    .language-selector {\n        position: relative;\n        flex: 1;\n    }\n    \n    .language-label {\n        font-size: 14px;\n        font-weight: 500;\n        color: #6b7280;\n        margin-bottom: 5px;\n        display: block;\n    }\n    \n    .copy-btn {\n        padding: 8px 16px;\n        background: #667eea;\n        color: white;\n        border: none;\n        border-radius: 6px;\n        font-size: 13px;\n        font-weight: 600;\n        cursor: pointer;\n        transition: all 0.3s;\n        display: flex;\n        align-items: center;\n        gap: 6px;\n        white-space: nowrap;\n    }\n    \n    .copy-btn:hover {\n        background: #5568d3;\n        transform: translateY(-1px);\n    }\n    \n    .copy-btn:active {\n        transform: translateY(0);\n    }\n    \n    .copy-btn.copied {\n        background: #10b981;\n    }\n    \n    .copy-btn:disabled {\n        opacity: 0.5;\n        cursor: not-allowed;\n    }\n    \n    select {\n        width: 100%;\n        padding: 10px 35px 10px 12px;\n        font-size: 15px;\n        font-weight: 600;\n        color: #1f2937;\n        border: 2px solid #e5e7eb;\n        border-radius: 8px;\n        background: white;\n        cursor: pointer;\n        transition: border-color 0.3s;\n        appearance: none;\n        background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='%234b5563' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'\/%3E%3C\/svg%3E\");\n        background-repeat: no-repeat;\n        background-position: right 10px center;\n    }\n    \n    select:hover {\n        border-color: #667eea;\n    }\n    \n    select:focus {\n        outline: none;\n        border-color: #667eea;\n        box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n    }\n    \n    .char-count {\n        font-size: 12px;\n        color: #6b7280;\n    }\n    \n    textarea {\n        flex: 1;\n        width: 100%;\n        border: 2px solid #e5e7eb;\n        border-radius: 12px;\n        padding: 20px;\n        font-size: 16px;\n        font-family: inherit;\n        resize: none;\n        transition: border-color 0.3s;\n        line-height: 1.6;\n    }\n    \n    textarea:focus {\n        outline: none;\n        border-color: #667eea;\n    }\n    \n    .panel-left textarea {\n        background: #f9fafb;\n    }\n    \n    .panel-right textarea {\n        background: #fefce8;\n    }\n    \n    .controls {\n        display: flex;\n        justify-content: center;\n        gap: 15px;\n        padding: 20px 30px;\n        background: #f9fafb;\n        border-top: 1px solid #e5e7eb;\n    }\n    \n    button {\n        padding: 12px 30px;\n        font-size: 15px;\n        font-weight: 600;\n        border: none;\n        border-radius: 8px;\n        cursor: pointer;\n        transition: all 0.3s;\n    }\n    \n    button:disabled {\n        opacity: 0.5;\n        cursor: not-allowed;\n    }\n    \n    .btn-translate {\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n        color: white;\n    }\n    \n    .btn-translate:hover:not(:disabled) {\n        transform: translateY(-2px);\n        box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);\n    }\n    \n    .btn-clear {\n        background: #e5e7eb;\n        color: #4b5563;\n    }\n    \n    .btn-clear:hover {\n        background: #d1d5db;\n    }\n    \n    .btn-swap {\n        background: #10b981;\n        color: white;\n    }\n    \n    .btn-swap:hover {\n        background: #059669;\n        transform: translateY(-2px);\n    }\n    \n    .loading {\n        text-align: center;\n        color: #667eea;\n        font-size: 14px;\n        margin-top: 10px;\n    }\n    \n    .error {\n        background: #fee2e2;\n        color: #dc2626;\n        padding: 15px;\n        border-radius: 8px;\n        margin: 20px 30px;\n        font-size: 14px;\n    }\n    \n\n    @media (max-width: 768px) {\n        .translator-wrapper {\n            flex-direction: column;\n        }\n        \n        .panel-left {\n            border-right: none;\n            border-bottom: 2px solid #e5e7eb;\n        }\n        \n        .controls {\n            flex-wrap: wrap;\n        }\n        \n        .api-config {\n            flex-direction: column;\n            align-items: stretch;\n        }\n        \n        .api-input-wrapper {\n            min-width: 100%;\n        }\n    }\n<\/style>\n\n\n<\/head>\n<body>\n    <div class=\"container\">\n        <div class=\"header\">\n            <h1>\ud83c\udf10 \u591a\u8bed\u8a00\u667a\u80fd\u7ffb\u8bd1\u5668<\/h1>\n            <p>\u652f\u6301 16 \u79cd\u8bed\u8a00\u4e92\u8bd1 &#8211; \u7531 GPT-4o-mini \u9a71\u52a8<\/p>\n        <\/div>\n\n\n    <div class=\"translator-wrapper\">\n        <div class=\"panel panel-left\">\n            <div class=\"panel-header\">\n                <div class=\"language-selector\">\n                    <label class=\"language-label\">\u6e90\u8bed\u8a00<\/label>\n                    <select id=\"leftLang\">\n                        <option value=\"zh\">\u4e2d\u6587 (\u7b80\u4f53)<\/option>\n                        <option value=\"zh-TW\">\u4e2d\u6587 (\u7e41\u9ad4)<\/option>\n                        <option value=\"en\">English (\u82f1\u8bed)<\/option>\n                        <option value=\"ja\">\u65e5\u672c\u8a9e (\u65e5\u8bed)<\/option>\n                        <option value=\"ko\">\ud55c\uad6d\uc5b4 (\u97e9\u8bed)<\/option>\n                        <option value=\"fr\">Fran\u00e7ais (\u6cd5\u8bed)<\/option>\n                        <option value=\"de\">Deutsch (\u5fb7\u8bed)<\/option>\n                        <option value=\"es\">Espa\u00f1ol (\u897f\u73ed\u7259\u8bed)<\/option>\n                        <option value=\"ru\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (\u4fc4\u8bed)<\/option>\n                        <option value=\"ar\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u963f\u62c9\u4f2f\u8bed)<\/option>\n                        <option value=\"pt\">Portugu\u00eas (\u8461\u8404\u7259\u8bed)<\/option>\n                        <option value=\"it\">Italiano (\u610f\u5927\u5229\u8bed)<\/option>\n                        <option value=\"th\">\u0e44\u0e17\u0e22 (\u6cf0\u8bed)<\/option>\n                        <option value=\"vi\">Ti\u1ebfng Vi\u1ec7t (\u8d8a\u5357\u8bed)<\/option>\n                        <option value=\"id\">Bahasa Indonesia (\u5370\u5c3c\u8bed)<\/option>\n                        <option value=\"ms\">Bahasa Melayu (\u9a6c\u6765\u8bed)<\/option>\n                    <\/select>\n                <\/div>\n                <button class=\"copy-btn\" id=\"copyLeftBtn\" onclick=\"copyText('left')\" disabled>\n                    \ud83d\udccb \u590d\u5236\n                <\/button>\n                <span class=\"char-count\" id=\"leftCount\">0 \/ 5000<\/span>\n            <\/div>\n            <textarea \n                id=\"leftText\" \n                placeholder=\"\u8bf7\u8f93\u5165\u8981\u7ffb\u8bd1\u7684\u5185\u5bb9...\"\n                maxlength=\"5000\"\n            ><\/textarea>\n        <\/div>\n        \n        <div class=\"panel panel-right\">\n            <div class=\"panel-header\">\n                <div class=\"language-selector\">\n                    <label class=\"language-label\">\u76ee\u6807\u8bed\u8a00<\/label>\n                    <select id=\"rightLang\">\n                        <option value=\"zh\">\u4e2d\u6587 (\u7b80\u4f53)<\/option>\n                        <option value=\"zh-TW\">\u4e2d\u6587 (\u7e41\u9ad4)<\/option>\n                        <option value=\"en\" selected>English (\u82f1\u8bed)<\/option>\n                        <option value=\"ja\">\u65e5\u672c\u8a9e (\u65e5\u8bed)<\/option>\n                        <option value=\"ko\">\ud55c\uad6d\uc5b4 (\u97e9\u8bed)<\/option>\n                        <option value=\"fr\">Fran\u00e7ais (\u6cd5\u8bed)<\/option>\n                        <option value=\"de\">Deutsch (\u5fb7\u8bed)<\/option>\n                        <option value=\"es\">Espa\u00f1ol (\u897f\u73ed\u7259\u8bed)<\/option>\n                        <option value=\"ru\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (\u4fc4\u8bed)<\/option>\n                        <option value=\"ar\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u963f\u62c9\u4f2f\u8bed)<\/option>\n                        <option value=\"pt\">Portugu\u00eas (\u8461\u8404\u7259\u8bed)<\/option>\n                        <option value=\"it\">Italiano (\u610f\u5927\u5229\u8bed)<\/option>\n                        <option value=\"th\">\u0e44\u0e17\u0e22 (\u6cf0\u8bed)<\/option>\n                        <option value=\"vi\">Ti\u1ebfng Vi\u1ec7t (\u8d8a\u5357\u8bed)<\/option>\n                        <option value=\"id\">Bahasa Indonesia (\u5370\u5c3c\u8bed)<\/option>\n                        <option value=\"ms\">Bahasa Melayu (\u9a6c\u6765\u8bed)<\/option>\n                    <\/select>\n                <\/div>\n                <button class=\"copy-btn\" id=\"copyRightBtn\" onclick=\"copyText('right')\" disabled>\n                    \ud83d\udccb \u590d\u5236\n                <\/button>\n                <span class=\"char-count\" id=\"rightCount\">0 \/ 5000<\/span>\n            <\/div>\n            <textarea \n                id=\"rightText\" \n                placeholder=\"\u7ffb\u8bd1\u7ed3\u679c\u5c06\u663e\u793a\u5728\u8fd9\u91cc...\"\n                maxlength=\"5000\"\n            ><\/textarea>\n        <\/div>\n    <\/div>\n    \n    <div class=\"controls\">\n        <button class=\"btn-translate\" id=\"translateBtn\" onclick=\"translateText()\">\n            \ud83c\udf0d \u7ffb\u8bd1\n        <\/button>\n        <button class=\"btn-swap\" onclick=\"swapLanguages()\">\u21c4 \u4ea4\u6362<\/button>\n        <button class=\"btn-clear\" onclick=\"clearAll()\">\ud83d\uddd1\ufe0f \u6e05\u7a7a<\/button>\n    <\/div>\n    \n    <div id=\"loading\" class=\"loading\" style=\"display: none;\">\u6b63\u5728\u7ffb\u8bd1\u4e2d&#8230;<\/div>\n    <div id=\"error\" class=\"error\" style=\"display: none;\"><\/div>\n<\/div>\n\n<script>\n   \n    \n    let lastActiveField = 'left';\n    \n    const leftText = document.getElementById('leftText');\n    const rightText = document.getElementById('rightText');\n    const leftLang = document.getElementById('leftLang');\n    const rightLang = document.getElementById('rightLang');\n    const leftCount = document.getElementById('leftCount');\n    const rightCount = document.getElementById('rightCount');\n    const loading = document.getElementById('loading');\n    const error = document.getElementById('error');\n    const translateBtn = document.getElementById('translateBtn');\n    const copyLeftBtn = document.getElementById('copyLeftBtn');\n    const copyRightBtn = document.getElementById('copyRightBtn');\n    \n    \/\/ \u8bed\u8a00\u540d\u79f0\u6620\u5c04\n    const languageNames = {\n        'zh': 'Chinese',\n        'zh-TW': 'Traditional Chinese',\n        'en': 'English',\n        'ja': 'Japanese',\n        'ko': 'Korean',\n        'fr': 'French',\n        'de': 'German',\n        'es': 'Spanish',\n        'ru': 'Russian',\n        'ar': 'Arabic',\n        'pt': 'Portuguese',\n        'it': 'Italian',\n        'th': 'Thai',\n        'vi': 'Vietnamese',\n        'id': 'Indonesian',\n        'ms': 'Malay'\n    };\n    \n    \/\/ \u66f4\u65b0\u5b57\u7b26\u8ba1\u6570\n    leftText.addEventListener('input', (e) => {\n        leftCount.textContent = `${e.target.value.length} \/ 5000`;\n        lastActiveField = 'left';\n        \/\/ \u542f\u7528\/\u7981\u7528\u590d\u5236\u6309\u94ae\n        copyLeftBtn.disabled = e.target.value.length === 0;\n    });\n    \n    rightText.addEventListener('input', (e) => {\n        rightCount.textContent = `${e.target.value.length} \/ 5000`;\n        lastActiveField = 'right';\n        \/\/ \u542f\u7528\/\u7981\u7528\u590d\u5236\u6309\u94ae\n        copyRightBtn.disabled = e.target.value.length === 0;\n    });\n    \n    \/\/ \u8bed\u8a00\u9009\u62e9\u53d8\u5316\u65f6\u7684\u5904\u7406\n    leftLang.addEventListener('change', () => {\n        if (leftLang.value === rightLang.value) {\n            const options = Array.from(rightLang.options);\n            const differentLang = options.find(opt => opt.value !== leftLang.value);\n            if (differentLang) {\n                rightLang.value = differentLang.value;\n            }\n        }\n    });\n    \n    rightLang.addEventListener('change', () => {\n        if (leftLang.value === rightLang.value) {\n            const options = Array.from(leftLang.options);\n            const differentLang = options.find(opt => opt.value !== rightLang.value);\n            if (differentLang) {\n                leftLang.value = differentLang.value;\n            }\n        }\n    });\n    \n    \/\/ \u7ffb\u8bd1\u51fd\u6570\n    async function translateText() {\n \n        \n        const sourceText = lastActiveField === 'left' ? leftText.value : rightText.value;\n        const sourceLang = lastActiveField === 'left' ? leftLang.value : rightLang.value;\n        const targetLang = lastActiveField === 'left' ? rightLang.value : leftLang.value;\n        \n        if (!sourceText.trim()) {\n            showError('\u8bf7\u8f93\u5165\u8981\u7ffb\u8bd1\u7684\u5185\u5bb9');\n            return;\n        }\n        \n        if (sourceLang === targetLang) {\n            showError('\u6e90\u8bed\u8a00\u548c\u76ee\u6807\u8bed\u8a00\u4e0d\u80fd\u76f8\u540c');\n            return;\n        }\n        \n        hideError();\n        loading.style.display = 'block';\n        translateBtn.disabled = true;\n        \n       try {\n            const response = await fetch('https:\/\/api.openai.com\/v1\/chat\/completions', {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application\/json',\n                    'Authorization': `Bearer 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`\n                },\n                body: JSON.stringify({\n                    model: 'gpt-4o-mini',\n                    messages: [\n                        {\n                            role: 'system',\n                            content: `You are a professional translator. Translate the following text from ${languageNames[sourceLang]} to ${languageNames[targetLang]}. Only provide the translation, no explanations. Maintain the original tone and style.`\n                        },\n                        {\n                            role: 'user',\n                            content: sourceText\n                        }\n                    ],\n                    temperature: 0.3,\n                    max_tokens: 2000\n                })\n            });\n            \n            if (!response.ok) {\n                const errorData = await response.json();\n                if (response.status === 401) {\n                    throw new Error('API Key \u65e0\u6548\uff0c\u8bf7\u68c0\u67e5\u540e\u91cd\u65b0\u8f93\u5165');\n                } else if (response.status === 429) {\n                    throw new Error('\u8bf7\u6c42\u8fc7\u4e8e\u9891\u7e41\u6216\u914d\u989d\u5df2\u7528\u5b8c\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5');\n                } else {\n                    throw new Error(errorData.error?.message || `API \u9519\u8bef: ${response.status}`);\n                }\n            }\n            \n            const data = await response.json();\n            const translatedText = data.choices[0].message.content.trim();\n            \n            if (lastActiveField === 'left') {\n                rightText.value = translatedText;\n                rightCount.textContent = `${translatedText.length} \/ 5000`;\n                copyRightBtn.disabled = false;\n            } else {\n                leftText.value = translatedText;\n                leftCount.textContent = `${translatedText.length} \/ 5000`;\n                copyLeftBtn.disabled = false;\n            }\n            \n        } catch (err) {\n            showError('\u7ffb\u8bd1\u5931\u8d25: ' + err.message);\n        } finally {\n            loading.style.display = 'none';\n            translateBtn.disabled = false;\n        }\n    }\n    \n    \/\/ \u4ea4\u6362\u8bed\u8a00\n    function swapLanguages() {\n        \/\/ \u4ea4\u6362\u6587\u672c\n        const temp = leftText.value;\n        leftText.value = rightText.value;\n        rightText.value = temp;\n        \n        \/\/ \u4ea4\u6362\u8bed\u8a00\u9009\u62e9\n        const tempLang = leftLang.value;\n        leftLang.value = rightLang.value;\n        rightLang.value = tempLang;\n        \n        \/\/ \u66f4\u65b0\u8ba1\u6570\n        leftCount.textContent = `${leftText.value.length} \/ 5000`;\n        rightCount.textContent = `${rightText.value.length} \/ 5000`;\n        \n        \/\/ \u4ea4\u6362\u6d3b\u52a8\u5b57\u6bb5\n        lastActiveField = lastActiveField === 'left' ? 'right' : 'left';\n    }\n    \n    \/\/ \u6e05\u7a7a\u6240\u6709\n    function clearAll() {\n        leftText.value = '';\n        rightText.value = '';\n        leftCount.textContent = '0 \/ 5000';\n        rightCount.textContent = '0 \/ 5000';\n        copyLeftBtn.disabled = true;\n        copyRightBtn.disabled = true;\n        hideError();\n    }\n    \n    \/\/ \u590d\u5236\u6587\u672c\u529f\u80fd\n    async function copyText(side) {\n        const text = side === 'left' ? leftText.value : rightText.value;\n        const btn = side === 'left' ? copyLeftBtn : copyRightBtn;\n        \n        if (!text.trim()) {\n            return;\n        }\n        \n        try {\n            await navigator.clipboard.writeText(text);\n            \n            \/\/ \u6309\u94ae\u52a8\u753b\u6548\u679c\n            const originalHTML = btn.innerHTML;\n            btn.innerHTML = '\u2713 \u5df2\u590d\u5236';\n            btn.classList.add('copied');\n            \n            setTimeout(() => {\n                btn.innerHTML = originalHTML;\n                btn.classList.remove('copied');\n            }, 2000);\n            \n        } catch (err) {\n            \/\/ \u964d\u7ea7\u65b9\u6848\uff1a\u4f7f\u7528\u4f20\u7edf\u7684\u590d\u5236\u65b9\u6cd5\n            const textarea = side === 'left' ? leftText : rightText;\n            textarea.select();\n            document.execCommand('copy');\n            \n            const originalHTML = btn.innerHTML;\n            btn.innerHTML = '\u2713 \u5df2\u590d\u5236';\n            btn.classList.add('copied');\n            \n            setTimeout(() => {\n                btn.innerHTML = originalHTML;\n                btn.classList.remove('copied');\n            }, 2000);\n        }\n    }\n    \n    \/\/ \u663e\u793a\u9519\u8bef\n    function showError(msg) {\n        error.textContent = msg;\n        error.style.display = 'block';\n    }\n    \n    \/\/ \u9690\u85cf\u9519\u8bef\n    function hideError() {\n        error.style.display = 'none';\n    }\n    \n    \/\/ \u56de\u8f66\u952e\u7ffb\u8bd1\uff08Ctrl+Enter\uff09\n    leftText.addEventListener('keydown', (e) => {\n        if (e.ctrlKey && e.key === 'Enter') {\n            translateText();\n        }\n    });\n    \n    rightText.addEventListener('keydown', (e) => {\n        if (e.ctrlKey && e.key === 'Enter') {\n            translateText();\n        }\n    });\n    \n    \/\/ \u9875\u9762\u52a0\u8f7d\u65f6\u521d\u59cb\u5316\n    initializeApp();\n<\/script>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>\u591a\u8bed\u8a00\u667a\u80fd\u7ffb\u8bd1\u5668 \ud83c\udf10 \u591a\u8bed\u8a00\u667a\u80fd\u7ffb\u8bd1\u5668  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-606","post","type-post","status-publish","format-standard","hentry","category-1"],"spectra_custom_meta":{"surerank_seo_checks":["a:13:{s:14:\"h2_subheadings\";a:3:{s:6:\"status\";s:7:\"warning\";s:7:\"message\";s:42:\"The page does not contain any subheadings.\";s:4:\"type\";s:4:\"page\";}s:13:\"media_present\";a:3:{s:6:\"status\";s:7:\"warning\";s:7:\"message\";s:39:\"No images or videos found on this page.\";s:4:\"type\";s:4:\"page\";}s:13:\"links_present\";a:3:{s:6:\"status\";s:7:\"warning\";s:7:\"message\";s:27:\"No links found on the page.\";s:4:\"type\";s:4:\"page\";}s:10:\"url_length\";a:3:{s:6:\"status\";s:7:\"success\";s:7:\"message\";s:35:\"Page URL is short and SEO-friendly.\";s:4:\"type\";s:4:\"page\";}s:19:\"search_engine_title\";a:3:{s:6:\"status\";s:7:\"success\";s:7:\"message\";s:55:\"Search engine title is present and under 60 characters.\";s:4:\"type\";s:4:\"page\";}s:25:\"search_engine_description\";a:3:{s:6:\"status\";s:7:\"success\";s:7:\"message\";s:62:\"Search engine description is present and under 160 characters.\";s:4:\"type\";s:4:\"page\";}s:13:\"canonical_url\";a:3:{s:6:\"status\";s:7:\"success\";s:7:\"message\";s:37:\"Canonical tag is present on the page.\";s:4:\"type\";s:4:\"page\";}s:15:\"open_graph_tags\";a:3:{s:6:\"status\";s:7:\"success\";s:7:\"message\";s:40:\"Open Graph tags are present on the page.\";s:4:\"type\";s:4:\"page\";}s:16:\"keyword_in_title\";a:3:{s:6:\"status\";s:10:\"suggestion\";s:7:\"message\";s:38:\"No focus keyword set to analyze title.\";s:4:\"type\";s:7:\"keyword\";}s:22:\"keyword_in_description\";a:3:{s:6:\"status\";s:10:\"suggestion\";s:7:\"message\";s:49:\"No focus keyword set to analyze meta description.\";s:4:\"type\";s:7:\"keyword\";}s:14:\"keyword_in_url\";a:3:{s:6:\"status\";s:10:\"suggestion\";s:7:\"message\";s:36:\"No focus keyword set to analyze URL.\";s:4:\"type\";s:7:\"keyword\";}s:18:\"keyword_in_content\";a:3:{s:6:\"status\";s:10:\"suggestion\";s:7:\"message\";s:40:\"No focus keyword set to analyze content.\";s:4:\"type\";s:7:\"keyword\";}s:12:\"broken_links\";a:2:{s:6:\"status\";s:7:\"success\";s:7:\"message\";s:34:\"No broken links found on the page.\";}}"],"surerank_seo_checks_last_updated":["1763993159"],"_edit_lock":["1763898790:1"],"_edit_last":["1"],"_oembed_32ecccb13b06db26cd7daa1514f55ce6":["{{unknown}}"],"_uag_page_assets":["a:9:{s:3:\"css\";s:263:\".uag-blocks-common-selector{z-index:var(--z-index-desktop) !important}@media (max-width: 976px){.uag-blocks-common-selector{z-index:var(--z-index-tablet) !important}}@media (max-width: 767px){.uag-blocks-common-selector{z-index:var(--z-index-mobile) !important}}\n\";s:2:\"js\";s:0:\"\";s:18:\"current_block_list\";a:8:{i:0;s:9:\"core\/html\";i:1;s:11:\"core\/search\";i:2;s:10:\"core\/group\";i:3;s:12:\"core\/heading\";i:4;s:17:\"core\/latest-posts\";i:5;s:20:\"core\/latest-comments\";i:6;s:13:\"core\/archives\";i:7;s:15:\"core\/categories\";}s:8:\"uag_flag\";b:0;s:11:\"uag_version\";s:10:\"1766657798\";s:6:\"gfonts\";a:0:{}s:10:\"gfonts_url\";s:0:\"\";s:12:\"gfonts_files\";a:0:{}s:14:\"uag_faq_layout\";b:0;}"],"views":["0"],"_uag_css_file_name":["uag-css-606.css"]},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"xianjie.me@icloud.com","author_link":"https:\/\/isunnylife.space\/?author=1"},"uagb_comment_info":0,"uagb_excerpt":"\u591a\u8bed\u8a00\u667a\u80fd\u7ffb\u8bd1\u5668 \ud83c\udf10 \u591a\u8bed\u8a00\u667a\u80fd\u7ffb\u8bd1\u5668 [&hellip;]","_links":{"self":[{"href":"https:\/\/isunnylife.space\/index.php?rest_route=\/wp\/v2\/posts\/606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/isunnylife.space\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/isunnylife.space\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/isunnylife.space\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/isunnylife.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=606"}],"version-history":[{"count":3,"href":"https:\/\/isunnylife.space\/index.php?rest_route=\/wp\/v2\/posts\/606\/revisions"}],"predecessor-version":[{"id":611,"href":"https:\/\/isunnylife.space\/index.php?rest_route=\/wp\/v2\/posts\/606\/revisions\/611"}],"wp:attachment":[{"href":"https:\/\/isunnylife.space\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/isunnylife.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/isunnylife.space\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}