deck-portrait
Skill1 starsChanged 27 days agoMITView on GitHub
把横屏 HTML 讲解 deck(1920×1080,tech-talk-deck 这类 keynote 风单文件 deck)自动重排成竖屏 3:4 的 PNG(默认 1080×1440),用于小红书图文、朋友圈、手机阅读。页面上的标题、表格、数字卡、代码等改成竖排;图(自绘 SVG、论文原图)整张保留原结构,图里字太小时在后面追加同一张图的局部放大页(带小地图);溢出自动缩放,并逐页量出最小字号供自查。用户说「deck 转竖屏」「横屏字太小手机看不清」「把 slides 导成小红书图」「竖版 PNG」时用。不用于 PPTX / Keynote 原生文件,也不负责从零做 deck(那是 tech-talk-deck)。
In this repository25 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skills/pelican-bicycle-eval/AGENTS.mdAGENTS.md
- skills/tech-talk-deck/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- skills/pelican-bicycle-eval/CLAUDE.mdCLAUDE.md
- api-relay-verifySkill
- architecture-plan-authoringSkill
- batch-vlm-requestsSkill
- decision-stress-testingSkill
- edit-drift-evalSkill
- fair-eval-protocolSkill
- lecture-video-cutSkill
- paper-arch-figureSkill
- paper-quick-readSkill
- pelican-bicycle-evalSkill
- problem-solving-lensesSkill
- question-clarifyingSkill
- quiz-drillSkill
- self-understanding-interviewSkill
- tech-talk-deckSkill
- unfamiliar-topic-learningSkill
- weekly-review-authoringSkill
- working-reportSkill
- xhs-43-deckSkill
- xiaohongshu-content-extractionSkill
The file
Files
横屏 deck → 竖屏 PNG
横屏 deck 放进手机竖屏,整页被缩到屏宽,字只剩原来的一半左右。这个技能不是把整页缩小,而是按竖屏重新排一遍, 再逐页截图。内容一个字不改,只动版式;图的内部结构也不动,图太密就追加局部放大页。
一条命令
node <本技能>/scripts/deck_portrait.mjs path/to/deck.html- 依赖:Node ≥ 22(用内置 WebSocket 直连 Chrome DevTools),本机装有 Chrome / Chromium / Edge。不装任何 npm 包。
- 产物默认在
deck.html同级的portrait/:slide-NN.png(带放大页的是slide-NNa.png总览 +NNb、NNc放大)、contact.png(全部缩略图 + 每页标记)、report.json(每页的缩放、放大页、字号)。 - 52 页的 deck 约 12 秒。
常用参数:
| 参数 | 默认 | 用途 |
--pages 1-9,12 | 全部 | 只导出这些页(重跑单页时用) |
--out DIR | <deck 目录>/portrait | 输出目录 |
--size 1080x1440 | 3:4 | 画布尺寸,所有排版按这个宽度算 |
--scale 2 | 2 | 像素倍率,默认出 2160×2880 |
--no-crops | 关 | 不追加局部放大页(张数受限时用) |
--max-crops 2 | 2 | 一页最多追加几张放大页 |
--crop-below 16 | 16 | 图内 10% 分位字号低于这个像素才追加放大页 |
--config FILE | <deck 目录>/portrait.json | 逐页微调,见下 |
--debug N | — | 打印第 N 页每张图的裁边范围、候选空隙和图内字号 |
它自动做了什么
- 页面竖排:
.fig2.two.cards.steps.code2.cx动画页等横排容器改成上下排;数字卡 3 列改 2 列; 时间线改竖线;封面图条改两行拼图;导航、页码隐藏;动画页导出全部步骤点亮的终态。 - 图整张保留:自绘 SVG 和论文原图不切块、不改排列、不抽文字,只裁掉四周空白后按屏宽放大。 竖屏重排只动图之外的 HTML 块——图的结构就是作者画的结构,拆开重拼会改变意思。
- 局部放大页:图里的字太小(默认 10% 分位 < 16px)时,这一页后面追加 1–2 张同一张图的局部裁切:
沿图的长边等分、互相重叠一点、边缘尽量落在空隙上,内侧边缘渐隐表示「图在这边接着」;
顶部放整张图的小地图,蓝框标出当前放大的是哪一块。放大页只保留标题区,讲稿和底注留在总览页。
文件名:总览页
slide-09a.png,放大页slide-09b.png、slide-09c.png。 - 溢出兜底:内容还超出画布时整页逐级缩到 0.75,仍溢出就在报告里标「溢出」。
交付前必须自查(别跳)
跑完看终端最后一行「需要人工看的」,再用 Read 打开 portrait/contact.png 亲自看一遍,
有标记的页单独打开 slide-NN.png 放大看。逐页对:
- 小字 p10 < 20px:这一页 10% 的字小于 20px(1080 宽画布,≈ 手机上 7pt)。有放大页的总览页不报,
放大页还报说明图太宽,两张放大页也不够——可以用
"crops": 3,或者接受。 - 放大页的裁切位置:看裁边有没有把关键的框或公式正好切在渐隐里;不理想就换
crops张数, 或回 tech-talk-deck 调原图。 - 张数:放大页会增加张数。小红书一篇的图片张数有上限(目前 18 张,以 App 为准), deck 页数本来就超的话,先和用户确认要发哪些页、哪些页要放大,再决定。
- 过渡页(只有编号和两个字)在竖屏里基本是空页,发小红书时通常不选。
没看过 contact.png 不算做完。
逐页微调:portrait.json
放在 deck.html 同级,脚本会自动读:
{
"pages": "1-4,6,9-18",
"slides": {
"9": { "crops": 3 },
"22": { "crops": 0 },
"7": { "zoom": 0.9, "css": ".tbl.dsl td{font-size:24px}" }
}
}| 字段 | 含义 |
pages | 默认导出哪些页,命令行 --pages 优先 |
crops | 这一页追加几张局部放大页,0 表示不追加;论文位图不会自动追加,需要时在这里写 |
zoom | 固定整页缩放,不再自动找 |
css | 只在渲染这一页时生效的额外 CSS,改字号、藏元素都用它 |
适用范围
- 为 tech-talk-deck 模板写的:认
.slide/.active、#stage、.fig.diagbox.tblwrap等类名,用它的键盘翻页。 别的 HTML deck 只要每页是.slide、当前页带.active,竖排和截图也能跑,但放大页只认.diagbox > svg和.fig > img。 - 竖排规则在
scripts/portrait.css,放大页、溢出和字号测量在scripts/portrait.js,驱动在scripts/deck_portrait.mjs。 想改竖屏的字号、边距,改portrait.css;某个 deck 专属的调整写进它的portrait.json,不改脚本。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

