Skip to content

feat(website): add "comfyui app" SEO keywords to product pages#11834

Draft
christian-byrne wants to merge 4 commits intomainfrom
glary/website-seo-comfyui-app-keywords
Draft

feat(website): add "comfyui app" SEO keywords to product pages#11834
christian-byrne wants to merge 4 commits intomainfrom
glary/website-seo-comfyui-app-keywords

Conversation

@christian-byrne
Copy link
Copy Markdown
Contributor

@christian-byrne christian-byrne commented May 2, 2026

PR Created by the Glary-Bot Agent


Summary

Adds "comfyui app" / "comfyui web app" / "comfy ui application" keywords to the titles and meta descriptions of the home, download, and Comfy Cloud pages (and zh-CN equivalents) to recover organic traffic for those queries.

Context

Organic traffic for the query "comfyui app" dropped after https://docs.comfy.org/interface/app-mode started outranking the product/landing pages. The docs page about app-mode converts worse than the product pages, so we want Google to prefer comfy.org product pages for that query. The cleanest, lowest-risk lever is on-page SEO metadata.

Changes

  • What:
    • apps/website/src/pages/index.astro → title ComfyUI App — Professional Control of Visual AI + product-focused description.
    • apps/website/src/pages/download.astro → title Download the ComfyUI App — Run Visual AI Locally + desktop-app description.
    • apps/website/src/pages/cloud/index.astro → title Comfy Cloud — The ComfyUI Web App + web-app description.
    • apps/website/src/pages/zh-CN/{index,download,cloud/index}.astro → localised Chinese titles and descriptions so the zh-CN product pages no longer fall back to the English BaseLayout default.
    • apps/website/src/layouts/BaseLayout.astro → unchanged net-net (touched then reverted to neutral copy after review feedback so non-product / non-localised pages keep their existing, generic fallback).
  • Breaking: none. Visual content, routing, and components are untouched — only <title> and <meta> tags change.

Review Focus

  • The keyword copy reads naturally (no stuffing) and stays under typical SERP truncation limits (≤ ~165 chars).
  • zh-CN pages get Chinese descriptions — they intentionally don't repeat the English keywords, since "comfyui app" is an English-language query.
  • Pre-existing behaviour preserved: zh-CN pages without an explicit description still inherit the English BaseLayout default. Fixing that fallback for the whole zh-CN tree is out of scope for this PR — happy to follow up if desired.

Verification

  • pnpm typecheck — 0 errors
  • pnpm build — 39 pages built clean
  • pnpm test:unit — 23/23 pass
  • pnpm format:check apps/website/src — clean
  • Manually verified rendered <title> and <meta name="description"> via Playwright on /, /download, /cloud, and the zh-CN equivalents.

Screenshots

Home page rendered with the new title (visible in browser tab / SERP preview); visual content unchanged.

Screenshots

Home page rendered after SEO meta changes — visual content unchanged

┆Issue is synchronized with this Notion page by Unito

Glary-Bot added 2 commits May 2, 2026 06:41
…ions

Improves SEO for queries like 'comfyui app', 'comfyui web app', and
'comfy ui application' that previously drove organic traffic but
dropped after docs.comfy.org/interface/app-mode started outranking the
product pages.

- BaseLayout: default description now references the ComfyUI app and
  web app to cover pages without an explicit description.
- index: title 'ComfyUI App — Professional Control of Visual AI' and
  product-focused description.
- download: title and description target the desktop app download
  intent.
- cloud: title and description position Comfy Cloud as the official
  ComfyUI web app.
- zh-CN mirrors get localised Chinese titles/descriptions instead of
  inheriting the English BaseLayout default.
Address review feedback: keep keyword-targeted copy on product pages
only; non-product pages (about, contact) and zh-CN pages without an
explicit description fall back to the original site-wide tagline.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 2, 2026

📝 Walkthrough

Walkthrough

Updated BaseLayout to accept an optional keywords prop and render a corresponding meta tag; six Astro pages (EN & ZH: index, cloud, download) now pass description and keywords (and refined titles on some pages) when invoking BaseLayout. No other structural or exported-entity changes.

Changes

Page metadata & layout wiring

Layer / File(s) Summary
Data Shape
apps/website/src/layouts/BaseLayout.astro
Props interface adds optional keywords?: string[].
Core Implementation
apps/website/src/layouts/BaseLayout.astro
Destructures keywords from Astro.props, builds keywordsContent (comma-separated string or undefined), and conditionally renders <meta name="keywords" content=... /> in the head.
Wiring / Integration
apps/website/src/pages/index.astro, apps/website/src/pages/cloud/index.astro, apps/website/src/pages/download.astro, apps/website/src/pages/zh-CN/index.astro, apps/website/src/pages/zh-CN/cloud/index.astro, apps/website/src/pages/zh-CN/download.astro
Pages updated to call BaseLayout with title, a new description string, and a keywords array (some titles refined); page structure otherwise unchanged.
Tests / Docs
(no files)
No tests or documentation files changed.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

A rabbit hops through meta lands,
Adds keywords with gentle hands,
Titles tuned and descriptions spun,
Six pages brighten in the sun,
🐇✨

