Catalog / hnigel.ink
65

SEO audit for hnigel.ink

走路工 - Salary Walker

other

Health 65/100 (fair) · 16 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)

即時薪資累積放置遊戲,在工作時間自動計算你的每秒收入。支援台股美股即時報價彈幕。

16
pages crawled
15
indexable pages
0
errors
23
warnings
120
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Security 72 0 15 0
Content 87 0 7 0
Budget 98 0 1 0
Agent Readiness 100 0 0 11
Cache 100 0 0 7
Canonical 100 0 0 15
Crawlability 100 0 0 1
Headings 100 0 0 8
Links 100 0 0 7
Meta Description 100 0 0 10
Performance 100 0 0 31
Social 100 0 0 16
Structured Data 100 0 0 14
Findings

Warnings (3 rules)

warning robots.txt-disallowed URL receives internal links (crawl-budget leak)

Rule budget.disallow_linked · Budget · 1 occurrence(s)

  • https://salary-walker.hnigel.ink/devlog — internal links point to https://salary-walker.hnigel.ink/devlog, which robots.txt disallows for Googlebot — Googlebot discovers the URL, checks robots, then rejects it without indexing, wasting crawl budget and losing the link equity. Remove the internal links, or use noindex instead of Disallow if the page should be fetchable. Linked from: https://salary-walker.hnigel.ink/, https://salary-walker.hnigel.ink/about, https://salary-walker.hnigel.ink/privacy.

warning Content-Type header doesn't match the actual content

Rule headers.content_type_mismatch · Security · 15 occurrence(s)

  • https://salary-walker.hnigel.ink/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/?lang=en — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/?lang=ja — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/about — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/help — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/invest — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/invest?lang=en — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/invest?lang=ja — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/pricing — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/pricing?lang=en — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/pricing?lang=ja — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/privacy — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/referral — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/refund — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://salary-walker.hnigel.ink/terms — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".

Notices (16 rules)

notice Heading levels skip a level

Rule agent.heading_skip · Agent Readiness · 3 occurrence(s)

notice No llms.txt for AI agents

Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)

notice No main landmark for AI agents

Rule agent.no_main_landmark · Agent Readiness · 7 occurrence(s)

notice Page served uncached (no-store/private or CDN bypass)

Rule cache.not_cacheable · Cache · 7 occurrence(s)

notice Canonical points to a different URL

Rule canonical.non_self · Canonical · 15 occurrence(s)

notice Multiple <h1> elements

Rule h1.multiple · Headings · 8 occurrence(s)

notice Page has only one internal inlink (fragile crawl path)

Rule links.single_inlink · Links · 7 occurrence(s)

notice Missing Open Graph tags

Rule og.missing · Social · 8 occurrence(s)

notice Large DOM (over 1500 elements) slows rendering & interaction

Rule perf.dom_size_large · Performance · 1 occurrence(s)

  • https://salary-walker.hnigel.ink/help — the page has 3871 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.

notice No ETag header (no conditional GET for unchanged pages)

Rule perf.no_etag · Performance · 15 occurrence(s)

  • https://salary-walker.hnigel.ink/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/?lang=en — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/?lang=ja — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/about — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/help — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/invest — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/invest?lang=en — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/invest?lang=ja — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/pricing — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/pricing?lang=en — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/pricing?lang=ja — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/privacy — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/referral — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/refund — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://salary-walker.hnigel.ink/terms — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.

notice No Last-Modified header (no conditional GET for unchanged pages)

Rule perf.no_last_modified · Performance · 15 occurrence(s)

  • https://salary-walker.hnigel.ink/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/?lang=en — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/?lang=ja — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/about — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/help — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/invest — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/invest?lang=en — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/invest?lang=ja — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/pricing — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/pricing?lang=en — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/pricing?lang=ja — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/privacy — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/referral — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/refund — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://salary-walker.hnigel.ink/terms — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.

notice Blocked by robots.txt

Rule robots.blocked · Crawlability · 1 occurrence(s)

notice Deep page has no BreadcrumbList structured data

Rule schema.breadcrumb_missing · Structured Data · 6 occurrence(s)

Pages (showing 16 of 16)
URLStatusIndexableWordsIn-links
https://salary-walker.hnigel.ink/about
關於走路工 — Salary Walker
200 yes 446 15
https://salary-walker.hnigel.ink/help
常見問題與使用說明 — 走路工 Salary Walker
200 yes 11504 15
https://salary-walker.hnigel.ink/pricing
方案與定價 — 走路工 Salary Walker
200 yes 566 15
https://salary-walker.hnigel.ink/privacy
隱私權政策 — 走路工 Salary Walker
200 yes 773 15
https://salary-walker.hnigel.ink/terms
服務條款 — 走路工 Salary Walker
200 yes 1177 15
https://salary-walker.hnigel.ink/
走路工 - Salary Walker
200 yes 185 8
https://salary-walker.hnigel.ink/referral
邀請好友 — 走路工 Salary Walker
200 yes 185 8
https://salary-walker.hnigel.ink/refund
退款政策 — 走路工 Salary Walker
200 yes 464 2
https://salary-walker.hnigel.ink/?lang=en
走路工 - Salary Walker
200 yes 185 1
https://salary-walker.hnigel.ink/?lang=ja
走路工 - Salary Walker
200 yes 185 1
https://salary-walker.hnigel.ink/invest
投資追蹤 — 走路工 Salary Walker
200 yes 185 1
https://salary-walker.hnigel.ink/invest?lang=en
投資追蹤 — 走路工 Salary Walker
200 yes 185 1
https://salary-walker.hnigel.ink/invest?lang=ja
投資追蹤 — 走路工 Salary Walker
200 yes 185 1
https://salary-walker.hnigel.ink/pricing?lang=en
方案與定價 — 走路工 Salary Walker
200 yes 566 1
https://salary-walker.hnigel.ink/pricing?lang=ja
方案與定價 — 走路工 Salary Walker
200 yes 566 1
https://salary-walker.hnigel.ink/devlog 0 no 0 15

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →