Skip to content

SEO/analytics audit 2026-09-07: calculate params, GA4 ranking, trust box - #3

Merged
appdevelopsk merged 1 commit into
mainfrom
audit/2026-09-07
Sep 7, 2026
Merged

appdevelopsk merged 1 commit into
mainfrom
audit/2026-09-07

Conversation

@appdevelopsk

Copy link
Copy Markdown
Owner

Summary

Follow-up to the 2026-09-07 audit (GSC impressions ≈ 4 for the whole site).

Technical SEO audit — findings (no code bugs found)

  • robots.txt / sitemap.xml (658 URLs, absolute, x-default) / canonical / hreflang / robots index,follow all verified live on toolify365.com.
  • Why impressions are ~0: deliberate pruning, not a bug — INDEXED_LOCALES (7 of 17 locales) in site/src/lib/i18n/locales.ts and the INDEXED_SLUGS allowlist (63 of 223 tools) in site/src/lib/tools/registry.ts mark everything else noindex and exclude it from the sitemap (see docs/RECOVERY_PRUNE_PLAN.md). Re-evaluate the allowlist around 2026-09-15; not reverted here.
  • /ar/privacy (1 session / 19 pageviews): no client-side redirect or reload loop (server component, no meta refresh / location.replace; ConsentBanner / PageViewTracker / middleware do not navigate). Most likely a bot or manual reloads. No change.

Changes

  • GA4 events: calculate, copy_result, preset_click now carry tool_slug, locale, category (plus legacy tool) via toParams() in site/src/lib/analytics/events.ts. Consent Mode v2 gating in emit() unchanged.
  • Ranking script: site/scripts/calculate-ranking.mjs (npm run report:calculate -- --days 28 --limit 50 [--by category] [--json]). Credentials from env (GA4_PROPERTY_ID + GOOGLE_APPLICATION_CREDENTIALS / GA4_SA_JSON / GA4_SA_EMAIL+GA4_SA_KEY). Not run against live GA4 (no credentials in this session).
  • Trust box (site/src/components/tools/TrustBox.tsx) on finance/health tools: about, not-advice, sources, last reviewed, methodology link. tool.trust.* strings added to all 17 locale files.
  • README: analytics section.

Action required after merge

  • GA4 Admin > Custom definitions: register event-scoped custom dimensions tool_slug, locale, category. The ranking script returns (not set) until this is done and data accumulates from the registration date.

Validation

  • npm run typecheck: pass.
  • npm run audit:i18n / npm run audit:seo: both killed by the 300 s timeout on the NAS mount (esbuild "service was stopped") before producing output. Manual key-parity check of all 17 message files against en.json passed (0 missing / 0 extra); audit:seo only inspects tool message files, which are untouched. Full build skipped (>5 min on NAS) — please rely on CI.

https://claude.ai/code/session_01AcLxcZtf35XLpenzFXTpUC

…t box

- GA4 tool events (calculate/copy_result/preset_click) now carry
  tool_slug, locale, category via shared toParams() in events.ts;
  ToolInteractionTracker/ToolFrame pass locale + category. Consent Mode
  gating in emit() unchanged.
- scripts/calculate-ranking.mjs: GA4 Data API report of calculate events
  by customEvent:tool_slug (last 28 days), SA credentials from env.
  Requires event-scoped custom dimensions tool_slug/locale/category to
  be registered in GA4 Admin (documented in README).
- TrustBox component for finance/health tools: about, not-advice,
  sources, last reviewed, methodology link; tool.trust strings added to
  all 17 locale message files.
- Technical SEO audit: no bugs found (robots/sitemap/canonical/hreflang
  OK on production); ~0 GSC impressions is the deliberate
  INDEXED_LOCALES/INDEXED_SLUGS pruning policy. /ar/privacy has no
  redirect/reload loop.

Claude-Session: https://claude.ai/code/session_01AcLxcZtf35XLpenzFXTpUC
@appdevelopsk
appdevelopsk merged commit 62ee0fe into main Sep 7, 2026
2 checks passed
appdevelopsk added a commit that referenced this pull request Sep 18, 2026
index 対象ページの関連リンクが noindex ページへ向いていた問題 (#3) と、
どこからも関連リンクを貰えない index 対象ページ (#4) をまとめて是正する。

#3 権威漏れ:
  getRelated に indexableOnly を追加し、index 対象ページでは index 対象だけを
  関連に出す。実測で 378 本中 112 本 (29.6%) が noindex 先に向いていた。
  既定は false のままとし、noindex ツールのページは従来どおり全ツールから
  関連を出す (利用者向けの導線であり、クロール上の損が無いため)。

#4 孤児:
  fill をレジストリ登録順で埋めていたため、カテゴリ内の先頭付近ばかりが
  関連に出て末尾のツールが孤児になっていた (#3 適用後も15件)。
  明示 related の被リンク数 (index 対象ページからの分のみ) が少ない順に
  埋めるよう変更する。同数なら slug 順で固定しビルド間で揺れないようにした。
  ※被リンク数の集計で getRelated を呼ぶと相互再帰になるため明示 related のみ数える。

実測 (ビルド出力の HTML で検証):
  関連リンク総数      378 → 374
  noindex 先          112 → 0
  関連が3件未満のページ  7 → 0
  被related 0 のページ  21 → 0  (被リンク分布 min=1 / median=6 / max=14)
  noindex ページ160件は平均5.98件で従来どおり (関連0件は無し)

一覧の表示件数は 223 件のまま変更していない (ken 判断)。

Claude-Session: https://claude.ai/code/session_01ENHPNZ5ngcdrTHJ2H6oAFd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant