yuanflow-cli 0.1.42 → 0.1.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +4 -2
  2. package/package.json +1 -1
  3. package/skills/yuanflow-skill/HTML/346/212/245/345/221/212/347/224/237/346/210/220/SKILL.md +10 -0
  4. package/skills/yuanflow-skill/IP/350/277/220/350/220/245/SKILL.md +10 -0
  5. package/skills/yuanflow-skill/README.md +7 -0
  6. package/skills/yuanflow-skill/SKILL.md +38 -14
  7. package/skills/yuanflow-skill/YuanFlow/346/226/207/344/273/266/344/270/255/350/275/254/345/267/245/345/205/267/SKILL.md +12 -5
  8. package/skills/yuanflow-skill/yuanflow-cli/SKILL.md +14 -8
  9. package/skills/yuanflow-skill//344/270/252/344/272/272/345/210/233/344/275/234/345/272/223/SKILL.md +11 -1
  10. package/skills/yuanflow-skill//344/275/234/345/223/201/344/270/213/350/275/275/347/273/274/345/220/210/345/267/245/345/205/267/SKILL.md +10 -0
  11. package/skills/yuanflow-skill//344/275/234/345/223/201/350/257/204/350/256/272/351/207/207/351/233/206/SKILL.md +10 -0
  12. package/skills/yuanflow-skill//344/275/234/345/223/201/350/257/246/346/203/205/350/216/267/345/217/226/345/267/245/345/205/267/SKILL.md +10 -0
  13. package/skills/yuanflow-skill//345/205/254/344/274/227/345/217/267/347/224/237/346/210/220/344/270/216/345/217/221/345/270/203/SKILL.md +10 -0
  14. package/skills/yuanflow-skill//345/210/233/344/275/234/346/200/273/347/233/221/SKILL.md +10 -0
  15. package/skills/yuanflow-skill//345/260/217/347/272/242/344/271/246/350/277/220/350/220/245/SKILL.md +10 -0
  16. package/skills/yuanflow-skill//345/270/220/345/217/267/345/256/232/344/275/215/SKILL.md +10 -0
  17. package/skills/yuanflow-skill//345/270/220/345/217/267/347/233/221/346/216/247/SKILL.md +10 -0
  18. package/skills/yuanflow-skill//346/226/207/346/241/210/345/210/233/344/275/234/SKILL.md +10 -0
  19. package/skills/yuanflow-skill//346/234/254/345/234/260/351/237/263/350/247/206/351/242/221/350/275/254/346/226/207/345/255/227/SKILL.md +10 -0
  20. package/skills/yuanflow-skill//347/203/255/351/227/250/345/206/205/345/256/271/346/225/264/347/220/206/SKILL.md +10 -0
  21. package/skills/yuanflow-skill//347/224/237/345/233/276/346/212/200/350/203/275/SKILL.md +10 -0
  22. package/skills/yuanflow-skill//347/233/264/346/222/255/346/212/225/346/265/201/347/255/226/347/225/245/SKILL.md +10 -0
  23. package/skills/yuanflow-skill//347/233/264/346/222/255/350/257/235/346/234/257/347/224/237/346/210/220/SKILL.md +10 -0
  24. package/skills/yuanflow-skill//347/273/274/345/220/210/346/220/234/347/264/242/345/267/245/345/205/267/SKILL.md +10 -0
  25. package/skills/yuanflow-skill//347/273/274/345/220/210/347/224/250/346/210/267/346/220/234/347/264/242/345/267/245/345/205/267/SKILL.md +10 -0
  26. package/skills/yuanflow-skill//350/207/252/345/252/222/344/275/223/346/265/217/350/247/210/345/231/250/350/207/252/345/212/250/345/214/226/SKILL.md +10 -0
  27. package/skills/yuanflow-skill//350/207/252/345/252/222/344/275/223/347/237/245/350/257/206/345/272/223/SKILL.md +11 -5
  28. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/SKILL.md +77 -0
  29. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/agents/openai.yaml +8 -0
  30. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/editorial-publishing.html +65 -0
  31. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/lifestyle-collage.html +49 -0
  32. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/product-brand.html +50 -0
  33. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/social-campaign.html +49 -0
  34. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/assets/templates/technical-diagram.html +45 -0
  35. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/overview.html +272 -0
  36. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/commercial-system.md +56 -0
  37. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/layout-playbook.md +98 -0
  38. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/quality-check.md +58 -0
  39. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/style-atlas.md +728 -0
  40. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/references/use-case-recipes.md +116 -0
  41. package/skills/yuanflow-skill//350/247/206/350/247/211/345/215/241/347/211/207/347/224/237/346/210/220/scripts/check_visual_card.py +92 -0
  42. package/skills/yuanflow-skill//350/247/206/350/247/211/347/220/206/350/247/243/SKILL.md +21 -16
  43. package/skills/yuanflow-skill//350/247/206/351/242/221/346/212/225/346/265/201/347/255/226/347/225/245/SKILL.md +10 -0
  44. package/skills/yuanflow-skill//350/247/206/351/242/221/346/213/206/350/247/243/SKILL.md +24 -57
  45. package/skills/yuanflow-skill//350/247/206/351/242/221/346/231/272/350/203/275/345/211/252/350/276/221/SKILL.md +10 -0
  46. package/skills/yuanflow-skill//351/200/211/351/242/230/347/255/226/345/210/222/SKILL.md +10 -0
  47. package/skills/yuanflow-skill//351/237/263/350/247/206/351/242/221/345/234/250/347/272/277/350/275/254/346/226/207/345/255/227/SKILL.md +10 -0
  48. package/skills/yuanflow-skill//351/243/236/344/271/246/345/256/230/346/226/271/346/212/200/350/203/275/SKILL.md +10 -0
