新闻好句赏析 PPT
把一篇英文新闻(默认 China Daily 类短新闻)自动转成可直接上课的"好句赏析"PPT 课件。
硬约束(每一条都必须遵守)
- 图片必须来自原文:用
curl抓页面 HTML,正则提取src="...jpg|jpeg|png",下载到assets/。
禁止用 AI 生图替代新闻照片;只有在原文完全无图时才可生图,并须告知用户。
下载后必须逐张Read核对内容与清晰度,裁掉水印(PIL crop 底部/右下角)。 - 文字一律手工硬换行:每个显示行 = 一个独立段落(
text_frame.add_paragraph()),
绝不允许依赖文本框自动折行——渲染器不折行会导致整段文字挤成一行。这是本项目最容易返工的点。 - 不依赖 slidep / slidekit:本机工具链与文档不匹配,统一用
python-pptx生成。 - 好句数量 4 句,覆盖词汇、句式、修辞不同侧重,难度适配高中及以上。
- 交付前必须做溢出校验(遍历所有 shape,越界即返工),并用 present_files 打开成品。
工作流
Step 1 · 抓取原文
curl -s "<URL>" -H "User-Agent: Mozilla/5.0" | python3 -c "
import sys,re,html
t=sys.stdin.read()
body=re.findall(r'<div[^>]*class=\"[^\"]*content[^\"]*\"[^>]*>(.*?)</div>',t,re.S)
txt=html.unescape(re.sub(r'<[^>]+>','\n',body[0] if body else t))
print('\n'.join(l.strip() for l in txt.split('\n') if len(l.strip())>40))"
同时提取:标题、作者、摄影、发布日期、地点、图片 URL。图片下载到项目 assets/,命名为 cd_<id>.jpeg;
封面需先按 2.4:1 裁切(如 im.crop((0, top, w, top+486)))。
Step 2 · 选句与拆解
按原文行文顺序(景→雾→源→观等)选 4 句,每句产出:
- 英文原句(拆成 3–4 个意群显示行,关键词加色块)
- 中文译文(2 行,关键处深红加粗)
- 4 条亮点,每条两行:第一行「● 词块/术语」,第二行「解析」
- 标签:【词汇】【炼字】【句式】【词块】【修辞】【迁移】
- 一条可迁移句型公式
Step 3 · 生成
复制 scripts/build_ppt_template.py 到项目目录,替换其中的图片路径、文案数据,
按本文件「版式规范」改数据,然后 python3 build_ppt.py。模板已内置:
配色变量、字体双写(中英分别 typeface)、文本高亮(run 级 a:highlight)、硬换行写文本函数、溢出校验。
Step 4 · 校验与交付
校验所有 shape 不越界;用 present_files 打开 pptx;简短汇报页数、内容结构与图片来源。
版式规范(必须复刻)
画布 1280×720(13.333×7.5 英寸),7 页:
| # | 页面 | 内容 |
|---|---|---|
| 01 | 封面 hero | 原图铺满上 72%,下 28% 深蓝块放中文大标题 + 英文标题 + 出处/作者/摄影/日期/地点 |
| 02 | 导读 | 米色底 + 红色徽标标题;原文概述(3 行)+ 学习目标;下方 4 张原图缩略目录卡 |
| 03–06 | 好句页 ×4 | 左大图 + 右上好句卡 + 右下赏·亮点 + 底部句型条 |
| 07 | 结束页 | 深蓝底,四个句型公式汇总 |
好句页坐标(固定):
- 左图 x=0.7, y=1.18, w=5.35, h=5.10,图下 0.05 处放英文图注(9.5pt 灰色斜体)
- 右上好句卡 x=6.35, y=1.18, w=6.28, h=2.05(左侧 0.06 金色竖条)
- 右下亮点面板 x=6.35, y=3.36, w=6.28, h=3.02
- 底部句型条 x=0.7, y=6.52, w=11.93, h=0.5(金色虚线感圆角条)
- 亮点每条:行高 0.255 英寸,条间距 0.13,标签置于该条末行行尾(按字宽估算 x,上限 rw-0.9)
配色:底 F5F0E4 米色 / 卡片 FBF8EF / 金 B0822A / 墨 3E3A33 / 红 B02E1F / 蓝 2B6C99 /
词块底色 EFE3C8、核心词 F7E7B4 / 描边 E0D6C2 / 页脚灰 8A867C。
字号:英文 Georgia 15pt、中文微软雅黑 15pt(次要成分 14pt)、标签 9.5pt、
页面标题 23pt、徽标 18pt、封面主标 40pt、图注 9.5pt。中英同框时视觉重量相当。
字体双写(必须):每个 run 同时设 a:latin、a:ea、a:cs,否则中文会掉字体。
常见返工点
| 症状 | 原因 | 修法 |
|---|---|---|
| 文字全挤一行、没换行 | 依赖自动折行 | 改硬换行:一行一段落 |
| 亮点条目互相重叠 | 面板高度不够 | 加大面板 / 精简解析文字至一行 |
| 标签与文字错位 | 标签用固定右边缘坐标 | 按字宽估算行尾 x,跟随对应行 |
| 中文变宋体 | 未写 ea 字体 | run 级补 a:ea typeface |
| 图片拉伸 | 直接给 width+height | 先按目标比例 PIL 裁切 |
输出
/workspace/<课件名>/<课件名>.pptx,同时保留 build_ppt.py 与 assets/,便于用户后续微调。