{"id":48905,"date":"2026-03-15T11:22:41","date_gmt":"2026-03-15T03:22:41","guid":{"rendered":"https:\/\/www.geobok.com\/geo-toolkit\/content-rewrite-comparator\/"},"modified":"2026-04-03T11:02:37","modified_gmt":"2026-04-03T03:02:37","slug":"content-rewrite-comparator","status":"publish","type":"page","link":"https:\/\/www.geobok.com\/en\/geo-toolkit\/content-rewrite-comparator\/","title":{"rendered":"Content Rewrite Comparator"},"content":{"rendered":"\n<style>\n\/* ===== B2 \u7279\u6709\u6837\u5f0f ===== *\/\n.rw-health { display: flex; align-items: center; gap: 20px; padding: 20px 24px; border-radius: var(--geo-radius-md); margin-bottom: 20px; }\n.rw-health--good { background: var(--geo-success-bg); border: 1px solid var(--geo-success-border); }\n.rw-health--fair { background: var(--geo-warn-bg); border: 1px solid var(--geo-warn-border); }\n.rw-health--poor { background: var(--geo-danger-bg); border: 1px solid var(--geo-danger-border); }\n.rw-health__score { font-size: 36px; font-weight: 800; }\n.rw-health--good .rw-health__score { color: var(--geo-success); }\n.rw-health--fair .rw-health__score { color: var(--geo-warn); }\n.rw-health--poor .rw-health__score { color: var(--geo-danger); }\n.rw-health__stats { font-size: 14px; color: var(--geo-text-body); line-height: 1.6; }\n\n\/* \u6807\u6ce8\u6587\u672c *\/\n.rw-annotated { border: 1px solid var(--geo-border); border-radius: var(--geo-radius-md); overflow: hidden; margin-bottom: 20px; }\n.rw-sent { padding: 12px 18px; border-bottom: 1px solid var(--geo-border); position: relative; transition: background 0.15s; }\n.rw-sent:last-child { border-bottom: none; }\n.rw-sent:hover { background: rgba(0,0,0,0.01); }\n.rw-sent--good { border-left: 4px solid var(--geo-success); }\n.rw-sent--neutral { border-left: 4px solid var(--geo-border-strong); }\n.rw-sent--warning { border-left: 4px solid var(--geo-warn); background: #fffbf0; }\n.rw-sent--error { border-left: 4px solid var(--geo-danger); background: #fef8f8; }\n\n.rw-sent__num { font-size: 11px; font-weight: 700; color: var(--geo-text-faint); margin-bottom: 4px; }\n.rw-sent__text { font-size: 15px; color: var(--geo-text-body); line-height: 1.8; }\n.rw-sent__issues { margin-top: 8px; display: flex; flex-direction: column; gap: 4px; }\n.rw-sent__issue { display: flex; align-items: baseline; gap: 8px; font-size: 13px; padding: 4px 10px; border-radius: 4px; }\n.rw-issue--high { background: var(--geo-danger-bg); color: #991b1b; }\n.rw-issue--medium { background: var(--geo-warn-bg); color: #92400e; }\n.rw-issue__keyword { font-weight: 700; font-family: var(--geo-font-mono); }\n.rw-issue__fix { color: var(--geo-text-muted); margin-left: 4px; }\n\n\/* \u56fe\u4f8b *\/\n.rw-legend { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; font-size: 13px; color: var(--geo-text-muted); }\n.rw-legend__item { display: flex; align-items: center; gap: 6px; }\n.rw-legend__bar { width: 16px; height: 4px; border-radius: 2px; }\n<\/style>\n\n<div class=\"geo-card\">\n    <div class=\"geo-hero\">\n        <h2 class=\"geo-hero__title\">\u270f\ufe0f Content Rewrite Checker<\/h2>\n        <p class=\"geo-hero__desc\">Paste your original text \u2014 the system scans sentence by sentence, color-codes GEO issues (pronouns, filler, semantic holes, long sentences), and gives rewrite suggestions.<\/p>\n    \n<div class=\"geo-about\">\n    <details class=\"geo-about__section\">\n        <summary>\ud83d\udcd6 What does this tool measure?<\/summary>\n        <div class=\"geo-about__body\">\n            <p>Paste your original copy and the tool scans sentence by sentence, flagging six GEO anti-patterns: dangling pronouns, semantic dead-ends, filler openings, and run-on sentences. These map directly to the six common mistakes from Chapter 5.10.<\/p>\n            <p class=\"geo-about__ref\">See <em>Make AI Speak for You: The Definitive Guide to GEO<\/em>, Ch. 5.10 &amp; Ch. 2.2<\/p>\n        <\/div>\n    <\/details>\n    <details class=\"geo-about__section\">\n        <summary>\u2753 FAQ: GEO Impact<\/summary>\n        <div class=\"geo-about__body\">\n            <div class=\"geo-faq-item\"><h4>Why is a filler opening a problem?<\/h4><p>It wastes the most valuable position \u2014 the opening should be a conclusion. Filler carries zero info density, dragging your chunk's competitiveness down.<\/p><\/div>\n            <div class=\"geo-faq-item\"><h4>Why is there a sentence-length limit?<\/h4><p>Long sentences dilute density, risk truncation, and scatter AI's attention. Aim for one clear point per sentence.<\/p><\/div>\n            <div class=\"geo-faq-item\"><h4>Do I have to fix every flag?<\/h4><p>Prioritize high-severity \u2014 pronouns and semantic dead-ends have the biggest impact. The book recommends tackling those first.<\/p><\/div>\n        <\/div>\n    <\/details>\n<\/div>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why is a filler opening a problem?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"It wastes the most valuable position \u2014 the opening should be a conclusion. Filler carries zero info density, dragging your chunk's competitiveness down.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why is there a sentence-length limit?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Long sentences dilute density, risk truncation, and scatter AI's attention. Aim for one clear point per sentence.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do I have to fix every flag?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Prioritize high-severity \u2014 pronouns and semantic dead-ends have the biggest impact. The book recommends tackling those first.\"\n      }\n    }\n  ]\n}\n<\/script>\n\n<\/div>\n\n    <div class=\"geo-action\">\n        <div class=\"geo-form-grid\">\n            <div class=\"geo-field\">\n                <label class=\"geo-label\">\u5f85\u5206\u6790\u5185\u5bb9 <span class=\"geo-label--hint\">\uff08\u7c98\u8d34\u6539\u9020\u524d\u7684\u539f\u6587\uff09<\/span><\/label>\n                <textarea id=\"rw-text\" class=\"geo-input\" style=\"min-height:220px;\" placeholder=\"\u7c98\u8d34\u60a8\u7684\u9875\u9762\u5185\u5bb9\u5230\u8fd9\u91cc\uff0c\u7cfb\u7edf\u4f1a\u9010\u53e5\u6807\u7ea2\u6240\u6709 GEO \u95ee\u9898...\"><\/textarea>\n            <\/div>\n            <button id=\"rw-btn\" class=\"geo-btn geo-btn--block\">\u9010\u53e5\u626b\u63cf<\/button>\n        <\/div>\n    <\/div>\n\n    <div id=\"rw-result\" class=\"geo-result\" style=\"padding: 0 var(--geo-space-xl) var(--geo-space-xl);\"><\/div>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function(){\n    var btn = document.getElementById('rw-btn');\n    var result = document.getElementById('rw-result');\n\n    btn.addEventListener('click', async function(){\n        var text = document.getElementById('rw-text').value.trim();\n        if(!text){ GeoAPI.showError(result, '\u8bf7\u7c98\u8d34\u5f85\u5206\u6790\u7684\u5185\u5bb9'); return; }\n        if(text.length < 20){ GeoAPI.showError(result, '\u5185\u5bb9\u592a\u77ed\uff0c\u5efa\u8bae\u81f3\u5c11 50 \u5b57'); return; }\n\n        GeoAPI.disableBtn(btn, GeoAPI.t('btn.scanning'));\n        GeoAPI.showLoading(result, GeoAPI.t('rewrite.loading'));\n\n        try {\n            var data = await GeoAPI.post('\/geo\/rewrite-analyze', GeoAPI.withLang({ text: text }));\n            renderAnnotated(data);\n        } catch(e) {\n            if(!e._geoAuthHandled) GeoAPI.showError(result, e.message);\n        } finally { GeoAPI.enableBtn(btn, '\u9010\u53e5\u626b\u63cf'); }\n    });\n\n    function renderAnnotated(data) {\n        var html = '';\n\n        \/* \u5065\u5eb7\u5ea6\u6458\u8981 *\/\n        var hCls = data.health_score >= 70 ? 'good' : data.health_score >= 40 ? 'fair' : 'poor';\n        html += '<div class=\"rw-health rw-health--'+hCls+'\">'\n              + '<div class=\"rw-health__score\">'+data.health_score+'<span style=\"font-size:16px;opacity:0.6;\">\/100<\/span><\/div>'\n              + '<div class=\"rw-health__stats\">'\n              + '<strong>\u5185\u5bb9\u5065\u5eb7\u5ea6<\/strong><br>'\n              + '\u5171 '+data.sentence_count+' \u53e5 \u00b7 '\n              + '<span style=\"color:var(--geo-success);\">'+data.good_count+' \u4f18\u8d28<\/span> \u00b7 '\n              + '<span style=\"color:var(--geo-text-faint);\">'+data.neutral_count+' \u4e00\u822c<\/span> \u00b7 '\n              + '<span style=\"color:var(--geo-warn);\">'+data.warning_count+' \u9700\u5173\u6ce8<\/span> \u00b7 '\n              + '<span style=\"color:var(--geo-danger);\">'+data.error_count+' \u9700\u4fee\u6539<\/span> \u00b7 '\n              + '\u5171 '+data.total_issues+' \u4e2a\u95ee\u9898'\n              + '<\/div><\/div>';\n\n        \/* \u56fe\u4f8b *\/\n        html += '<div class=\"rw-legend\">';\n        html += '<span class=\"rw-legend__item\"><span class=\"rw-legend__bar\" style=\"background:var(--geo-success);\"><\/span>\u4f18\u8d28\uff08\u542b\u6570\u636e\/\u5b9e\u4f53\uff09<\/span>';\n        html += '<span class=\"rw-legend__item\"><span class=\"rw-legend__bar\" style=\"background:var(--geo-border-strong);\"><\/span>\u4e00\u822c<\/span>';\n        html += '<span class=\"rw-legend__item\"><span class=\"rw-legend__bar\" style=\"background:var(--geo-warn);\"><\/span>\u9700\u5173\u6ce8<\/span>';\n        html += '<span class=\"rw-legend__item\"><span class=\"rw-legend__bar\" style=\"background:var(--geo-danger);\"><\/span>\u9700\u4fee\u6539<\/span>';\n        html += '<\/div>';\n\n        \/* \u9010\u53e5\u6807\u6ce8 *\/\n        html += '<div class=\"rw-annotated\">';\n        (data.annotated_sentences || []).forEach(function(s){\n            html += '<div class=\"rw-sent rw-sent--'+s.level+'\">';\n            html += '<div class=\"rw-sent__num\">#'+s.id;\n            if(s.has_info_signal) html += ' \u00b7 \ud83d\udcca \u542b\u6570\u636e';\n            if(s.has_entity) html += ' \u00b7 \ud83c\udff7\ufe0f \u542b\u5b9e\u4f53';\n            html += '<\/div>';\n            html += '<div class=\"rw-sent__text\">'+GeoAPI.escapeHtml(s.text)+'<\/div>';\n\n            if(s.issues && s.issues.length > 0) {\n                html += '<div class=\"rw-sent__issues\">';\n                s.issues.forEach(function(iss){\n                    html += '<div class=\"rw-sent__issue rw-issue--'+iss.severity+'\">'\n                          + '<span class=\"rw-issue__keyword\">'+GeoAPI.escapeHtml(iss.keyword)+'<\/span>'\n                          + '<span class=\"rw-issue__fix\">\u2192 '+GeoAPI.escapeHtml(iss.suggestion)+'<\/span>'\n                          + '<\/div>';\n                });\n                html += '<\/div>';\n            }\n            html += '<\/div>';\n        });\n        html += '<\/div>';\n\n        GeoAPI.showResult(result, html);\n    }\n});\n<\/script>\n\n        \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":48884,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-48905","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/pages\/48905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/comments?post=48905"}],"version-history":[{"count":0,"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/pages\/48905\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/pages\/48884"}],"wp:attachment":[{"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/media?parent=48905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}