暫定日本語訳:SaaS Technical SEO

暫定日本語訳:technical-SEO patterns specific へ software companies — JavaScript app-shell marketing サイト と 何 needs サーバー rendering, docs on subdomain vs subfolder, クロール-budget waste から freemium URL explosion, noindex vs robots.txt conflicts, と なぜ hreflang doesn't solve multi-currency pricing.

初回公開:2026年7月3日 · 最終更新:2026年8月4日 · Advanced
言語
このページには証拠シグナルが1件あります

暫定日本語訳:SaaS technical SEO is ordinary クロール → render → インデックス登録 → 順位 機能 aimed at unusual technical surface: JavaScript app-shell marketing サイト (which risk being clustered as duplicates, ない just going invisible), docs on subdomain vs subfolder ( real クロール/authority tradeoff, ない penalty), freemium 商品 その mint huge numbers of low-value dashboard/trial/ユーザー URLs (クロール-budget waste dressed up as コンテンツ), noindex-vs-robots.txt conflicts ( classic SaaS mistake), と multi-地域 pricing (どこ hreflang targets 言語/地域, 決して currency). Google と Bing run SaaS サイト 通じて 同じ pipeline as any other サイト, so 何's SaaS-specific is surface, ない アルゴリズム. fix 向けに almost all of it is architectural intent decided early, ない remediation 後に URLs exist.

暫定日本語案: TL;DR — No SaaS アルゴリズム — 同じ クロール → render → インデックス登録 → 順位 pipeline as any 暫定日本語案: サイト; 何’s SaaS-specific is technical surface it runs against. App-shell 暫定日本語案: marketing サイト risk being clustered as duplicates と mis-canonicalized, ない 暫定日本語案: just going invisible — so marketing/pricing/docs/blog need SSR/SSG while 暫定日本語案: logged-in 商品 UI できる stay クライアント-rendered because Google 決して crawls it. Docs 暫定日本語案: on subdomain vs subfolder is real クロール/authority tradeoff ( subdomain is 暫定日本語案: distinct “site”), ない penalty. Freemium apps mint SaaS version of “faceted navigation” と “infinite spaces” — dashboards, trial-flow 手順, shareable 暫定日本語案: ユーザー-generated ページ — と fix is architectural (auth-gate または robots.txt), 暫定日本語案: because noindex doesn’t save クロール budget. classic SaaS mistake is blocking 暫定日本語案: space in robots.txt noindexing it, so noindex is 決して seen; 暫定日本語案: JS-injected noindex is doubly fragile on app shell. と hreflang targets 暫定日本語案: 言語/地域, 決して currency. 暫定日本語案: Evidence for this claim Google processes JavaScript pages through crawling, rendering, and indexing, and not every bot supports JavaScript equivalently. Scope: Google JavaScript processing; server rendering can improve portability and reliability. Confidence: high · Verified: Google Search Central: JavaScript SEO basics Evidence for this claim Google warns that faceted navigation and other effectively infinite URL spaces can waste crawling resources. Scope: Large or rapidly expanding URL spaces, including parameterized application URLs. Confidence: high · Verified: Google Search Central: Managing crawling of faceted navigation URLs

Start here: surface, ない アルゴリズム

暫定日本語案: Everything SaaS-specific について technical SEO comes から shape of サイト, ない 暫定日本語案: ランキング system. Google と Bing run SaaS サイト 通じて 同じ クロール → render → インデックス登録 暫定日本語案: → 順位 pipeline as any other サイト; 何 changes is 何 その pipeline is pointed at — 暫定日本語案: app-shell marketing サイト, docs on subdomain, freemium URL explosion, multi-地域 暫定日本語案: pricing setup. So この isn’t 異なる discipline. It’s ordinary technical SEO applied 暫定日本語案: へ specific と recurring 設定 of structural facts.

暫定日本語案: sibling SaaS SEO 確認 itemizes 何 へ 暫定日本語案: 確認 全体で SaaS ページ types. この deep dive is なぜ it happens と どのように it 暫定日本語案: 機能 behind handful of technical patterns — なぜ app shells cause duplicate 暫定日本語案: misfires, なぜ クロール budget behaves differently 向けに freemium app, なぜ 暫定日本語案: noindex/robots.txt combo is self-defeating, なぜ docs subdomain-vs-subfolder is real 暫定日本語案: tradeoff, と なぜ hreflang doesn’t touch currency. どこ general mechanics live 暫定日本語案: in their own 記事 — JavaScript SEO, 暫定日本語案: クロール budget, 暫定日本語案: subdomain vs subdirectory, 暫定日本語案: hreflang, 暫定日本語案: canonicalization — I’ll point there rather than 暫定日本語案: re-explain, と focus on SaaS application.

