From 2b130674924a26b6074704abbc7e5b94ae859e5d Mon Sep 17 00:00:00 2001 From: kdletters Date: Sun, 12 Jul 2026 19:32:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A6=96=E9=A1=B5=E5=93=81?= =?UTF-8?q?=E7=89=8C=E6=96=87=E6=A1=88=E5=B1=82=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新首页唯一 H1、小眉题、产品说明与权益文案 统一游戏美术 AI 创作工具 H2 和功能弹窗 H2 语义 补充首页标题层级测试与 SEO、创作主页文档约束 --- .../【SEO】官网SEO地基实施约定-2026-07-10.md | 4 +- ...作】创作主页与项目入口改版计划-2026-06-18.md | 8 +-- .../CreationLandingView.test.tsx | 30 +++++++++-- .../creation-home/CreationLandingView.tsx | 26 ++++++---- src/index.css | 52 +++++++++++++++---- 5 files changed, 91 insertions(+), 29 deletions(-) diff --git a/docs/technical/【SEO】官网SEO地基实施约定-2026-07-10.md b/docs/technical/【SEO】官网SEO地基实施约定-2026-07-10.md index 4c77207ab..3cc1d9e0e 100644 --- a/docs/technical/【SEO】官网SEO地基实施约定-2026-07-10.md +++ b/docs/technical/【SEO】官网SEO地基实施约定-2026-07-10.md @@ -9,7 +9,9 @@ - `public/robots.txt` 是真实静态文件;非 SEO 产品路径本轮阻止抓取,但不把 `Disallow` 解释为保证不收录。 - `public/sitemap.xml` 本轮只包含 `https://www.genarrative.world/`,不写难以持续维护的 `lastmod`。 - `index.html` 提供首页 title、description、canonical、robots、基础 OG/Twitter 文本和 JSON-LD;没有正式分享图时不写 `og:image`、`twitter:image` 或 JSON-LD `logo`。 -- 首页渲染后只有一个稳定、可见的产品定位 H1;动态作品名、卡片标题、按钮内部标题和隐藏 Tab 不作为 H1。 +- 桌面首页与 `/creation` 创作主页渲染后只有一个稳定、可见的产品定位 H1,固定为 `陶泥儿 · 开启全民精品游戏创作`;小眉题、产品说明、权益提示、动态作品名、卡片标题、按钮内部标题、弹窗标题和隐藏 Tab 不作为 H1。 +- H1 下方真实展示游戏美术 AI 工作台、美术 Agent、无限画布以及角色、场景、UI、宣发素材说明,不使用透明、极小、屏幕外或页面底部堆词文本;`游戏美术 AI 创作工具` 使用 H2,能力卡标题使用 H3。 +- 本轮可见首页文案调整不得删除或改写已经验收的 title、description、canonical、robots、OG/Twitter 文本和 JSON-LD。 - Nginx 和 Pingora 只对当前已知完整 SPA 路径回退 `index.html`;未知路径以及 `/creation/not-exist` 等同前缀未知路径返回 HTTP 404。 - Nginx access log 继续使用现有 `$http_referer`,本轮不新增前端 pageview 或用户身份采集。 diff --git a/docs/【玩法创作】创作主页与项目入口改版计划-2026-06-18.md b/docs/【玩法创作】创作主页与项目入口改版计划-2026-06-18.md index 5d0efaeac..b909b56d4 100644 --- a/docs/【玩法创作】创作主页与项目入口改版计划-2026-06-18.md +++ b/docs/【玩法创作】创作主页与项目入口改版计划-2026-06-18.md @@ -22,10 +22,12 @@ ### 顶部品牌区 -- 标题:`陶泥儿 - 开启全民精品游戏创作` +- 小眉题:`陶泥儿 Genarrative|游戏美术 AI 创作工具`,保持普通小字,不使用 heading 标签。 +- 唯一 H1:`陶泥儿 · 开启全民精品游戏创作`。 +- 产品说明:`面向个人创作者的游戏美术 AI 工作台。用美术 Agent 与无限画布,快速制作角色、场景、UI 与宣发素材。`,作为 H1 下方真实可见的普通正文分两行展示。 - 主按钮:`开始创作` - 社群入口:原地弹出“玩家社区”二维码弹窗,复用现有社区弹层能力,不跳转或切换到“我的 / 用户中心”。 -- 营销点:`登录即送100泥点,可以免费制作50个素材` +- 营销点:`登录即送 100 泥点,可以免费制作 50 个素材`,作为产品说明下方的小字权益提示。 `开始创作` 与“新建项目”使用同一项目创建链路。用户已登录时调用现有 `createEditorProject`,成功后进入 `/editor/canvas?projectid=xxx&guide=toolbar`,画布只消费一次 `guide=toolbar` 并清理 query,用于显示新画布工具栏引导;未登录或登录过期时打开登录弹窗,并在登录后重试创建。 @@ -33,7 +35,7 @@ ### 九大创作工具能力 -创作主页展示九项能力,用于说明陶泥儿创作工具覆盖范围: +分区标题使用 H2 `游戏美术 AI 创作工具`。创作主页展示九项能力,用于说明陶泥儿创作工具覆盖范围,卡片标题继续使用 H3: 1. 游戏视觉规范:轻松约束多类素材视觉一致性。 2. 游戏角色:整套高完成度 2D / 3D 角色素材及动画。 diff --git a/src/components/creation-home/CreationLandingView.test.tsx b/src/components/creation-home/CreationLandingView.test.tsx index 0ae26fb28..1fa684dad 100644 --- a/src/components/creation-home/CreationLandingView.test.tsx +++ b/src/components/creation-home/CreationLandingView.test.tsx @@ -156,16 +156,34 @@ describe('CreationLandingView', () => { renderCreationLanding(); expect(screen.getByRole('main', { name: '陶泥儿创作主页' })).toBeTruthy(); + expect(screen.getAllByRole('heading', { level: 1 })).toHaveLength(1); expect( screen.getByRole('heading', { - name: '游戏美术AI工作台,让个人创作者更快做出角色、场景与宣发素材', + level: 1, + name: '陶泥儿 · 开启全民精品游戏创作', }), ).toBeTruthy(); expect( - screen.getByText(/陶泥儿 Genarrative 以美术 Agent 与无限画布/u), + screen.getByText('陶泥儿 Genarrative|游戏美术 AI 创作工具'), + ).toBeTruthy(); + const subtitle = screen.getByText( + /面向个人创作者的游戏美术 AI 工作台/u, + ); + expect(subtitle.textContent).toContain('美术 Agent'); + expect(subtitle.textContent).toContain('无限画布'); + expect(subtitle.textContent).toContain('角色、场景、UI 与宣发素材'); + expect( + screen.getByText('登录即送 100 泥点,可以免费制作 50 个素材'), + ).toBeTruthy(); + expect( + screen.getByRole('heading', { + level: 2, + name: '游戏美术 AI 创作工具', + }), + ).toBeTruthy(); + expect( + screen.getByRole('heading', { level: 3, name: '游戏视觉规范' }), ).toBeTruthy(); - expect(screen.getByRole('heading', { name: '创作工具' })).toBeTruthy(); - expect(screen.getByText('游戏视觉规范')).toBeTruthy(); expect(screen.getByRole('heading', { name: '陶泥儿精选' })).toBeTruthy(); expect(screen.getByRole('tab', { name: '全部' })).toBeTruthy(); expect(screen.queryByRole('tab', { name: '素材包' })).toBeNull(); @@ -310,6 +328,10 @@ describe('CreationLandingView', () => { await user.click(screen.getByRole('button', { name: /游戏特效/u })); const dialog = screen.getByRole('dialog', { name: '抱歉' }); + expect(screen.getAllByRole('heading', { level: 1 })).toHaveLength(1); + expect( + within(dialog).getByRole('heading', { level: 2, name: '抱歉' }), + ).toBeTruthy(); expect(dialog.textContent).toContain('功能还在调试中'); expect(dialog.textContent).toContain('暂未开放'); expect(dialog.closest('.platform-theme--light')).toBeTruthy(); diff --git a/src/components/creation-home/CreationLandingView.tsx b/src/components/creation-home/CreationLandingView.tsx index d44e29181..c965d55df 100644 --- a/src/components/creation-home/CreationLandingView.tsx +++ b/src/components/creation-home/CreationLandingView.tsx @@ -858,14 +858,20 @@ export function CreationLandingView({
- 陶泥儿创作工具 -

