搜索全站
建站 9 分钟阅读

用 WordPress 做在线工具站:轻量工具页实现与 SEO 组织方式

在线工具站流量稳但容易做成一堆无法收录的页面。本文给出一个工具一个页面 + JS 即时计算的实现方式,以及如何用 canonical、robots、结构化内容避免重复与低质量判定。

U
UFO_PF 2020-02-12 · 阅读 9 分钟
用 建站
阅读提示
本文约 3,310 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:你做了三十个小工具,搜索引擎只收录了三个

在线工具站的魅力在于长尾明确(”在线 JSON 格式化””时间戳转换””图片转 Base64″)且几乎不需要维护。但新手常做成这样:一个 tools.php 页面,靠 ?tab=json 参数切换工具;或者用 SPA 单页应用,所有工具在一个 HTML 里用 JS 渲染。这两种做法的结果都差不多:只有入口页有 URL 权重,工具页既没有独立标题也没有独立内容,搜索引擎看不到任何”这是一个 JSON 格式化工具”的信号。流量自然起不来。工具站的 SEO 核心其实就一句话:每个工具必须有唯一 URL、唯一标题、以及真实存在于 HTML 里的说明文字。

原理分析:静态外壳 + 即时计算 = 可抓取且无需后端

工具的本质通常是「输入 → 纯函数 → 输出」,完全可以跑在浏览器里,不需要 Ajax 到 PHP。所以最优结构是:WordPress 负责内容壳(标题、说明、用法、FAQ、内链),JavaScript 负责计算。页面下载一次,计算本地完成,服务器压力接近零,也不怕被刷量。

需要警惕的是两类低质量信号:一是「参数化垃圾页」——如果工具页支持任意 ?input=xxx 并被抓取,会生成无限多个内容几乎相同的 URL;二是「入口即工具」——没有说明文字,页面可索引内容不足几十字,很容易被判为”没有价值的聚合页”。

组织方式 独立 URL 可抓取内容 建议
单页 + query 参数 否 少 不推荐
SPA 渲染切换 否 少 不推荐
每个工具一个文章/CPT 是 可控 推荐
工具 + Hash 状态共享 是 可控 可作辅助

保姆级实操

步骤 1:注册 tool 文章类型。 每个工具就是一篇 CPT 记录,天然获得独立 slug 与干净的重写结构:

add_action( 'init', function () {
    register_post_type( 'tool', [
        'labels'      => [ 'name' => '在线工具', 'singular_name' => '在线工具' ],
        'public'      => true,
        'has_archive' => true,
        'rewrite'     => [ 'slug' => 'tool' ],
        'supports'    => [ 'title', 'editor', 'thumbnail', 'excerpt' ],
        'show_in_rest'=> true,
    ] );
} );

步骤 2:工具本体用 JS 实现。以 QR 码生成为例,用真实存在的开源库 qrcodejs(David Shim):

document.addEventListener('DOMContentLoaded', function () {
    const input = document.getElementById('qr-input');
    const box   = document.getElementById('qr-box');
    function render() {
        const text = input.value.trim();
        box.innerHTML = '';
        if (!text) { return; }
        new QRCode(box, {
            text: text,
            width: 220,
            height: 220,
            colorDark: '#111827',
            colorLight: '#ffffff',
            correctLevel: QRCode.CorrectLevel.M
        });
    }
    input.addEventListener('input', render);
    render();
});

步骤 3:给工具页补 300 字以上的真实说明。 包括:工具用途、支持的参数、与其他工具的区别、常见问题。这段内容既是 SEO 主体,也是用户信任来源。WordPress 结构化数据标注方法

步骤 4:把状态同步到 URL hash 而不是 query string。 location.hash 不会被搜索引擎当作不同 URL 抓取,但用户仍能分享带参数的链接:

const params = new URLSearchParams(location.hash.slice(1));
if (params.get('t')) { input.value = params.get('t'); }
input.addEventListener('input', () => {
    const next = new URLSearchParams({ t: input.value });
    history.replaceState(null, '', '#' + next.toString());
});

步骤 5:处理带参 URL 的 canonical 与 robots。 对未知 GET 参数统一回指干净 URL,避免重复收录:

add_action( 'template_redirect', function () {
    if ( is_singular( 'tool' ) && ! empty( $_GET ) ) {
        if ( wp_safe_redirect( get_permalink( get_queried_object_id() ), 301 ) ) {
            exit;
        }
    }
} );

add_filter( 'robots_txt', function ( $output ) {
    $output .= "Disallow: /*?\n";
    return $output;
} );

步骤 6:工具聚合页与内链组织。 建立一个 /tools 列表页做目录,每个工具页底部自带”相关工具”区块(按 tag 取 6 个),形成网状结构。

常见踩坑

  1. 工具页标题写成”在线工具”,没带上具体功能词,拿不到长尾流量。
  2. 案例: 某站把所有工具塞进一个页面用 JS 切换,半年后发现外部 UTM/工具备份出现了一百多个 ?tab= 参数的重复收录链接,站点出现大量低质量重复页面,权重被稀释。
  3. 页面说明文字完全靠 JS 渲染,Google 抓取的 HTML 里没有实质内容。
  4. 工具调用了第三方 CDN 上的 JS,源站在国内访问缓慢或失效,工具整体不可用了自己还不知道。
  5. 未加 canonical,/tool/json-formatter/ 与 /tool/json-formatter/index.html 同时被索引。
  6. 表单输入没做长度限制,用户贴 20MB 文本导致页面卡死。
  7. 工具产生了 AI 接口调用,初期免费额度被刷爆产生费用。WordPress CDN 与静态资源优化

总结

工具站的判断标准是:每个工具是否独立地址、是否有真实可抓取的说明、是否有效避免了无意义的参数页。行动清单:CPT 一工具一页 → 计算纯前端 → 补充 300 字说明 → 用 hash 同步状态 → 统一 canonical 与 robots → 做 /tools 目录汇聚权重。工具站不是赢在数量,而是赢在页面组织是否干净。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。