暫定日本語案: standard disclaimer I attach へ all of この: it’s my understanding of どのように これらの 暫定日本語案: systems 機能 と どのように I’d approach 問題, ない guarantee — engines change 暫定日本語案: constantly, so verify against 主要 docs (linked in 公式 Docs と 暫定日本語案: Quotes tabs).

app-shell 問題: いつ あなた marketing サイト is single-ページ app

暫定日本語案: Start とともに pattern その dominates SaaS technical SEO と is nearly absent から 暫定日本語案: competing “SaaS technical SEO” guides. Because SaaS marketing サイト are so 多くの場合 暫定日本語案: owned by 商品 engineering と built on JavaScript framework rather than CMS, 暫定日本語案: それら frequently ship as app shell: initial HTML is essentially container, 暫定日本語案: と real コンテンツ is injected by JavaScript 後に load.

暫定日本語案: 理由 この matters more than “Google might not see my content” is subtler と 暫定日本語案: worse. In my JavaScript SEO guide I 暫定日本語案: described failure mode directly: “With app shell models, very little content and code may be shown in the initial HTML response. In fact, every page on the site may display the same code, and this code may be the exact same as the code on some other websites.” いつ すべての route’s サーバー レスポンス is near-identical shell, Google’s 暫定日本語案: deduplication できる misfire: “This can sometimes cause pages to be treated as duplicates and not immediately go to rendering. Even worse, the wrong page or even the wrong site may show in search results.”

暫定日本語案: Sit とともに その. サイト is インデックス登録 — it’s just インデックス登録 誤った. Google clusters 暫定日本語案: distinct marketing ページ together と picks 誤った canonical へ 表示. その’s 暫定日本語案: failure mode とともに no real ecommerce または media equivalent at この scale, because それらの 暫定日本語案: サイト types less commonly ship entire domain as one JS bundle. quick tell, から 暫定日本語案: 同じ guide: “If you see a lot of URLs with a low word count in Site Audit, it may indicate you have this issue.”

何 needs サーバー rendering vs 何 できる stay クライアント-rendered

暫定日本語案: framework 向けに deciding is について SEO stake, ない aesthetics. Any ページ whose entire 暫定日本語案: job is へ be found と read by someone who isn’t logged in — marketing, pricing, 暫定日本語案: comparison, docs, blog — すべき ない depend on クライアント-side JavaScript へ exist in 暫定日本語案: DOM. Its コンテンツ すべき be present in サーバー レスポンス, via SSR, static generation, 暫定日本語案: または hydration. As I put it: “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines.” Full クライアント-side rendering is risky end 暫定日本語案: of spectrum.

暫定日本語案: actual in-app 商品 UI — logged-in dashboard ユーザー reaches 後に 暫定日本語案: authenticating — is opposite ケース. Google する 決して クロール behind あなた login, so 暫定日本語案: there’s no SEO stake in どのように it renders. It できる be full CSR; その’s fine. 問題 暫定日本語案: is だけ いつ app-like CSR patterns leak out onto public, pre-login marketing 暫定日本語案: surface — which is exactly 何 single-ページ-app architecture spanning whole 暫定日本語案: domain does. Draw line at login wall: public side needs へ render サーバー-side; 暫定日本語案: private side できる do whatever 商品 team likes.

暫定日本語案: One extra argument 向けに SSR その’s grown teeth lately: wave of AI crawlers 現在 暫定日本語案: hitting サイト mostly do ない execute JavaScript. If あなた public コンテンツ だけ exists 暫定日本語案: 後に クライアント-side rendering, あなた’re invisible ない just へ weakest 検索 crawlers 暫定日本語案: ただし へ その entire cohort — one more 理由 pre-login surface すべき render on 暫定日本語案: サーバー.

Google/Bing split on dynamic rendering

暫定日本語案: Dynamic rendering — serving pre-rendered version へ bots と クライアント-side 暫定日本語案: version へ ユーザー — is genuine point どこ two engines’ 公式 guidance 暫定日本語案: diverges, と SaaS 記事 shouldn’t paper 超えて it. Bing’s webmaster team affirms it 暫定日本語案: as acceptable: bingbot “is generally able to render JavaScript”, ただし Bing 暫定日本語案: explicitly endorses dynamic rendering 暫定日本語案: as non-cloaking “as long as you make a good faith effort to return the same content to all visitors, with the only difference being the content is rendered on the server for bots and on the client for real users.”

