Skip to content

Commit 3860f64

Browse files
authored
feat(website): add the launch film and a production use cases section to the MCP page (#15305)
## Summary Adds the two videos asked for in the launch thread, on top of #15240: the Comfy MCP launch film under the capabilities heading, and a new "Production use cases." section below it. ## Changes - **What**: `FeatureRows01` gains an optional `media` slot; `ToolsSection` fills it with the 16x9 launch film (autoplay, muted, loop, corner play/mute toggles). New `UseCasesSection` renders a heading, one-line subtitle, and the narrated walkthrough as click-to-play behind its own title-card poster — no autoplay, since it has a voiceover. Both sections hydrate with `client:visible` so the controls work. The setup subtitle now breaks before "Add the server yourself". - **Assets**: launch film from the Air board (`COMFY_MCP_16x9`, 33.9s, re-encoded to 4.9 MB); walkthrough from the launch blog (`short with voice over`, 96.3s, 14 MB); poster is frame 1 of the walkthrough. Copy added in en and zh-CN. ## Review Focus - **The media is not on the CDN yet.** `launch-film.mp4`, `production-use-cases.mp4` and `production-use-cases-poster.webp` still need uploading to `gs://comfy-org-videos/website/mcp/`. Until then both players 404 on any deploy built from this branch, including this PR's Vercel preview. - Copy on the new section — "Production use cases." and its subtitle are a first pass. - `client:visible` on `ToolsSection` is new; it was static before because every video there had `hideControls`. ## Screenshots Standalone preview with the media served from the deployment itself, as a stand-in for the pending CDN upload: https://website-frontend-16jmxfsd8-comfyui.vercel.app/mcp
1 parent 3340351 commit 3860f64

8 files changed

Lines changed: 93 additions & 6 deletions

File tree

apps/website/e2e/mcp.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,20 @@ test.describe('MCP page @smoke', () => {
185185
}
186186
})
187187

