Sources: extracted from two upstream archives (skill-repo, skills-main),
merged with the following policy:
- 15 broken symlinks (pointing to /Users/jameslee/.cc-switch/skills or
../../.agents/skills on a foreign machine) discarded
- 3 real name collisions with identical content (ai-pair, ifind-http-api,
zhipu-websearch) kept as one copy
- Functional overlaps deduped keeping the strongest variant:
- docx family: kept docx (official, full toolchain) + docx-cn
(GB/T 9704 Chinese official-document constants),
dropped docx_writer (no scripts, name collided with docx)
- humanizer family: kept humanizer-zh (6 zh reference docs),
dropped humanizer (en, redundant for CN workflow)
- Skills that only ran in a foreign environment removed:
ablemind-ops, app-publish, hlb-design-system, openclaw-adj-skill,
claude-driver
- alphapai excluded from this public repo because its SKILL.md hard-coded
live credentials
Result: 25 skills, 572 files, ~7.5 MB.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
9.9 KiB
9.9 KiB
Layout: quote — 引用/金句页
幻灯片尺寸: 13.333 × 7.5 英寸 | 边距: 0.6 英寸 | 内容宽: 12.133 英寸
用途
管理层观点、投资建议语录、风险提示声明、年报核心金句。
ASCII 线框图
┌─────────────────────────────────────────────────────────────┐
│ │
│ ❝ │
│ │
│ 在波动的市场中,坚守长期投资原则, │
│ 比追求短期收益更能实现财富的稳健增长。 │
│ │
│ ❞ │
│ │
│ ───────────────── │
│ 王明远 | 首席投资官 │
│ │
│ [可选:小字来源说明] │
└─────────────────────────────────────────────────────────────┘
变体
变体 A:深色背景(bg_dark 款,强调感强)
┌─────────────────────────────────────────────────────────────┐
│ [bg_dark 背景] │
│ │
│ ❝ (accent 色大引号) │
│ │
│ [quote 文字,text_light,居中,大字] │
│ │
│ ❞ │
│ ─── accent 色横线 ─── │
│ [author] | [title] (text_light,较小) │
│ │
└─────────────────────────────────────────────────────────────┘
变体 B:浅色背景(bg_light 款,报告内页用)
┌─────────────────────────────────────────────────────────────┐
│ [bg_light 背景] │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ card_bg 卡片(圆角矩形,带 border 边框) │ │
│ │ │ │
│ │ ❝ (primary 色引号) │ │
│ │ │ │
│ │ [quote 文字,text_dark,居中] │ │
│ │ │ │
│ │ ❞ │ │
│ │ ─── secondary 色横线 ─── │ │
│ │ [author] | [title] │ │
│ │ │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
精确坐标标注
变体 A(深色背景)
| 元素 | x | y | w | h | 字号 | 颜色 | 对齐 | 备注 |
|---|---|---|---|---|---|---|---|---|
| 背景 | 0 | 0 | 13.333 | 7.5 | — | bg_dark | — | 全页背景 |
| 左引号 ❝ | 0.60 | 1.00 | 1.50 | 1.50 | 96pt | accent | 左 | 装饰引号 |
| 右引号 ❞ | 11.40 | 4.20 | 1.30 | 1.20 | 96pt | accent | 右 | 装饰引号 |
| 引文正文 | 1.80 | 2.00 | 9.733 | 2.80 | 28pt | text_light | 中 | 行高 1.5x |
| 分隔线 | 5.167 | 5.00 | 3.00 | 0.04 | — | accent | — | 居中于页面 |
| 作者名 | 1.80 | 5.15 | 9.733 | 0.50 | body_size+2 | text_light | 中 | 粗体 |
| 职衔 | 1.80 | 5.65 | 9.733 | 0.40 | body_size | text_light | 中 | 细体,muted |
| 来源说明 | 0.60 | 6.90 | 12.133 | 0.35 | caption_size | text_muted | 左 | 可选 |
引号字号说明: 96pt 装饰引号实际使用
❝❞Unicode 字符(U+275D / U+275E), 或用中文弯引号""加大字号模拟。
变体 B(浅色卡片)
| 元素 | x | y | w | h | 字号 | 颜色 | 对齐 | 备注 |
|---|---|---|---|---|---|---|---|---|
| 背景 | 0 | 0 | 13.333 | 7.5 | — | bg_light | — | 全页背景 |
| 卡片 | 0.60 | 0.80 | 12.133 | 6.20 | — | card_bg | — | 圆角 0.12", border |
| 左引号 | 0.90 | 1.00 | 1.20 | 1.20 | 72pt | primary | 左 | — |
| 右引号 | 11.20 | 4.40 | 1.10 | 1.10 | 72pt | primary | 右 | — |
| 引文正文 | 1.60 | 2.00 | 10.133 | 2.60 | 24pt | text_dark | 中 | 行高 1.5x |
| 分隔线 | 5.417 | 4.80 | 2.50 | 0.04 | — | secondary | — | — |
| 作者名 | 1.60 | 5.00 | 10.133 | 0.45 | body_size+2 | primary | 中 | 粗体 |
| 职衔 | 1.60 | 5.50 | 10.133 | 0.40 | body_size | text_muted | 中 | — |
数据接口
data = {
"quote": str, # 引文内容(建议 50-120 字,过长则字号自动缩小)
"author": str, # 作者姓名
"title": str, # 职衔/身份(如 "首席投资官" 或 "投行研报, 2024Q4")
"source": str, # 可选,来源说明(显示在左下角)
"variant": "dark" | "light", # 背景变体,默认 "dark"
"quote_font_size": int, # 可选,强制引文字号(默认根据文字长度自动)
}
字号自适应规则
引文字数 <= 40 字: quote_font_size = 32pt
引文字数 41-80 字: quote_font_size = 26pt
引文字数 81-120 字: quote_font_size = 22pt
引文字数 > 120 字: quote_font_size = 18pt(或换用文字较多的布局)
实现伪代码
def layout_quote(slide, data, theme):
sw, sh = 13.333, 7.5
m = theme["margin"]
cw = sw - 2 * m
variant = data.get("variant", "dark")
bg = theme["bg_dark"] if variant == "dark" else theme["bg_light"]
qt_color = theme["accent"] if variant == "dark" else theme["primary"]
text_color = theme["text_light"] if variant == "dark" else theme["text_dark"]
line_color = theme["accent"] if variant == "dark" else theme["secondary"]
set_slide_bg(slide, bg)
if variant == "light":
add_rounded_rect(slide, m, 0.80, cw, 6.20,
fill=theme["card_bg"], border=theme["border"],
radius=0.12)
# 自适应字号
q_len = len(data["quote"])
if q_len <= 40: qfont = 32
elif q_len <= 80: qfont = 26
elif q_len <= 120: qfont = 22
else: qfont = 18
qfont = data.get("quote_font_size", qfont)
# 装饰引号
add_text(slide, "\u275d", # ❝
x=m, y=1.00, w=1.50, h=1.50,
font_size=96, color=qt_color, bold=True,
font_name=theme["header_font"])
add_text(slide, "\u275e", # ❞
x=11.40, y=4.20, w=1.30, h=1.20,
font_size=96, color=qt_color, bold=True,
font_name=theme["header_font"])
# 引文
add_text(slide, data["quote"],
x=1.80, y=2.00, w=sw-3.60, h=2.80,
font_size=qfont, color=text_color,
align="center", font_name=theme["body_font"])
# 分隔线(居中)
line_w = 3.00
add_rect(slide, (sw-line_w)/2, 5.00, line_w, 0.04, fill=line_color)
# 作者 + 职衔
add_text(slide, data["author"],
x=1.80, y=5.15, w=sw-3.60, h=0.50,
font_size=theme["body_size"]+2, color=text_color,
bold=True, align="center", font_name=theme["header_font"])
add_text(slide, data["title"],
x=1.80, y=5.65, w=sw-3.60, h=0.40,
font_size=theme["body_size"], color=theme["text_muted"],
align="center", font_name=theme["body_font"])
if data.get("source"):
add_text(slide, f"来源:{data['source']}",
x=m, y=6.90, w=cw, h=0.35,
font_size=theme["caption_size"], color=theme["text_muted"],
font_name=theme["body_font"])
设计要点
- 装饰引号 用 Unicode
❝❞或""超大字号(72-96pt),纯作装饰,不参与文字排版 - 分隔线 宽 2.5-3.0 英寸,水平居中,比内容区窄,营造"浮雕"感
- 引文字体 建议用
body_font(更易读),不用header_font(太方正) - 深色变体 适合章节封面、结论页之前的观点陈述页
- 浅色变体 适合内容页中间插入的专家观点
测试数据示例
data = {
"quote": "长期投资的核心不是预测市场的每一次波动,而是在确定性的复利中耐心等待价值的回归。",
"author": "李明华",
"title": "首席投资策略师 | 国投养老基金",
"source": "2024年度投资策略报告",
"variant": "dark",
}