暫定日本語案: My own position is opposite, と I’ll flag it clearly as my opinion. In my 暫定日本語案: JavaScript SEO guide I wrote その dynamic rendering “is a workaround and, to be honest, I never recommended it” — it 作る setups more complex と harder へ troubleshoot, と 暫定日本語案: “it’s definitely cloaking” in practice. So: Bing’s 公式 line calls it fine; 暫定日本語案: Google’s own JS docs treat it more as legacy workaround than 最初 choice; I’d 避ける 暫定日本語案: it. If あなた できる do real SSR/SSG, do その instead of dynamic rendering. Present この へ 暫定日本語案: あなた team as live disagreement, ない settled best practice.

暫定日本語案: One more app-shell-specific cost worth naming: クライアント-side データ fetching is expensive 暫定日本語案: へ クロール. As I noted in guide, “JavaScript XHR requests eat crawl budget, and I mean they gobble it down. Unlike most other resources that are cached, these get fetched live during the rendering process.” app-shell marketing サイト その pulls its 暫定日本語案: copy から API on すべての route isn’t just risking duplicate clustering — it’s paying 暫定日本語案: uncached クロール cost on すべての render.

Docs: subdomain または subfolder, と なぜ it’s real tradeoff

暫定日本語案: Almost すべての SaaS company faces この decision と almost no competing guide addresses 暫定日本語案: it: does ドキュメント live at example.com/docs/ (subfolder) または docs.example.com 暫定日本語案: (subdomain)? decision is frequently forced — Mintlify, ReadMe, GitBook, と 暫定日本語案: Notion-based docs 多くの場合 デフォルト へ subdomain または third-party domain — so it’s worth 暫定日本語案: understanding mechanics whether または ない あなた get choice.

暫定日本語案: 最初, kill myth: there’s no ランキング penalty 向けに subdomain. John Mueller has 暫定日本語案: said it plainly — “In general, we see these the same” 暫定日本語案: について どのように Google treats subdomains vs subdirectories, adding “I would personally try to keep things together as much as possible” と, 向けに indifferent ケース, 暫定日本語案: “if you’re like ‘well I don’t care either way’ then I would just keep it within the same site.”

暫定日本語案: ただし “no penalty” isn’t “no difference.” Google’s own 暫定日本語案: サイト-names ドキュメント 暫定日本語案: confirms it treats subdomain as its own “site” — サイト names aren’t supported at 暫定日本語案: subdirectory level. その’s closest thing へ 公式 technical fact behind 暫定日本語案: tradeoff, と it has concrete consequences:

  • 暫定日本語案: クロール budget is per-hostname. separate docs subdomain gets its own クロール 暫定日本語案: allocation. その’s feature ( slow または broken docs corpus won’t starve 暫定日本語案: marketing サイト’s クロール, と vice versa) ただし また cost (authority と internal-link 暫定日本語案: signal don’t flow 全体で boundary 自動).
  • 暫定日本語案: 検索 Console treats it as separate プロパティ. あなた verify と 監視 暫定日本語案: docs.example.com on its own. Easy へ forget; easy へ leave un-instrumented.
  • 暫定日本語案: Versioned docs multiply duplication. docs corpus とともに v1/v2/legacy trees できる 暫定日本語案: generate enormous near-duplicate クロール waste — canonicalize unchanged 古い versions へ 暫定日本語案: 現在の, または differentiate them clearly.

暫定日本語案: Here’s なぜ docs are arguably legitimate subdomain ケース Mueller describes as 暫定日本語案: “slightly different”: docs corpus has its own release cadence, its own information 暫定日本語案: architecture, と 多くの場合 its own third-party tooling. If あなた have 無料 choice と want 暫定日本語案: へ consolidate authority と internal-linking signal, subfolder is cleaner デフォルト. 暫定日本語案: If あなた tooling forces subdomain, または あなた want docs’ クロール と authority pool 暫定日本語案: isolated から marketing サイト, subdomain is fine — just link it prominently から 暫定日本語案: marketing nav/footer so authority reaches it, と verify it separately.

クロール budget と freemium URL 問題

暫定日本語案: “Why would a SaaS site have a crawl-budget problem at all — we’re not an ecommerce site with millions of product pages?” Because freemium と trial 商品 generate 同じ 暫定日本語案: URL sprawl 通じて 異なる mechanism. すべての dashboard state, すべての ユーザー profile, 暫定日本語案: すべての shareable “here’s my report” ページ, すべての 手順 of trial flow できる mint unique, 暫定日本語案: technically crawlable URL.