🚥 Pre-merge checks | ✅ 7
✅ Passed checks (7 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding SEO keywords targeting 'comfyui app' queries to product pages.
Description check ✅ Passed The description is comprehensive and well-structured, covering summary, context, detailed changes, breaking changes status, review focus, verification, and screenshots.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
End-To-End Regression Coverage For Fixes ✅ Passed PR title uses 'feat' prefix with no bug-fix language keywords; explicitly a feature addition for SEO keyword targeting, not a bug fix.
Adr Compliance For Entity/Litegraph Changes ✅ Passed PR only modifies website pages and layouts in apps/website/, outside the scope of src/lib/litegraph/, src/ecs/, and graph entity files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch glary/website-seo-comfyui-app-keywords

Review rate limit: 4/5 reviews remaining, refill in 12 minutes.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 2, 2026

🌐 Website E2E

Tip

All tests passed.

Status ✅ Passed
Report View Report

🔗 Website Preview

Website Preview: https://comfy-website-preview-pr-11834.vercel.app

This commit: https://website-frontend-cbgx4lb9n-comfyui.vercel.app

Last updated: 2026-05-02T20:04:25Z for e2e1079

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/website/src/pages/index.astro`:
- Around line 13-16: The home meta description passed to BaseLayout via the
description prop in index.astro is too long (~194 chars); shorten it to ~155
characters (max ~165) while keeping key terms like "ComfyUI", "web app", and
"desktop application" for SEO relevance; update the description string in the
BaseLayout declaration in apps/website/src/pages/index.astro to a concise
sentence (~140–160 chars) that preserves intent but fits SERP limits.

In `@apps/website/src/pages/zh-CN/index.astro`:
- Around line 13-16: Update the title prop on the BaseLayout in
apps/website/src/pages/zh-CN/index.astro so it contains the "ComfyUI" app
keyword (e.g., include "ComfyUI 应用" or "ComfyUI App"); specifically modify the
title="Comfy — 视觉 AI 的最强可控性" passed to the BaseLayout component so the new title
string includes "ComfyUI 应用" (or both Chinese and English variants if desired)
to ensure title+description covers "comfyui app" queries.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8a8ed06a-1144-40df-9db8-1c694474a9e7

📥 Commits

Reviewing files that changed from the base of the PR and between 167a1e6 and b1e9d3d.

📒 Files selected for processing (6)
  • apps/website/src/pages/cloud/index.astro
  • apps/website/src/pages/download.astro
  • apps/website/src/pages/index.astro
  • apps/website/src/pages/zh-CN/cloud/index.astro
  • apps/website/src/pages/zh-CN/download.astro
  • apps/website/src/pages/zh-CN/index.astro

Comment thread apps/website/src/pages/index.astro
Comment thread apps/website/src/pages/zh-CN/index.astro
Glary-Bot added 2 commits May 2, 2026 06:54
Address CodeRabbit review feedback:
- Home description was 193 chars (exceeded SERP truncation ~165);
  shortened to 152 chars while preserving 'ComfyUI', 'web app', and
  'desktop app' keywords.
- zh-CN home title now includes 'ComfyUI 应用' so the title contributes
  to 'comfyui app' query coverage alongside the description.
Rescope per request: keyword targeting must live in meta tags, not in
the visible browser-tab/SERP titles which are considered product copy.

- Restore original titles on home, download, cloud (and zh-CN mirrors)
  to their pre-PR strings.
- Keep the keyword-rich <meta name=description> on those product pages
  (hidden SEO copy, drives the SERP snippet).
- Add a new <meta name=keywords> tag, opt-in via a 'keywords' prop on
  BaseLayout, populated only on the three product pages targeting
  'comfyui app' / 'comfyui web app' / 'comfy ui application'.
@glary-bot
Copy link
Copy Markdown

glary-bot Bot commented May 2, 2026

Rescoped per feedback

Pushed e2e1079: keyword targeting now lives only in meta tags — visible page titles (browser tab / SERP) are restored to their original pre-PR strings.

What's in the PR now

Surface Before After
<title> (visible) "Comfy — Professional Control of Visual AI" etc. Unchanged — same as origin/main
<meta name="description"> (hidden) default fallback New — keyword-rich product copy on home, download, cloud (+ zh-CN)
<meta name="keywords"> (hidden) (didn't exist) New — opt-in prop on BaseLayout, populated only on the 3 product pages

BaseLayout.astro now accepts an optional keywords?: string[] prop and renders <meta name="keywords"> when provided, joined as comma-separated. Pages without the prop emit no keywords tag (no behaviour change).

robots.txt / sitemap

Left untouched. robots.txt is for crawler access rules, not keywords — adding keyword content there has no SEO effect. The existing sitemap already exposes all the product URLs and doesn't take per-page keywords.

Caveat on <meta name="keywords">

Google ignores this tag (publicly stated since 2009), but Bing and several smaller / regional engines still use it as a weak signal — and Baidu (relevant for the zh-CN pages) gives it some weight. So it's harmless and slightly useful for the non-Google share of traffic. The real lift will still come from the new <meta name="description"> content, which all SERPs read.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/website/src/pages/zh-CN/index.astro`:
- Line 16: The zh‑CN page's metadata uses the keywords prop and currently
includes multiple English phrases; update the keywords array in the zh-CN
index.astro page to remove or translate all English entries into Chinese (keep
existing Chinese items like "ComfyUI 应用", "ComfyUI 网页版", etc.), replacing items
such as "comfyui app", "comfyui web app", "comfyui application", "ComfyUI 下载",
"可视化 AI", "节点式 AI", "生成式 AI 工作流" with appropriate Chinese-only equivalents so
the keywords list aligns with the zh-CN localization strategy.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ef51a8ce-367a-4e99-b4ec-40a8230d2409

📥 Commits

Reviewing files that changed from the base of the PR and between 742932e and e2e1079.

📒 Files selected for processing (7)
  • apps/website/src/layouts/BaseLayout.astro
  • apps/website/src/pages/cloud/index.astro
  • apps/website/src/pages/download.astro
  • apps/website/src/pages/index.astro
  • apps/website/src/pages/zh-CN/cloud/index.astro
  • apps/website/src/pages/zh-CN/download.astro
  • apps/website/src/pages/zh-CN/index.astro
✅ Files skipped from review due to trivial changes (1)
  • apps/website/src/pages/zh-CN/cloud/index.astro
🚧 Files skipped from review as they are similar to previous changes (2)
  • apps/website/src/pages/zh-CN/download.astro
  • apps/website/src/pages/cloud/index.astro

<BaseLayout
title="Comfy — 视觉 AI 的最强可控性"
description="ComfyUI 是面向视觉创作者的开源生成式 AI 应用。可在本地下载桌面应用,或在云端使用 ComfyUI 网页版,搭建节点式的图像、视频与 3D AI 工作流。"
keywords={['comfyui app', 'comfyui web app', 'comfyui application', 'ComfyUI 应用', 'ComfyUI 网页版', 'ComfyUI 桌面应用', 'ComfyUI 下载', '可视化 AI', '节点式 AI', '生成式 AI 工作流']}
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot May 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Align zh-CN keywords with the localization intent.

The keywords list still contains multiple English phrases, which conflicts with the stated zh-CN strategy to avoid repeating English keyword terms.

Suggested adjustment
-  keywords={['comfyui app', 'comfyui web app', 'comfyui application', 'ComfyUI 应用', 'ComfyUI 网页版', 'ComfyUI 桌面应用', 'ComfyUI 下载', '可视化 AI', '节点式 AI', '生成式 AI 工作流']}
+  keywords={['ComfyUI 应用', 'ComfyUI 网页版', 'ComfyUI 桌面应用', 'ComfyUI 下载', '可视化 AI', '节点式 AI', '生成式 AI 工作流']}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
keywords={['comfyui app', 'comfyui web app', 'comfyui application', 'ComfyUI 应用', 'ComfyUI 网页版', 'ComfyUI 桌面应用', 'ComfyUI 下载', '可视化 AI', '节点式 AI', '生成式 AI 工作流']}
keywords={['ComfyUI 应用', 'ComfyUI 网页版', 'ComfyUI 桌面应用', 'ComfyUI 下载', '可视化 AI', '节点式 AI', '生成式 AI 工作流']}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@apps/website/src/pages/zh-CN/index.astro` at line 16, The zh‑CN page's
metadata uses the keywords prop and currently includes multiple English phrases;
update the keywords array in the zh-CN index.astro page to remove or translate
all English entries into Chinese (keep existing Chinese items like "ComfyUI 应用",
"ComfyUI 网页版", etc.), replacing items such as "comfyui app", "comfyui web app",
"comfyui application", "ComfyUI 下载", "可视化 AI", "节点式 AI", "生成式 AI 工作流" with
appropriate Chinese-only equivalents so the keywords list aligns with the zh-CN
localization strategy.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushing back on this one — keeping as-is.

The original rationale ("zh-CN gets Chinese, no English") was specifically about the visible description (which becomes the SERP snippet — mixing English into a Chinese-language snippet hurts CTR for the local audience). That logic doesn't extend to <meta name="keywords">, which is:

  1. Invisible — it's a relevance hint to the crawler, not a user-facing string. There's no CTR or readability cost to listing both languages.
  2. The actual recovery target. This whole PR exists because of dropped rankings on the English query "comfyui app". Stripping comfyui app / comfyui web app / comfyui application from the zh-CN keyword set would actively work against the PR's stated goal — those English terms are the ones we're trying to recover, including for international/diaspora users who happen to land on the localized URL.

Concretely, the current zh-CN keyword list intentionally pairs:

  • English query targets (comfyui app, comfyui web app, comfyui application) — for the original recovery use case
  • Chinese equivalents (ComfyUI 应用, ComfyUI 网页版, etc.) — for native zh-CN search

That's the SEO-correct shape for a localized page that should rank in both language markets. The description is monolingual (per the earlier rationale); the keywords list is intentionally bilingual.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skipped: comment is from another GitHub bot.

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.

3 participants