@@ -10,13 +10,15 @@ emoji: 🧠
10
10
 
11
11
  查询时,必须先明确用户具体需求,然后从知识库的一级能力开始,依次使用渐进式查询。不能跳级、跨越式查询。
12
12
 
13
- ## 环境判断
13
+ ## 外部 CLI 主流程
14
14
 
15
- 1. YuanFlow-main 内置环境,优先调用内置工具 `yuanflow_cli_call`。
16
- 2. 在外部 Agent 中,如果本地有 `yuanflow-cli`,直接执行 CLI。
17
- 3. 如果外部环境没有 CLI,再提示用户安装 `npm install -g yuanflow-cli`。
15
+ 外部 Agent 或用户直接使用时,使用 `yuanflow-cli knowledge ...` 查询 YuanFlow 自媒体知识库。
18
16
 
19
- 不要让用户手动提供 token。YuanFlow-main 内置环境会注入认证 token;外部 CLI 使用 `YUANCHUANG_API_TOKEN`。
17
+ 1. 先确认本机可执行 `yuanflow-cli --help`。
18
+ 2. 外部 CLI 使用 `YUANCHUANG_API_TOKEN` 或 `yuanflow-cli config set-token <你的令牌>` 完成鉴权。
19
+ 3. 先查公开目录,再按 `next_actions` 渐进查询。
20
+
21
+ 不要让用户手动粘贴 token,也不要在回复、日志或文件里暴露 token。
20
22
 
21
23
  ## 能做什么
22
24
 
@@ -77,6 +79,10 @@ yuanflow-cli knowledge rules \
77
79
 
78
80
  4. 最后基于接口返回的公开规则摘要,完成创作、评估或优化。
79
81
 
82
+ ## YuanFlow-main 内置环境
83
+
84
+ 在 YuanFlow-main 内置环境,优先调用内置工具 `yuanflow_cli_call`。token、受管包路径和输出目录由 YuanFlow-main 管理,不要要求用户手动提供 token。
85
+
80
86
  ## YuanFlow-main 内置工具调用示例
81
87
 