暫定日本語案: へ Googlebot, その’s indistinguishable から classic low-value-URL categories Google 暫定日本語案: has named 向けに years — faceted navigation, session IDs, infinite spaces. 暫定日本語案: large-サイト クロール-budget guide 暫定日本語案: と Gary Illyes’ original クロール-budget post lay out それらの categories; SaaS instances 暫定日本語案: map straight onto them. ユーザー profile ページ と per-session dashboard states are あなた 暫定日本語案: “faceted navigation.” Trial-flow 手順 URLs と share—レポート ページ are あなた “infinite spaces.” It’s 同じ waste, SaaS-flavored.

暫定日本語案: Bing frames 同じ idea more bluntly. Fabrice Canel’s line is worth taping へ wall: 暫定日本語案: “Less is more for SEO. Never forget that. Less URLs to crawl, better for SEO.” 暫定日本語案: すべての extra dashboard permutation isn’t neutral; it’s self-inflicted クロール cost even 暫定日本語案: 前に quality enters picture. Illyes has separately described クロール scheduling as 暫定日本語案: Google ordering サイト’s URLs by importance と 機能 通じて その bucket as far as 暫定日本語案: サーバー できる handle (検索エンジン Roundtable coverage) — 暫定日本語案: so junk URLs don’t just sit harmlessly; それら compete 向けに 同じ finite fetch capacity 暫定日本語案: as あなた marketing と docs ページ.

この is architecture, ない cleanup

暫定日本語案: critical reframing: fix 向けに freemium URL sprawl is architectural, decided up 暫定日本語案: front — ない per-ページ noindex cleanup 後に URLs already exist. 保つ その whole 暫定日本語案: surface out of crawlable space から start: either behind authentication (so it’s 暫定日本語案: 決して fetchable) または blocked as space in robots.txt. Trying へ remediate 後に 暫定日本語案: fact — letting Google discover million dashboard URLs と then bolting noindex onto 暫定日本語案: template — is both slower と, as next section 表示, easy へ get exactly 誤った.

暫定日本語案: と 正しい tempting myth here explicitly: noindex does ない save クロール budget. 暫定日本語案: Google still has へ リクエスト ページ へ see noindex tag, so noindex ページ is 暫定日本語案: still クロール ページ. If goal is へ stop Google spending fetches on whole section, 暫定日本語案: noindex is 誤った ツール — あなた need robots.txt disallow (または 保つ it behind auth). 暫定日本語案: One more corrective 向けに teams tempted へ 超えて-インデックス登録 on この: fixing クロール waste lifts 暫定日本語案: efficiency, ない rankings. increased クロール rate doesn’t, by itself, improve あなた 暫定日本語案: positions ( point Google itself has made in its 暫定日本語案: クロール-budget post). 暫定日本語案: 理由 へ fix it is へ 作る sure クロール lands on あなた marketing, pricing, と docs 暫定日本語案: ページ instead of infinite dashboard permutations — as I’ve put it 前に in my 暫定日本語案: クロール-budget guide, more クロール doesn’t mean 暫定日本語案: あなた’ll 順位 better, ただし if あなた ページ aren’t クロール と インデックス登録 それら できる’t 順位 at all.

Noindex vs robots.txt: classic SaaS conflict

暫定日本語案: Here’s single 大半の 一般的な real-world SaaS technical mistake, と it comes straight 暫定日本語案: out of previous section. team wants へ 保つ /app/, /dashboard/, または /trial/ 暫定日本語案: out of Google. So それら do both: block space in robots.txt 追加 noindex 暫定日本語案: へ それらの templates, figuring belt-と-suspenders is safer.

暫定日本語案: It’s backwards. two controls interact, と combining them この way is 暫定日本語案: self-defeating. noindex 必要とする ページ へ be crawlable へ be seen — Google has 暫定日本語案: へ fetch ページ へ read tag. robots.txt disallow 防ぐ その fetch. So on 暫定日本語案: URL その’s both disallowed と noindexed, Google 決して crawls it, 決して sees 暫定日本語案: noindex, と — if anything links へ その URL externally — URL できる still surface in 暫定日本語案: 検索結果, just なしで snippet. あなた’ve produced exact leak あなた were trying 暫定日本語案: へ 防ぐ, と 現在 あなた できる’t fix it とともに noindex because robots block stops 暫定日本語案: クロール その noindex needs.

暫定日本語案: Google’s noindex ドキュメント 暫定日本語案: states mechanism と precondition directly. いつ Googlebot crawls ページ と 暫定日本語案: sees tag, “Google will drop that page entirely from Google Search results, regardless of whether other sites link to it” — ただし “for the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler.” One ツール per goal: noindex へ 保つ 暫定日本語案: crawlable ページ out of インデックス登録; robots.txt へ stop クロール whole space あなた don’t 暫定日本語案: care について インデックス登録. 決して both on 同じ URL.

