{"id":48907,"date":"2026-03-15T11:22:03","date_gmt":"2026-03-15T03:22:03","guid":{"rendered":"https:\/\/www.geobok.com\/geo-toolkit\/content-freshness-checker\/"},"modified":"2026-04-03T11:04:01","modified_gmt":"2026-04-03T03:04:01","slug":"content-freshness-checker","status":"publish","type":"page","link":"https:\/\/www.geobok.com\/en\/geo-toolkit\/content-freshness-checker\/","title":{"rendered":"Content Freshness Checker"},"content":{"rendered":"\n<style>\n\/* ===== D3 \u7279\u6709\u6837\u5f0f ===== *\/\n.fc-summary { display: flex; align-items: center; gap: 16px; padding: 20px 24px; border-radius: var(--geo-radius-md); margin-bottom: 20px; }\n.fc-summary--fresh { background: var(--geo-success-bg); border: 1px solid var(--geo-success-border); }\n.fc-summary--warning { background: var(--geo-warn-bg); border: 1px solid var(--geo-warn-border); }\n.fc-summary--stale { background: var(--geo-danger-bg); border: 1px solid var(--geo-danger-border); }\n.fc-summary__icon { font-size: 30px; }\n.fc-summary__text { font-size: 15px; font-weight: 600; }\n.fc-summary--fresh .fc-summary__text { color: #166534; }\n.fc-summary--warning .fc-summary__text { color: #92400e; }\n.fc-summary--stale .fc-summary__text { color: #991b1b; }\n\n.fc-check { padding: 20px; border-radius: var(--geo-radius-md); border: 1px solid var(--geo-border); margin-bottom: 12px; background: #fff; }\n.fc-check__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }\n.fc-check__name { font-size: 15px; font-weight: 700; color: var(--geo-text-primary); display: flex; align-items: center; gap: 8px; }\n.fc-check__detail { font-size: 14px; color: var(--geo-text-body); line-height: 1.7; }\n\n\/* \u5e74\u4efd\u5206\u5e03 *\/\n.fc-years { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }\n.fc-year-tag { font-size: 13px; padding: 4px 12px; border-radius: var(--geo-radius-pill); font-weight: 600; font-family: var(--geo-font-mono); }\n.fc-year--current { background: var(--geo-success-bg); color: #166534; border: 1px solid var(--geo-success-border); }\n.fc-year--recent { background: var(--geo-info-bg); color: #075985; border: 1px solid #bae6fd; }\n.fc-year--stale { background: var(--geo-danger-bg); color: #991b1b; border: 1px solid var(--geo-danger-border); }\n\n\/* Meta \u65f6\u95f4\u8868 *\/\n.fc-meta-list { margin-top: 10px; }\n.fc-meta-row { display: flex; gap: 12px; padding: 6px 0; border-bottom: 1px dashed var(--geo-border); font-size: 13px; }\n.fc-meta-row:last-child { border-bottom: none; }\n.fc-meta-key { color: var(--geo-text-faint); font-weight: 600; min-width: 180px; font-family: var(--geo-font-mono); font-size: 12px; }\n.fc-meta-val { color: var(--geo-text-body); }\n<\/style>\n\n<div class=\"geo-card\">\n    <div class=\"geo-hero\">\n        <h2 class=\"geo-hero__title\">\ud83d\udcc5 Content Freshness Check<\/h2>\n        <p class=\"geo-hero__desc\">Check if your page has outdated year references, stale meta timestamps, or old sitemap lastmod \u2014 find content that needs refreshing.<\/p>\n    \n<div class=\"geo-about\">\n    <details class=\"geo-about__section\">\n        <summary>\ud83d\udcd6 What can this tool do?<\/summary>\n        <div class=\"geo-about__body\">\n            <p>Freshness is a signal AI weighs when choosing what to cite. A page claiming '2024 best practices' with a last-modified date from 2022 is at a disadvantage. This tool scans year references, meta timestamps, and staleness indicators to surface content that needs refreshing.<\/p>\n            <p class=\"geo-about__ref\">See <em>Make AI Speak for You: The Definitive Guide to GEO<\/em>, Strategy 06 &amp; Strategy 29<\/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>How much does freshness matter?<\/h4><p>Timestamped data helps AI judge timeliness. Undated or outdated data increases the chance AI skips your content for a fresher source.<\/p><\/div>\n            <div class=\"geo-faq-item\"><h4>Does every old date need updating?<\/h4><p>Not necessarily. Historical data as reference is fine. What matters is whether current conclusions are based on current information.<\/p><\/div>\n            <div class=\"geo-faq-item\"><h4>How do I signal freshness to AI?<\/h4><p>Three moves: Timestamp your data explicitly. Update dateModified in Schema markup. Make sure sitemap lastmod reflects the actual update date.<\/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\": \"How much does freshness matter?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Timestamped data helps AI judge timeliness. Undated or outdated data increases the chance AI skips your content for a fresher source.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Does every old date need updating?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Not necessarily. Historical data as reference is fine. What matters is whether current conclusions are based on current information.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do I signal freshness to AI?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Three moves: Timestamp your data explicitly. Update dateModified in Schema markup. Make sure sitemap lastmod reflects the actual update date.\"\n      }\n    }\n  ]\n}\n<\/script>\n\n<\/div>\n\n    <div class=\"geo-action\">\n        <div class=\"geo-input-row\">\n            <input type=\"url\" id=\"fc-url\" class=\"geo-input\" placeholder=\"\u8f93\u5165\u9875\u9762 URL\">\n            <button id=\"fc-btn\" class=\"geo-btn\">Start check<\/button>\n        <\/div>\n    <\/div>\n\n    <div id=\"fc-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('fc-btn');\n    var result = document.getElementById('fc-result');\n\n    btn.addEventListener('click', async function(){\n        var url = document.getElementById('fc-url').value.trim();\n        if(!url){ GeoAPI.showError(result, '\u8bf7\u8f93\u5165\u9875\u9762 URL'); return; }\n\n        GeoAPI.disableBtn(btn, GeoAPI.t('btn.detecting'));\n        GeoAPI.showLoading(result, GeoAPI.t('fresh.loading'));\n\n        try {\n            var data = await GeoAPI.post('\/geo\/freshness-check', { url: url });\n            renderResult(data);\n        } catch(e) {\n            if(!e._geoAuthHandled) GeoAPI.showError(result, e.message);\n        } finally { GeoAPI.enableBtn(btn); }\n    });\n\n    function statusBadge(status) {\n        if(status === 'fresh') return '<span class=\"geo-badge geo-badge--success\">\u2713 \u826f\u597d<\/span>';\n        if(status === 'stale') return '<span class=\"geo-badge geo-badge--danger\">\u2717 \u8fc7\u65f6<\/span>';\n        return '<span class=\"geo-badge geo-badge--warn\">\u26a0 \u9700\u5173\u6ce8<\/span>';\n    }\n\n    function renderResult(data) {\n        var html = '';\n        var icons = { fresh: '\u2705', warning: '\u26a0\ufe0f', stale: '\ud83d\udea8' };\n\n        \/* \u603b\u89c8 *\/\n        html += '<div class=\"fc-summary fc-summary--' + data.overall_status + '\">'\n              + '<div class=\"fc-summary__icon\">' + (icons[data.overall_status]||'\ud83d\udccb') + '<\/div>'\n              + '<div class=\"fc-summary__text\">' + GeoAPI.escapeHtml(data.overall_msg||'') + '<\/div><\/div>';\n\n        \/* \u9010\u9879\u68c0\u6d4b\u7ed3\u679c *\/\n        (data.checks || []).forEach(function(check) {\n            html += '<div class=\"fc-check\">';\n            html += '<div class=\"fc-check__head\">';\n            html += '<span class=\"fc-check__name\">' + GeoAPI.escapeHtml(check.name) + '<\/span>';\n            html += statusBadge(check.status);\n            html += '<\/div>';\n            html += '<div class=\"fc-check__detail\">' + GeoAPI.escapeHtml(check.detail || '') + '<\/div>';\n\n            \/* \u5e74\u4efd\u5206\u5e03\u6807\u7b7e *\/\n            if(check.years_found && Object.keys(check.years_found).length > 0) {\n                html += '<div class=\"fc-years\">';\n                var cy = data.current_year;\n                Object.keys(check.years_found).sort().reverse().forEach(function(y) {\n                    var yi = parseInt(y);\n                    var cls = yi >= cy ? 'fc-year--current' : yi >= cy - 1 ? 'fc-year--recent' : 'fc-year--stale';\n                    html += '<span class=\"fc-year-tag ' + cls + '\">' + y + '\u5e74 \u00d7' + check.years_found[y] + '<\/span>';\n                });\n                html += '<\/div>';\n            }\n\n            \/* Meta \u65f6\u95f4\u8be6\u60c5 *\/\n            if(check.meta_times && Object.keys(check.meta_times).length > 0) {\n                html += '<div class=\"fc-meta-list\">';\n                Object.keys(check.meta_times).forEach(function(k) {\n                    html += '<div class=\"fc-meta-row\"><span class=\"fc-meta-key\">' + GeoAPI.escapeHtml(k) + '<\/span><span class=\"fc-meta-val\">' + GeoAPI.escapeHtml(check.meta_times[k]) + '<\/span><\/div>';\n                });\n                html += '<\/div>';\n            }\n\n            html += '<\/div>';\n        });\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-48907","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/pages\/48907","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=48907"}],"version-history":[{"count":0,"href":"https:\/\/www.geobok.com\/en\/wp-json\/wp\/v2\/pages\/48907\/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=48907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}