- 游戏美术AI工作台,让个人创作者更快做出角色、场景与宣发素材 -

-

- 陶泥儿 Genarrative 以美术 Agent - 与无限画布帮助个人创作者准备角色、场景与宣发素材;登录即送100泥点,可以免费制作50个素材。 -

+ + 陶泥儿 Genarrative|游戏美术 AI 创作工具 + +

陶泥儿 · 开启全民精品游戏创作

+
+

+ 面向个人创作者的游戏美术 AI 工作台。 +
+ 用美术 Agent 与无限画布,快速制作角色、场景、UI 与宣发素材。 +

+

+ 登录即送 100 泥点,可以免费制作 50 个素材 +

+
-

创作工具

+

游戏美术 AI 创作工具

@@ -1089,7 +1095,7 @@ export function CreationLandingView({ alt="" className="platform-mobile-home-welcome-dialog__icon" /> -

抱歉

+

抱歉

功能还在调试中
diff --git a/src/index.css b/src/index.css index 3866fdca9..c600b7fab 100644 --- a/src/index.css +++ b/src/index.css @@ -3428,8 +3428,8 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { color: #8c796c; font-size: clamp(0.86rem, 1.2vw, 1.02rem); font-weight: 860; - letter-spacing: 0.56em; - text-indent: 0.56em; + letter-spacing: 0.18em; + text-indent: 0.18em; } .creation-landing__hero h1 { @@ -3443,13 +3443,33 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { line-height: 1.04; } -.creation-landing__hero p { +.creation-landing__hero-detail { + display: grid; + max-width: 54rem; + justify-items: center; + gap: 0.42rem; +} + +.creation-landing__hero-subtitle, +.creation-landing__hero-benefit { margin: 0; color: #8a7466; - font-size: clamp(1rem, 1.45vw, 1.28rem); - font-weight: 820; - letter-spacing: 0.38em; - text-indent: 0.38em; + text-indent: 0; +} + +.creation-landing__hero-subtitle { + font-size: clamp(1rem, 1.55vw, 1.35rem); + font-weight: 620; + letter-spacing: 0.04em; + line-height: 1.7; +} + +.creation-landing__hero-benefit { + color: #9a6f56; + font-size: clamp(0.8rem, 0.92vw, 0.94rem); + font-weight: 680; + letter-spacing: 0.08em; + line-height: 1.55; } .creation-landing__hero-actions { @@ -4339,10 +4359,20 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { padding-top: 1.6rem; } - .creation-landing__eyebrow, - .creation-landing__hero p { - letter-spacing: 0.18em; - text-indent: 0.18em; + .creation-landing__eyebrow { + letter-spacing: 0.1em; + text-indent: 0.1em; + } + + .creation-landing__hero-subtitle { + font-size: 0.95rem; + letter-spacing: 0.02em; + line-height: 1.62; + } + + .creation-landing__hero-benefit { + font-size: 0.8rem; + letter-spacing: 0.04em; } .creation-landing__hero-actions {