JS-injected noindex is doubly fragile on app shell

暫定日本語案: There’s SaaS-specific twist その stacks on top of app-shell 問題. If あなた 暫定日本語案: noindex tag is だけ 追加 by クライアント-side JavaScript — ない present in initial 暫定日本語案: サーバー レスポンス — then it depends on Google successfully rendering ページ へ be seen at 暫定日本語案: all. その’s precisely layer その’s least reliable on app-shell architecture, と 暫定日本語案: 検索エンジン Roundtable has 暫定日本語案: reported Google bug 暫定日本語案: どこ noindex injected via JavaScript in React-style app wasn’t 常に respected と 暫定日本語案: ページ got インデックス登録 anyway.

暫定日本語案: takeaway is rule: 向けに anything on JavaScript-heavy SaaS サイト, put noindex in 暫定日本語案: サーバー-rendered HTML または HTTP header, ない in tag あなた framework injects at 暫定日本語案: runtime. noindex その だけ exists 後に render is noindex あなた できる’t rely on.

Multi-地域 SaaS: canonical と hreflang aren’t pricing solution

暫定日本語案: 最後 SaaS-specific pattern is 向けに 商品 その sell へ multiple countries. 暫定日本語案: recurring conflation is treating hreflang as currency solution. It isn’t. Hreflang’s 暫定日本語案: entire contract is 言語 + 地域 targeting — telling Google which URL へ swap へ 暫定日本語案: SERP 向けに searcher in given 言語/locale. It says nothing について which 価格 へ 暫定日本語案: display.

暫定日本語案: So US/UK/AU pricing ページ, all in English ただし 各 表示 異なる currency, is ない 暫定日本語案: solved by hreflang. その’s two separate 問題:

  • 暫定日本語案: ** 地域-targeting question** — which of three English ページ すべき 表示 向けに 暫定日本語案: UK searcher — is hreflang/canonical job. 使用 per-地域 URLs とともに self-referencing 暫定日本語案: canonicals plus hreflang annotations 間に them.
  • 暫定日本語案: ** currency-display question** — which 価格 表示 on ページ — needs its own 暫定日本語案: mechanism entirely: URL-based regional ページ, geo-IP, アカウント 設定, または explicit 暫定日本語案: 地域 picker. Hreflang する 決して touch it.

暫定日本語案: と caution even 後に あなた’ve done 地域 targeting right: if ページ are 暫定日本語案: 同じ-言語 と near-identical apart から currency figure, Google 可能性がある still consolidate 暫定日本語案: them as duplicates regardless of hreflang, because コンテンツ isn’t meaningfully 暫定日本語案: 異なる. Google’s 暫定日本語案: multi-regional guidance 暫定日本語案: addresses exactly この ケース: “If you provide similar or duplicate content on different URLs in the same language as part of a multi-regional site (for instance, if both example.de/ and example.com/de/ show similar German language content), pick a preferred version and use the rel="canonical" element and hreflang tags to make sure that the correct language or regional URL is served to searchers.” lesson 向けに SaaS: 暫定日本語案: if だけ difference 間に あなた regional pricing ページ is number, differentiate 暫定日本語案: them meaningfully または accept その Google 可能性がある fold them together — と handle currency as 暫定日本語案: display concern, ない hreflang one. (Worth one note: Bing leans on content-language 暫定日本語案: meta tag rather than hreflang, so its international handling diverges から Google’s.)

technical throughline

暫定日本語案: 手順 back と すべての one of これらの is really 同じ tension. SaaS 商品-engineering 暫定日本語案: habits — 構築 everything as single-ページ app, generate URL 向けに everything, ship fast 暫定日本語案: と 追加 internationalization later — collide とともに 何 検索エンジン need: stable, 暫定日本語案: crawlable, non-duplicated, appropriately-scoped URLs. app shell is SPA-everything 暫定日本語案: meeting deduplication. freemium URL explosion is generate—URL-向けに-everything meeting 暫定日本語案: クロール budget. multi-地域 mess is ship-fast-追加-i18n-later meeting hreflang と 暫定日本語案: canonical.

暫定日本語案: と in すべての ケース durable fix is 同じ: architectural intent, decided early — 暫定日本語案: render public surface サーバー-side, 保つ app surface out of crawlable space, 暫定日本語案: scope あなた international URLs deliberately — rather than remediation 後に URLs already 暫定日本語案: exist. その’s whole of SaaS technical SEO: ない 異なる rulebook, just ordinary 暫定日本語案: rulebook applied とともに foresight へ specific shape of サイト.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.