188+
test('production use cases section offers a click-to-play walkthrough', async ({
189+
page
190+
}) => {
191+
const heading = page.getByRole('heading', {
192+
name: 'Production use cases.'
193+
})
194+
await heading.scrollIntoViewIfNeeded()
195+
await expect(heading).toBeVisible()
196+
197+
const video = page.getByLabel(/running production jobs/)
198+
await expect(video).toHaveAttribute('poster', /production-use-cases/)
199+
await expect(video).not.toHaveAttribute('autoplay', /.*/)
200+
})
201+
188202
test('FAQ lists nine questions and autolinks the server URL', async ({
189203
page
190204
}) => {

apps/website/src/components/blocks/FeatureRows01.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ const {
4949
{{ heading }}
5050
</SectionHeader>
5151

52+
<div v-if="$slots.media" class="mt-12 lg:mt-16">
53+
<slot name="media" />
54+
</div>
55+
5256
<div class="mt-16 flex flex-col gap-4 lg:gap-6">
5357
<GlassCard
5458
v-for="(row, i) in rows"

apps/website/src/i18n/translations.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2152,9 +2152,9 @@ const translations = {
21522152
'zh-CN': '配置 Comfy MCP'
21532153
},
21542154
'mcp.setup.subtitle': {
2155-
en: 'Pick where it runs: Comfy Cloud GPUs, or your own machine. Add the server yourself or ask your agent to install it, and the full ComfyUI toolset lands in your chat.',
2155+
en: 'Pick where it runs: Comfy Cloud GPUs, or your own machine.\nAdd the server yourself or ask your agent to install it, and the full ComfyUI toolset lands in your chat.',
21562156
'zh-CN':
2157-
'选择运行位置:Comfy Cloud 的 GPU,或你自己的机器。自行添加服务器,或让智能体代劳,ComfyUI 全套工具即可进入你的对话。'
2157+
'选择运行位置:Comfy Cloud 的 GPU,或你自己的机器。\n自行添加服务器,或让智能体代劳,ComfyUI 全套工具即可进入你的对话。'
21582158
},
21592159
'mcp.setup.connections.tabsLabel': {
21602160
en: 'Pick your connection',
@@ -2378,6 +2378,10 @@ const translations = {
23782378
en: 'Everything ComfyUI can do,\nnow available as tools.',
23792379
'zh-CN': 'ComfyUI 能做的一切,\n现在都可作为工具调用。'
23802380
},
2381+
'mcp.tools.film.alt': {
2382+
en: 'Comfy MCP launch film: an agent driving ComfyUI workflows end to end',
2383+
'zh-CN': 'Comfy MCP 发布影片:智能体端到端驱动 ComfyUI 工作流'
2384+
},
23812385
'mcp.tools.1.title': {
23822386
en: 'Generate anything',
23832387
'zh-CN': '生成任意内容'
@@ -2456,6 +2460,22 @@ const translations = {
24562460
'zh-CN': 'Comfy MCP 将工作流变成可在浏览器中分享的应用'
24572461
},
24582462

2463+
// MCP – UseCasesSection
2464+
'mcp.useCases.heading': {
2465+
en: 'Production use cases.',
2466+
'zh-CN': '生产级用例。'
2467+
},
2468+
'mcp.useCases.subtitle': {
2469+
en: 'One prompt, a real campaign: batch pack shots for every SKU, character sheets from a saved workflow, outputs filed straight back into your project folders.',
2470+
'zh-CN':
2471+
'一条提示,一整个真实项目:为每个 SKU 批量生成产品图,用已保存的工作流生成角色设定表,输出直接归档到你的项目文件夹。'
2472+
},
2473+
'mcp.useCases.alt': {
2474+
en: 'Comfy MCP running production jobs: batch pack-shot variations per SKU and a character sheet from a saved workflow',
2475+
'zh-CN':
2476+
'Comfy MCP 运行生产任务:为每个 SKU 批量生成产品图变体,并用已保存的工作流生成角色设定表'
2477+
},
2478+
24592479
// MCP – HowItWorksSection
24602480
'mcp.howItWorks.heading': {
24612481
en: 'How it works',

apps/website/src/pages/mcp.astro

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import HeroSection from '../templates/mcp/HeroSection.vue'
55
import SetupSection from '../templates/mcp/SetupSection.vue'
66
import WhySection from '../templates/mcp/WhySection.vue'
77
import ToolsSection from '../templates/mcp/ToolsSection.vue'
8+
import UseCasesSection from '../templates/mcp/UseCasesSection.vue'
89
import HowItWorksSection from '../templates/mcp/HowItWorksSection.vue'
910
import FAQSection from '../templates/mcp/FAQSection.vue'
1011
import { t } from '../i18n/translations'
@@ -16,7 +17,8 @@ import { t } from '../i18n/translations'
1617
>
1718
<HeroSection locale="en" client:load />
1819
<SetupSection locale="en" client:visible />
19-
<ToolsSection locale="en" />
20+
<ToolsSection locale="en" client:visible />
21+
<UseCasesSection locale="en" client:visible />
2022
<WhySection locale="en" />
2123
<HowItWorksSection locale="en" />
2224
<ProductCardsSection locale="en" label-key="products.labelProducts" />

apps/website/src/pages/zh-CN/mcp.astro

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import HeroSection from '../../templates/mcp/HeroSection.vue'
55
import SetupSection from '../../templates/mcp/SetupSection.vue'
66
import WhySection from '../../templates/mcp/WhySection.vue'
77
import ToolsSection from '../../templates/mcp/ToolsSection.vue'
8+
import UseCasesSection from '../../templates/mcp/UseCasesSection.vue'
89
import HowItWorksSection from '../../templates/mcp/HowItWorksSection.vue'
910
import FAQSection from '../../templates/mcp/FAQSection.vue'
1011
import { t } from '../../i18n/translations'
@@ -16,7 +17,8 @@ import { t } from '../../i18n/translations'
1617
>
1718
<HeroSection locale="zh-CN" client:load />
1819
<SetupSection locale="zh-CN" client:visible />
19-
<ToolsSection locale="zh-CN" />
20+
<ToolsSection locale="zh-CN" client:visible />
21+
<UseCasesSection locale="zh-CN" client:visible />
2022
<WhySection locale="zh-CN" />
2123
<HowItWorksSection locale="zh-CN" />
2224
<ProductCardsSection locale="zh-CN" label-key="products.labelProducts" />

apps/website/src/templates/mcp/SetupSection.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,9 @@ const copiedLabel = t('ui.copied', locale)
223223
>
224224
{{ t('mcp.setup.heading', locale) }}
225225
<template #subtitle>
226-
<p class="mt-4 max-w-xl text-sm text-smoke-700 lg:text-base">
226+
<p
227+
class="mt-4 max-w-xl text-sm whitespace-pre-line text-smoke-700 lg:text-base"
228+
>
227229
{{ t('mcp.setup.subtitle', locale) }}
228230
</p>
229231
<p

apps/website/src/templates/mcp/ToolsSection.vue

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<script setup lang="ts">
22
import FeatureRows01 from '../../components/blocks/FeatureRows01.vue'
33
import type { FeatureRow } from '../../components/blocks/FeatureRows01.vue'
4+
import VideoPlayer from '../../components/common/VideoPlayer.vue'
45
import type { Locale, TranslationKey } from '../../i18n/translations'
56
import { t } from '../../i18n/translations'
67
@@ -96,5 +97,17 @@ const rows: FeatureRow[] = tools.map(({ n, media, altKey }) => {
9697
:locale="locale"
9798
:heading="t('mcp.tools.heading', locale)"
9899
:rows="rows"
99-
/>
100+
>
101+
<template #media>
102+
<VideoPlayer
103+
:locale="locale"
104+
:aria-label="t('mcp.tools.film.alt', locale)"
105+
src="https://media.comfy.org/website/mcp/launch-film.mp4"
106+
autoplay
107+
lazy-autoplay
108+
loop
109+
mute-only
110+
/>
111+
</template>
112+
</FeatureRows01>
100113
</template>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<script setup lang="ts">
2+
import SectionHeader from '../../components/common/SectionHeader.vue'
3+
import VideoPlayer from '../../components/common/VideoPlayer.vue'
4+
import type { Locale } from '../../i18n/translations'
5+
import { t } from '../../i18n/translations'
6+
7+
const { locale = 'en' } = defineProps<{ locale?: Locale }>()
8+
</script>
9+
10+
<template>
11+
<section class="max-w-9xl mx-auto px-6 py-16 lg:py-24">
12+
<SectionHeader max-width="xl">
13+
{{ t('mcp.useCases.heading', locale) }}
14+
<template #subtitle>
15+
<p class="mt-4 text-sm text-smoke-700 lg:text-base">
16+
{{ t('mcp.useCases.subtitle', locale) }}
17+
</p>
18+
</template>
19+
</SectionHeader>
20+
21+
<VideoPlayer
22+
:locale="locale"
23+
:aria-label="t('mcp.useCases.alt', locale)"
24+
src="https://media.comfy.org/website/mcp/production-use-cases.mp4"
25+
poster="https://media.comfy.org/website/mcp/production-use-cases-poster.webp"
26+
minimal
27+
class="mt-12 lg:mt-16"
28+
/>
29+
</section>
30+
</template>

0 commit comments

Comments
 (0)