aogl.cn — 生成式 AI 工具与大模型动态(个人书签)

← 返回首页 · 本站原创

aogl.cn 建站手记:_multilang 拆语种 × AdSense 可索引页策略

本人维护 · scripts/build-articles · seo-index-policy · js/adsense.js

· 本站原创

这是 aogl.cn 的第一人称建站手记,不是转载教程,也不是「如何过审」空话清单。本站是一套静态多语言编辑站,同时归档原创 Demo,并链到本人开发的兄弟 App(EatToday、WordPet、世界之最)。审稿人和同行最常问的问题其实很具体:源码如何变成各语种页面、哪些 URL 可索引、广告脚本到底在哪些页发起请求?下文按仓库里真实存在的 scripts/js/adsense.js 回答,日期 2026-09-14。

aogl.cn 默认 Open Graph 品牌图,用作本文题图源
og-default.png — 站点级默认 OG 图;封面 WebP 写入 upload/articles/

心智模型:一份 _multilang,多份语种输出

几乎所有公开页都先活在 _multilang/。源文件用 lang-* 类同时承载英、简中、日、韩、法、俄、阿等片段。我不会为每个 Hub 手工维护七份完整正文。真正做拆分的是 scripts/build-seo-locale-pages.mjs:读入 _multilang/*.html,再写出:

  • 站点根目录 — 简体中文主表面(canonical 指向自身)。
  • /zh/ — 由简体 lang-zh 经 OpenCC 转成繁体。
  • /en//ja//ko//fr//ru//ar/ — 各语种单语文档树。

这就是整站骨架。如果你只改 /en/ 下的生成文件、忘了改 _multilang/,下次语种重建会覆盖你的改动。共享页头页脚的耐久编辑面永远是 multilang 源;文章正文的耐久编辑面则是下面说的 fragment 文件。

文章:JSON 枢纽 + htmlFragments

scripts/build-articles.mjs 读取 data/articles/*.json。每个 JSON 是一个小枢纽:slug、layout、日期、题图路径、七语标题/摘要,以及指向 data/articles/fragments/htmlFragments 映射。构建器写出 _multilang/articles/<slug>.html,刷新首页 INDEX_ORIGINALS 标记,并重建 _multilang/articles/index.html。厚英文与厚中文承担 AdSense 审阅权重;短 ja/ko/fr/ru/ar 存根保证 hreflang 表面诚实,而不假装每个语种都是长文。

题图不用库存图。npm run generate-article-covers 调用 scripts/generate-article-covers.py,把 heroImageSource 裁成 1200×675 WebP,落到 upload/articles/<slug>.webp。本页源图是已提交的站点资源 og-default.png(因 Python 助手会跳过字面量 og-default.png,封面单独生成)。

导航注入与首页拼装

主导航不会在五十个模板里复制粘贴。scripts/inject-site-nav.mjsscripts/site-nav.mjs 取共享标记,注入 _multilang/index.htmlSITE_NAV_AUTO_START / SITE_NAV_AUTO_END 之间。同类注入还有 inject-categories.mjsinject-index-pills.mjsinject-tools-directory.mjsupdate-reading.mjs,把首页栏位变成可重复的机械步骤。package.json 里的 build-site 负责总编排:文章 → briefs → tool guides → hubs → nav → reading → contact → SEO 语种。我习惯按需跑子任务;中途改稿时避免盲目全量重建,以免半成品片段被覆盖。

seo-index-policy:ARTICLE_ARCHIVE_NOINDEX

scripts/seo-index-policy.mjs 是 robots、sitemap 成员资格、「这是不是薄存档?」的策略中枢。榜单表、图表转载、导购清单体文章进入 ARTICLE_ARCHIVE_NOINDEX_SLUGS。这些 URL 仍可给人当书签、当 Hub 卡片,但带 noindex,follow,并移出 AdSense 主表面。原创 Demo、制作手记、第一方 App 长文——EatToday、WordPet、世界之最、本篇建站笔记——保持可索引。

相关常量同样重要:NOINDEX_PATH_PREFIXES 覆盖 hub-links/briefs/tool-guides/ 这类聚合轨;NOINDEX_STATIC_PAGES 覆盖 tech.htmllife.html 等垂直 Hub;SITEMAP_STATIC_PAGES 只白名单少量静态页加上可索引文章。有人问「首页怎么这么安静、Hub 为什么不怎么出广告」,答案是刻意策略,不是发布商标签坏了。

AdSense 只在可索引主内容页加载

js/adsense.js 会出现在很多模板上,但并不总是请求 adsbygoogle.js。加载器检查 isContentPrimaryPage():about / changelog 合格;文章 URL 仅当页面 meta robots 不含 noindex 时合格。本机、?noads=1localStorage aogl-disable-adswindow.AOGL_DISABLE_ADSENSE 也会跳过网络请求。构建侧写 robots、客户端读 robots——这对组合让自动广告离开薄存档,同时允许厚原创页请求广告。

首页瘦外链

更早一轮 AdSense 整改去掉了密集书签墙和 Google 搜索 SEO 药丸。scripts/adsense-slim-outbound.mjs 记录了一次性助手:把首页 #pillars 收成简短导语,指向原创 Demo 与 About;并从文章片段里剥离 google.com/search 药丸。现在文末药丸应只链到真实 App URL 与 /articles/index.html(必要时首页 originals)。这不是「少做 SEO」,而是主内容更清楚、外链干扰更少,方便审阅。

我实际在用的日常改稿闭环

  1. 撰写或修订 data/articles/<slug>.json 与厚 *-en.html / *-zh.html 片段。
  2. 若属于 Hub 轨道,把 slug 前置进 data/tech-hub-articles.jsondata/life-hub-articles.json
  3. heroImageSource 有变时再生成封面。
  4. 准备发布 HTML 时再跑 npm run build-articles(以及后续语种拆分)——写散文阶段不要边写边全量构建。
  5. 在期待广告出现之前,先核对存档页与主内容页的 robots。

兄弟 App 继续待在各自源站(eattoday.aogl.cnwordpet.aogl.cnmnm.aogl.cn)。编辑站用首屏 HTML 与 original/ 截图归档去说明它们;交互产品保留自己的 cookie 与发布节奏。这条边界和任何 AdSense 开关一样重要。

和「榜单存档」文章如何共存

本站仍保留大量图表与榜单页,因为它们对人类书签有用,也对 Hub 卡片有用。策略不是删光,而是分级:存档进 ARTICLE_ARCHIVE_NOINDEX_SLUGS,原创手记与 Demo 留在可索引池。写新文时我先问三个问题——有没有本人截图或本人产品?正文是否厚到能独立阅读?外链是不是在讲清产品而不是堆搜索药丸?三个都过,才进 tech/life Hub 前置位;否则宁可当内部草稿,也不拿去碰 AdSense 主表面。

构建顺序也值得单独记一笔:先改 data/articles 与 Hub JSON,再考虑 build-articles,最后才是 build-seo-locale-pages。中间夹杂 inject-site-navupdate-reading 之类注入任务时,务必确认标记块还在,避免手工 HTML 把自动区裁掉。本地预览用 WAMP 打开根路径或语种路径均可,但判断「广告会不会加载」必须以 robots 与 js/adsense.js 的组合为准,不能只看页面底部有没有引用脚本文件。

封面与 OG 图是另一条容易踩坑的线。generate-article-covers.py 要求 heroImageSource 指向可打开的原图,并拒绝把 upload/ 当源;对字面量 og-default.png 还会跳过。因此本页封面是手动从站点默认 OG 图裁出 WebP,JSON 里仍诚实写明源路径。以后若要让脚本接管,应把源图放到 original/ 下再改字段,而不是假装 upload 里的 WebP 可以回写。

本文不保证什么

这不是 AdSense 过审承诺,也不是 CPC 或流量承诺。策略文件会随审阅信号调整。上文脚本名以本仓库 2026-09-14 现状为准;若你 fork 站点,请直接重读源文件,不要迷信博客转述。可复用的架构教训是:把 multilang 写作与语种输出分开,把书签存档与可索引长文分开,只在值得被索引的 HTML 上加载广告。把这条纪律写进日常改稿清单,比再加十条外链更接近长期可维护的编辑站。

相关

全部原创 首页原创