82
88
  在 YuanFlow-main 内置环境,调用 `yuanflow_cli_call`,参数数组不要包含 token:
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: 视觉卡片生成
3
+ description: 当用户需要生成小红书图文卡片、公众号封面、文章插图、社交媒体配图、海报、信息图、视觉方案卡、商业风格设计图或多风格配图时使用。本 Skill 使用 HTML 模板、风格参考和质量检查脚本生成可复用、可检查、可商业交付的视觉卡片。
4
+ emoji: 🖼️
5
+ ---
6
+
7
+ # 视觉卡片生成
8
+
9
+ ## 外部 CLI 主流程
10
+
11
+ 外部 Agent 或用户直接使用本 Skill 时,优先按本 Skill 的模板和参考文档完成视觉卡片生成;如果任务中需要上传素材、生成图片、理解图片/视频或调用 YuanFlow API,再使用本地 `yuanflow-cli`。
12
+
13
+ 1. 如果本地可执行 `yuanflow-cli --help`,直接使用本地 CLI。
14
+ 2. 如果本地没有 `yuanflow-cli`,再提示用户安装 `npm install -g yuanflow-cli`。
15
+ 3. 外部 CLI 使用 `YUANCHUANG_API_TOKEN` 或 `yuanflow-cli config set-token <你的令牌>` 完成鉴权。
16
+
17
+ 不要在回复、日志或文件中暴露 token。用户主流程统一称为 YuanFlow API 和 YuanFlow 文件中转,不要求用户配置第三方平台 Key。
18
+
19
+ 本 Skill 本身不新增独立 `yuanflow-cli visual-card` 命令。它通过 Skill 说明、HTML 模板、参考文档和检查脚本完成视觉卡片生产。
20
+
21
+ ## YuanFlow-main 内置环境
22
+
23
+ 只有在 YuanFlow-main 内置环境中,才使用 `yuanflow_cli_call`、`yuanflow_image_request`、`content_workbench_update`、`artifact_files_register` 等受控工具。token、受管包路径、程序数据目录和输出目录由 YuanFlow-main 管理,不写成外部用户必备步骤。
24
+
25
+ 如果用户需要先生成图片素材,可调用 `生图技能` 或 YuanFlow-main 内置图片能力;如果需要理解用户提供的图片/视频素材,可调用 `视觉理解`;如果需要上传本地素材给在线能力使用,可调用 `YuanFlow文件中转工具`。
26
+
27
+ ## 适用输出
28
+
29
+ - 小红书图文:3:4 封面和 3-9 张正文卡片。
30
+ - 公众号封面:21:9 主封面、1:1 次封面、3:4 竖版封面。
31
+ - 文章插图:16:9、4:3、3:2 的正文配图。
32
+ - 社交媒体视觉:海报、活动图、概念图、产品卖点图、数据图、流程图。
33
+ - 设计方案卡:风格探索板、品牌视觉方向、信息架构卡片、方案对比图。
34
+
35
+ ## 生成流程
36
+
37
+ 1. 识别任务类型:封面、图文卡片、文章插图、社交配图、海报、信息图、风格探索。
38
+ 2. 读取 `references/commercial-system.md`,确认比例、尺寸、页面角色、文字限制、证据需求和质量门禁。
39
+ 3. 从 `references/style-atlas.md` 选择一个主风格和一个子风格;用户未指定时,按传播目标选择。
40
+ 4. 从 `assets/templates/` 复制最接近的 HTML 模板到任务输出目录,命名为 `index.html`。
41
+ 5. 在 `.poster` 节点上设置 `data-style`、`data-ratio`,并按页面目标调整布局模块。
42
+ 6. 参考 `references/layout-playbook.md` 和 `references/use-case-recipes.md` 组织页面结构,避免每页都变成重复的标题加卡片。
43
+ 7. 如果图片或截图是证据,优先使用用户提供的真实素材;如果需要生成图片,只把生成图作为素材,最终文字仍放在 HTML 中排版。
44
+ 8. 参考 `references/quality-check.md` 做最终检查;生成 HTML 后尽量运行检查脚本。
45
+
46
+ 检查命令:
47
+
48
+ ```bash
49
+ python scripts/check_visual_card.py <index.html>
50
+ ```
51
+
52
+ ## 风格选择规则
53
+
54
+ - 一组输出默认只使用一个主风格,除非用户明确要求做多风格探索。
55
+ - 通过风格、色板、布局、材质、图片处理和文案节奏制造变化,不靠随机装饰。
56
+ - 不使用无意义气泡、假数据、假 UI、假截图、占位文字或不可读小字。
57
+ - 小红书封面优先保证缩略图可读:主标题清楚,主体视觉明确,正文不拥挤。
58
+ - 文章插图优先服务文章论点,不做成硬广横幅。
59
+ - 不同封面比例要分别设计,不能把 21:9 直接裁成 1:1 或 3:4。
60
+
61
+ ## 资源说明
62
+
63
+ - `references/style-atlas.md`:风格体系、子风格、识别测试、反模式、HTML 骨架。
64
+ - `references/commercial-system.md`:商业交付骨架、生产标准、复用矩阵。
65
+ - `references/use-case-recipes.md`:封面、文章插图、社交配图、海报和风格探索配方。
66
+ - `references/layout-playbook.md`:按输出类型和内容模式选择布局。
67
+ - `references/quality-check.md`:最终质量检查清单。
68
+ - `assets/templates/`:可复制使用的 HTML 母版。
69
+ - `overview.html`:成熟风格系统和矩阵总览。
70
+ - `scripts/check_visual_card.py`:HTML 静态检查脚本,只依赖 Python 标准库。
71
+
72
+ ## 交付要求
73
+
74
+ - 给出输出目录路径。
75
+ - 如用户要求渲染图片,给出渲染后的图片文件路径。
76
+ - 简短说明使用的风格、比例和页面数量。
77
+ - 如果使用了网页图片或外部素材,在任务目录中记录来源链接,并在回复中说明。
@@ -0,0 +1,8 @@
1
+ interface:
2
+ display_name: "视觉卡片生成"
3
+ short_description: "生成小红书图文、封面、文章插图、海报和商业视觉卡片。"
4
+ brand_color: "#C8372D"
5
+ default_prompt: "使用 $视觉卡片生成 将主题、文章、截图、照片、笔记、提纲或脚本转成小红书图文卡片、公众号封面、文章插图、海报或商业视觉设计图。"
6
+
7
+ policy:
8
+ allow_implicit_invocation: true
@@ -0,0 +1,65 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN" data-parent-style="editorial-publishing">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>Editorial Publishing Template</title>
7
+ <style>
8
+ :root {
9
+ --paper: #f3f0e8;
10
+ --ink: #12100d;
11
+ --muted: #716a60;
12
+ --line: rgba(18,16,13,.22);
13
+ --accent: #9b2f24;
14
+ --serif: "Songti SC", "STSong", "SimSun", serif;
15
+ --sans: system-ui, sans-serif;
16
+ --mono: ui-monospace, monospace;
17
+ }
18
+ * { box-sizing: border-box; }
19
+ body { margin: 0; padding: 48px; background: #1c1a17; font-family: var(--sans); }
20
+ .sheet { display: flex; flex-direction: column; align-items: center; gap: 42px; }
21
+ .poster { position: relative; overflow: hidden; background: var(--paper); color: var(--ink); isolation: isolate; }
22
+ .poster[data-ratio="xhs"] { width: 1080px; height: 1440px; }
23
+ .poster[data-ratio="article"] { width: 1600px; height: 900px; }
24
+ .poster[data-ratio="wide"] { width: 2100px; height: 900px; }
25
+ .paper-grain { position: absolute; inset: 0; opacity: .26; mix-blend-mode: multiply; background-image: radial-gradient(rgba(0,0,0,.06) 1px, transparent 1.5px); background-size: 4px 4px; }
26
+ .ep-pad { position: relative; z-index: 2; height: 100%; padding: 88px; display: flex; flex-direction: column; }
27
+ [data-ratio="article"] .ep-pad, [data-ratio="wide"] .ep-pad { padding: 76px 110px; }
28
+ .ep-issue, .ep-strip, .small-label { font-family: var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
29
+ .ep-issue { font-size: 20px; margin: 0 0 34px; }
30
+ .ep-title { font-family: var(--serif); font-weight: 500; font-size: 112px; line-height: 1.08; letter-spacing: .04em; margin: 0; max-width: 880px; }
31
+ .ep-deck { font-family: var(--serif); font-size: 32px; line-height: 1.55; color: var(--muted); max-width: 640px; }
32
+ .ep-photo { margin: 44px 0 0; height: 460px; background: #d9d0c2; overflow: hidden; border: 1px solid var(--line); }
33
+ .ep-photo.small { width: 52%; height: 360px; margin-left: auto; }
34
+ .ep-photo img, .object-frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
35
+ .ep-strip { margin-top: auto; padding-top: 18px; border-top: 1px solid var(--line); display: flex; justify-content: space-between; font-size: 18px; }
36
+ .book-page { border: 18px solid rgba(155,47,36,.18); }
37
+ .vertical { writing-mode: vertical-rl; letter-spacing: .18em; }
38
+ .seal { width: 64px; height: 64px; border: 2px solid var(--accent); color: var(--accent); display: grid; place-items: center; font-family: var(--serif); margin-top: 28px; }
39
+ .newspaper { display: grid; grid-template-rows: auto auto 1fr; }
40
+ .masthead { font-family: var(--serif); font-size: 34px; letter-spacing: .18em; border-bottom: 4px double var(--ink); padding-bottom: 16px; margin: 0 0 32px; }
41
+ .news-grid { display: grid; grid-template-columns: 1fr 1fr .7fr; gap: 26px; margin-top: 40px; }
42
+ .news-grid article { border-top: 1px solid var(--line); padding-top: 18px; font-family: var(--serif); font-size: 26px; line-height: 1.55; }
43
+ .mini-chart { display: flex; gap: 18px; align-items: end; border: 1px solid var(--line); padding: 26px; }
44
+ .mini-chart span { flex: 1; height: var(--h); background: var(--accent); }
45
+ .gallery { display: grid; grid-template-columns: 1.2fr .8fr; gap: 54px; align-items: end; }
46
+ .object-frame { margin: 0; height: 620px; background: #dedbd2; }
47
+ .plaque { border-top: 1px solid var(--line); padding-top: 24px; }
48
+ .plaque h2 { font-family: var(--serif); font-size: 54px; margin: 0 0 18px; }
49
+ .plaque p { font-family: var(--serif); color: var(--muted); font-size: 26px; line-height: 1.55; }
50
+ </style>
51
+ </head>
52
+ <body>
53
+ <main class="sheet">
54
+ <section class="poster magazine-paper" data-ratio="xhs" data-style="magazine-paper">
55
+ <div class="paper-grain"></div>
56
+ <main class="ep-pad">
57
+ <p class="ep-issue">VOL. 04 / FIELD NOTE / 2026</p>
58
+ <h1 class="ep-title">在信息里<br>找到一条路</h1>
59
+ <figure class="ep-photo"><img src="assets/hero.jpg" alt=""></figure>
60
+ <div class="ep-strip"><span>观察</span><span>方法</span><span>结论</span></div>
61
+ </main>
62
+ </section>
63
+ </main>
64
+ </body>
65
+ </html>
@@ -0,0 +1,49 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN" data-parent-style="lifestyle-collage">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>Lifestyle Collage Template</title>
7
+ <style>
8
+ :root { --paper:#f2ece6; --ink:#25211d; --muted:#82766b; --line:rgba(37,33,29,.18); --accent:#7f8d74; --serif:"Songti SC","STSong","SimSun",serif; --sans:system-ui,sans-serif; --mono:ui-monospace,monospace; }
9
+ * { box-sizing:border-box; }
10
+ body { margin:0; padding:48px; background:#1d1b19; font-family:var(--sans); }
11
+ .sheet { display:flex; flex-direction:column; align-items:center; gap:42px; }
12
+ .poster { position:relative; overflow:hidden; background:var(--paper); color:var(--ink); isolation:isolate; }
13
+ .poster[data-ratio="xhs"] { width:1080px; height:1440px; }
14
+ .poster[data-ratio="article"] { width:1600px; height:900px; }
15
+ .lc-pad { height:100%; padding:88px; display:flex; flex-direction:column; position:relative; z-index:2; }
16
+ [data-ratio="article"] .lc-pad { padding:76px 110px; }
17
+ .lc-title { font-family:var(--serif); font-size:104px; line-height:1.08; font-weight:500; margin:0 0 34px; }
18
+ .soft-photo { height:560px; margin:0; border-radius:28px; overflow:hidden; background:#d8d0c6; box-shadow:0 20px 60px rgba(37,33,29,.14); }
19
+ .soft-photo img { width:100%; height:100%; object-fit:cover; }
20
+ .note-list { display:flex; gap:18px; margin-top:auto; }
21
+ .note-list p,.specimen-tags span { padding:18px 24px; background:rgba(255,255,255,.36); border:1px solid var(--line); }
22
+ .collage-desk { --paper:#ead8ba; --ink:#2d2014; --muted:#7d6750; --accent:#315d93; }
23
+ .paper-stack { flex:1; position:relative; }
24
+ .paper-stack figure { position:absolute; width:48%; height:42%; background:#f6ead6; box-shadow:0 14px 30px rgba(45,32,20,.18); margin:0; }
25
+ .paper-stack figure:nth-child(1) { left:4%; top:10%; transform:rotate(-5deg); }
26
+ .paper-stack figure:nth-child(2) { right:8%; top:22%; transform:rotate(4deg); }
27
+ .paper-stack figure:nth-child(3) { left:22%; bottom:8%; transform:rotate(-2deg); }
28
+ .stamp,.timecode { font-family:var(--mono); letter-spacing:.14em; color:var(--accent); }
29
+ .botanical-organic { --paper:#eef0df; --ink:#172418; --muted:#62715e; --accent:#3f7d4a; }
30
+ .specimen { height:520px; margin:0 0 34px; display:grid; place-items:center; background:rgba(63,125,74,.10); border:1px solid var(--line); }
31
+ .specimen img { max-width:80%; max-height:80%; object-fit:contain; }
32
+ .specimen-tags { display:flex; gap:16px; margin-top:auto; }
33
+ .film-contact-sheet { --paper:#1b1712; --ink:#f2dec1; --muted:#b69d78; --line:rgba(242,222,193,.2); --accent:#e0a34d; }
34
+ .frames { display:grid; grid-template-columns:repeat(2,1fr); gap:22px; margin-top:auto; }
35
+ .frames figure { height:260px; margin:0; background:#30271d; border:10px solid #0b0907; }
36
+ </style>
37
+ </head>
38
+ <body>
39
+ <main class="sheet">
40
+ <section class="poster lifestyle-collage soft-studio" data-ratio="xhs" data-style="soft-studio">
41
+ <main class="lc-pad soft">
42
+ <h1 class="lc-title">周末整理<br>工作台</h1>
43
+ <figure class="soft-photo"><img src="assets/table.jpg" alt=""></figure>
44
+ <div class="note-list"><p>光线</p><p>收纳</p><p>节奏</p></div>
45
+ </main>
46
+ </section>
47
+ </main>
48
+ </body>
49
+ </html>
@@ -0,0 +1,50 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN" data-parent-style="product-brand">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>Product Brand Template</title>
7
+ <style>
8
+ :root { --paper:#f8f7f2; --ink:#101214; --muted:#6f757c; --line:rgba(16,18,20,.16); --accent:#0d6efd; --accent2:#16a34a; --sans:system-ui,sans-serif; --serif:"Songti SC","STSong","SimSun",serif; --mono:ui-monospace,monospace; }
9
+ * { box-sizing:border-box; }
10
+ body { margin:0; padding:48px; background:#191a1b; font-family:var(--sans); }
11
+ .sheet { display:flex; flex-direction:column; align-items:center; gap:42px; }
12
+ .poster { position:relative; overflow:hidden; background:var(--paper); color:var(--ink); isolation:isolate; }
13
+ .poster[data-ratio="xhs"] { width:1080px; height:1440px; }
14
+ .poster[data-ratio="article"] { width:1600px; height:900px; }
15
+ .poster[data-ratio="wide"] { width:2100px; height:900px; }
16
+ .pb-pad { height:100%; padding:88px; display:flex; flex-direction:column; position:relative; z-index:2; }
17
+ [data-ratio="article"] .pb-pad, [data-ratio="wide"] .pb-pad { padding:76px 110px; }
18
+ .pb-title { margin:0; font-size:104px; line-height:1.04; font-weight:300; letter-spacing:-.02em; max-width:860px; }
19
+ .product-hero { flex:1; margin:44px 0; display:grid; place-items:center; background:radial-gradient(circle at center, rgba(13,110,253,.14), transparent 54%); }
20
+ .product-hero img { max-width:78%; max-height:78%; object-fit:contain; filter:drop-shadow(0 34px 42px rgba(16,18,20,.22)); }
21
+ .callouts,.feature-tags { display:flex; gap:16px; margin-top:auto; }
22
+ .callouts span,.feature-tags span { padding:16px 22px; border:1px solid var(--line); background:#fff; font-size:28px; }
23
+ .luxury-minimal { --paper:#10100f; --ink:#f4ead7; --muted:#a89777; --line:rgba(244,234,215,.18); --accent:#d0a85a; }
24
+ .luxury .pb-title { font-family:var(--serif); font-weight:500; margin-top:auto; }
25
+ .isolated { background:transparent; border:1px solid var(--line); }
26
+ .small-label { font-family:var(--mono); letter-spacing:.14em; color:var(--muted); text-transform:uppercase; }
27
+ .brand-system { --paper:#f5f3ed; --ink:#121212; --muted:#626262; --accent:#c8372d; --accent2:#243c72; }
28
+ .palette { display:flex; gap:18px; margin:54px 0; }
29
+ .palette span { width:120px; height:120px; background:var(--accent); }
30
+ .palette span:nth-child(2) { background:var(--accent2); }
31
+ .palette span:nth-child(3) { background:var(--ink); }
32
+ .component-row { display:flex; gap:18px; margin-top:auto; }
33
+ .component-row button { border:0; padding:20px 28px; background:var(--accent); color:white; font-size:24px; }
34
+ .component-row button:nth-child(2) { background:transparent; color:var(--ink); border:1px solid var(--line); }
35
+ .screen-frame { margin:44px 0 0; height:520px; border:1px solid var(--line); background:#fff; padding:28px; }
36
+ .screen-frame img { width:100%; height:100%; object-fit:contain; }
37
+ </style>
38
+ </head>
39
+ <body>
40
+ <main class="sheet">
41
+ <section class="poster product-brand product-cutout" data-ratio="xhs" data-style="product-cutout">
42
+ <main class="pb-pad">
43
+ <h1 class="pb-title">一个工具<br>解决三件事</h1>
44
+ <figure class="product-hero"><img src="assets/product.png" alt=""></figure>
45
+ <div class="callouts"><span>快</span><span>稳</span><span>可控</span></div>
46
+ </main>
47
+ </section>
48
+ </main>
49
+ </body>
50
+ </html>
@@ -0,0 +1,49 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN" data-parent-style="social-campaign">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>Social Campaign Template</title>
7
+ <style>
8
+ :root { --paper:#fff04a; --ink:#111; --accent:#ff3b7f; --accent2:#00a1ff; --mono:ui-monospace,monospace; --sans:system-ui,sans-serif; }
9
+ * { box-sizing: border-box; }
10
+ body { margin:0; padding:48px; background:#181818; font-family:var(--sans); }
11
+ .sheet { display:flex; flex-direction:column; align-items:center; gap:42px; }
12
+ .poster { position:relative; overflow:hidden; background:var(--paper); color:var(--ink); isolation:isolate; }
13
+ .poster[data-ratio="xhs"] { width:1080px; height:1440px; }
14
+ .poster[data-ratio="poster"] { width:1200px; height:1800px; }
15
+ .poster[data-ratio="wide"] { width:2100px; height:900px; }
16
+ .sc-pad { height:100%; padding:78px; display:flex; flex-direction:column; position:relative; z-index:2; }
17
+ .sc-title { margin:0; font-size:142px; line-height:.95; font-weight:900; letter-spacing:-.03em; max-width:880px; }
18
+ .burst,.warning,.event-meta,.ticket { font-family:var(--mono); letter-spacing:.14em; text-transform:uppercase; }
19
+ .burst { align-self:flex-start; background:var(--accent); color:#fff; padding:14px 18px; transform:rotate(-4deg); margin-bottom:28px; }
20
+ .cutout-stage { flex:1; margin:38px 0; background:rgba(255,255,255,.28); border:5px solid var(--ink); display:grid; place-items:center; }
21
+ .cutout-stage img { max-width:72%; max-height:72%; object-fit:contain; }
22
+ .badge-row { display:flex; gap:16px; margin-top:auto; }
23
+ .badge-row span { border:4px solid var(--ink); padding:16px 24px; font-size:34px; font-weight:800; background:#fff; }
24
+ .neo-brutalist { --paper:#f5f5f0; --accent:#ff4a00; }
25
+ .brutal { border:8px solid var(--ink); }
26
+ .warning { background:var(--accent); padding:16px 20px; font-size:26px; margin-bottom:34px; }
27
+ .hard-rows { margin-top:auto; border-top:6px solid var(--ink); }
28
+ .hard-rows p { margin:0; padding:26px 0; border-bottom:4px solid var(--ink); font-size:46px; font-weight:900; }
29
+ .maximal-poster { --paper:#101010; --ink:#f7f03a; --accent:#f0185c; --accent2:#00d4ff; }
30
+ .repeat-word { position:absolute; inset:60px 20px auto; font-size:118px; font-weight:900; color:var(--accent); opacity:.55; line-height:.85; }
31
+ .maximal .sc-title { margin-top:auto; color:var(--ink); text-shadow:8px 8px 0 var(--accent); }
32
+ .event-key-visual { --paper:#151414; --ink:#fff1d0; --accent:#ffcf33; --accent2:#ff5a3d; }
33
+ .key-shape { width:520px; height:520px; background:linear-gradient(135deg,var(--accent),var(--accent2)); margin:auto; transform:rotate(12deg); }
34
+ .ticket { border-top:2px solid rgba(255,241,208,.4); padding-top:22px; font-size:24px; color:var(--ink); }
35
+ </style>
36
+ </head>
37
+ <body>
38
+ <main class="sheet">
39
+ <section class="poster social-campaign pop-magazine" data-ratio="xhs" data-style="pop-magazine">
40
+ <main class="sc-pad">
41
+ <p class="burst">SAVE THIS</p>
42
+ <h1 class="sc-title">这 6 个<br>真的好用</h1>
43
+ <div class="cutout-stage"><img src="assets/item.png" alt=""></div>
44
+ <div class="badge-row"><span>实测</span><span>清单</span><span>避坑</span></div>
45
+ </main>
46
+ </section>
47
+ </main>
48
+ </body>
49
+ </html>
@@ -0,0 +1,45 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN" data-parent-style="technical-diagram">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>Technical Diagram Template</title>
7
+ <style>
8
+ :root { --paper:#fafaf8; --ink:#0a0a0a; --muted:#737373; --line:#d4d4d2; --accent:#002fa7; --sans:system-ui,sans-serif; --mono:ui-monospace,monospace; }
9
+ * { box-sizing:border-box; }
10
+ body { margin:0; padding:48px; background:#1b1b1b; font-family:var(--sans); }
11
+ .sheet { display:flex; flex-direction:column; align-items:center; gap:42px; }
12
+ .poster { position:relative; overflow:hidden; background:var(--paper); color:var(--ink); isolation:isolate; }
13
+ .poster[data-ratio="xhs"] { width:1080px; height:1440px; }
14
+ .poster[data-ratio="article"] { width:1600px; height:900px; }
15
+ .poster[data-ratio="wide"] { width:2100px; height:900px; }
16
+ .td-pad { height:100%; padding:88px; display:flex; flex-direction:column; position:relative; z-index:2; }
17
+ [data-ratio="article"] .td-pad, [data-ratio="wide"] .td-pad { padding:76px 110px; }
18
+ .td-meta,.legend,.terminal { font-family:var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin:0 0 28px; }
19
+ .td-title { margin:0; font-size:118px; line-height:1.04; font-weight:250; letter-spacing:-.02em; max-width:860px; }
20
+ .td-matrix { margin-top:auto; display:grid; grid-template-columns:repeat(2,1fr); gap:22px; }
21
+ .td-matrix div,.hud-grid div,.node-map span,.flow span { border:1px solid var(--line); padding:30px; font-size:34px; background:rgba(0,0,0,.03); }
22
+ .blueprint-technical { --paper:#092448; --ink:#e6f2ff; --muted:#9db9d6; --line:rgba(230,242,255,.26); --accent:#58c7ff; }
23
+ .blueprint::before { content:""; position:absolute; inset:0; opacity:.22; background-image:linear-gradient(to right,var(--ink) 1px,transparent 1px),linear-gradient(to bottom,var(--ink) 1px,transparent 1px); background-size:48px 48px; }
24
+ .node-map { margin-top:auto; display:grid; grid-template-columns:repeat(3,1fr); gap:28px; position:relative; z-index:2; }
25
+ .cyber-interface { --paper:#090b12; --ink:#edf4ff; --muted:#8aa0bf; --line:rgba(237,244,255,.22); --accent:#00e0ff; }
26
+ .cyber { background:radial-gradient(circle at 80% 20%, rgba(0,224,255,.18), transparent 34%); }
27
+ .terminal { color:var(--accent); }
28
+ .hud-grid { margin-top:auto; display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
29
+ .calm-diagram { --paper:#f7f5ef; --ink:#1f2933; --muted:#6b7280; --line:#d8d4c8; --accent:#4c6fff; }
30
+ .flow { margin-top:auto; display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
31
+ .flow span { border-color:var(--accent); text-align:center; }
32
+ </style>
33
+ </head>
34
+ <body>
35
+ <main class="sheet">
36
+ <section class="poster technical-diagram swiss-data" data-ratio="xhs" data-style="swiss-data">
37
+ <main class="td-pad">
38
+ <p class="td-meta">SYSTEM / 01</p>
39
+ <h1 class="td-title">一个流程<br>四个节点</h1>
40
+ <div class="td-matrix"><div>输入</div><div>处理</div><div>验证</div><div>输出</div></div>
41
+ </main>
42
+ </section>
43
+ </main>
44
+ </body>
45
+ </html>