ljg-present

演讲铸造器(Outline-Faithful)。基于 orgmode/markdown outline 层级 1:1 视觉化呈现——色块大字、ultra-bold 错位,原文不动只做美化。三档主题色 black/red/yellow(默认 black 或按 filetags 推断),可用 -r/-b/-y…

INSTALLATION
npx skills add https://github.com/lijigang/ljg-skills --skill ljg-present
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

ljg-present: 演讲铸造器

把 outline 铸成色块——视觉化渲染器,把舞台还给讲的人。

这不是什么

  • 不是 manifesto 提炼器——不抽"那句话",不写"完整断言句",不重组顺序
  • 不是高桥流——不削词到单字
  • 不是 deck-style——不是企业 PPT 那种规整版式

这是什么

Outline → 视觉化渲染器

  • 输入 = orgmode 文件(* ** 层级 + 列表 + 表格 + 强调)
  • 输出 = 视觉美化的 slogan-style HTML,1:1 保留 outline 结构
  • 不抽提、不重写、不浓缩——只决定怎么把这一行/这一节渲染为页面

视觉语言(参考审美:Felipe Franco / BIG STUDIOS 的 manifesto 美学):

  • 整篇一个主题色——red/black/yellow 三选一
  • left-aligned 舞台美学——文字左对齐,超大字号自然撑屏
  • 超大字 ultra-bold——单字 70vmin、长句 11vmin
  • 多行错位——按 outline 嵌套深度自动 indent 0/1/2
  • 关键词自动换色——*强调* ~code~ 自动 hl
  • 章节切换打节拍——一级标题 * → emphasis 封面页,其余 → theme 页

核心哲学

Outline 是真理。Skill 是渲染器。

不动内容是一条铁律:

  • 标题不改字
  • 段落不改字
  • 列表项不改字
  • 表格不改结构
  • 顺序不重排

唯一允许的"动"是:物理分页(一段太长拆成多页),并保持视觉一致性。

Orgmode → 页面映射规则

标题层级

Org 元素

页面

* 一级标题

独占 emphasis 封面页(accent 底色)

** 二级标题

独占 theme 页(大字标题独占一页)

*** 三级标题+

独占 theme 页(字号降一档)

内容元素

Org 元素

页面行为

段落

theme 页,按句号/换行/字数分页

- 列表项

theme 页,每项一行,indent 按嵌套深度(0/1/2)

1. 编号列表

同上,保留序号前缀

嵌套列表

子项 indent +1(最多 indent=2)

| 表格 |

单页或多页,保留表格结构(首行加粗)

*强调*

自动 hl: true

~code~=verbatim=

自动 hl: true

「」 内的关键词

视觉单元(保留括号,不强制 hl)

引用 > ...

theme 页,indent 1 显示

分隔符 -----

独立 emphasis 休止页(无内容,纯色块)

#+begin_example

独立 pre 页(monospace 渲染 ASCII art)

文件级元数据

Org 元素

用途

#+title:

→ JSON title(浏览器 tab)

#+author:#+date:

→ JSON subtitle(页脚右下)

#+filetags:

用于推断 theme(见下)

#+identifier:

忽略

Theme 推断

优先级:显式参数 > filetags 推断 > 默认 black

显式覆盖(参数):

  • -r / --theme=red → red
  • -b / --theme=black → black
  • -y / --theme=yellow → yellow
  • --cyber → cyber-hacker(黑底绿字 + CRT 扫描线 + HUD + 终端光标)

filetags 自动推断:

filetags 含

theme

调性

:share: :talk: :manifesto: :keynote:

red

宣言、号召

:essay: :think: :learn: :note:

black

沉思、论证

:critique: :warn: :rant:

yellow

反讽、警觉

都没有

black

默认沉思调

分页规则(内容多时)

铁律:拆分后保持视觉一致性。同一逻辑块的页用同样的字号档位/底色/缩进规则。

情形

拆法

段落 ≤ 30 字

单页

段落 30-80 字,含多句号

每句一页(每页 medium 档字号)

段落 > 80 字

按 ~30 字一页拆,加 续标

列表 ≤ 4 项

单页全部展示(错位 indent)

列表 5-8 项

拆 2 页,每页 3-4 项(保持每页项数接近)

列表 > 8 项

拆多页,每页 4 项

嵌套列表(如 4 革命×4 属性)

父项 1 页 + 每个子项独立成组(标题 1 页 + 子项 1 页)

表格 ≤ 6 行

单页

表格 > 6 行

拆多页,每页保留表头

一致性检查:拆完后扫一遍——同源拆分的页要长得像同一种东西,字号/缩进/底色都对齐。

自动 emphasis(节拍)

  • 所有 * 一级标题 → emphasis 封面页
  • 文件首页(标题或第一行非空文本)→ emphasis 开场页(如已是一级标题则合并)
  • 文件末页(最后一段或最后一项)→ emphasis 收束页
  • ----- 分隔符 → emphasis 休止页
  • 其他全是 theme 页

不要为了凑节奏强行加 emphasis——一级标题就是天然的章节断点。

自动 hl(高亮)

  • org *强调*hl: true
  • org ~code~ =verbatim=hl: true
  • emphasis 页内的 hl 自动忽略(CSS color: inherit

映射举例

输入(org 节选):

#+title: 美团分享

#+filetags: :share:

* AI

** 为什么说 AI 是一次革命?

人类革命:能力让渡的层级跃迁

- 「人之为人」重新定义

- 社会组织重排

映射结果

#

类型

内容

来源

1

emphasis

「AI」

* AI(一级标题封面)

2

theme

「为什么说 AI 是一次革命?」

** ... 二级标题独占页

3

theme

「人类革命:能力让渡的层级跃迁」

段落,单句

4

theme

两行错位:「『人之为人』重新定义」/「社会组织重排」

列表 ≤4 项一页

theme 自动选 red(filetags :share:),title=美团分享

视觉规范

色板(仅 4 色)

--c-black:  #1A1A1A

--c-red:    #E63956

--c-yellow: #FFD400

--c-white:  #FFFFFF

--c-gold:   #FFE082

主题映射(一篇只用 ≤3 色)

theme

默认页

emphasis 页

hl 色(仅 theme 页)

black 沉思

黑底白字

红底白字

红色 #E63956

red 宣言

红底白字

黑底白字

柔金黄 #FFE082

yellow 反讽

黄底黑字

黑底白字

红色 #E63956

cyber 终端

黑底矩阵绿

绿底黑字

白色 #FFFFFF(带绿光 + CRT 扫描线 + 顶部 HUD)

字体栈

"Helvetica Neue", "Arial Black", "Inter", "PingFang SC", "Heiti SC", -apple-system, sans-serif

font-weight: 900

letter-spacing: -0.05em

cyber 主题额外字体(用于 HUD/footer/pre):

"JetBrains Mono", "Fira Code", "IBM Plex Mono", "Source Code Pro", "Menlo", monospace

字号自适应

按本页"最长那一行"的字符数(CJK 字符按 1.8 计权)自动分档:

档位

字符数

字号

single

≤ 2

70vmin

short

3-6

48vmin

medium

7-14

28vmin

long

15-26

16vmin

xlong

27+

10vmin

多行页自动降一档。

排版

  • 内容区域 padding 6vmin 7vmin(贴近边缘,让大字有撑满感)
  • lines 块水平居中 + 行内左对齐——align-items: center 让 lines 块整体在屏幕水平居中(消除 16:9 右侧空白),但每一行的文字仍是 left-aligned 起始,indent 0/1/2 在块内制造错位
  • letter-spacing -0.05em——ultra-bold 应有的字字挤压感
  • line-height 1.05、行间 gap 0.15em——多行折行也有呼吸空间
  • 文字垂直方向:居中
  • 页脚:左下页码 + 右下副标题,13px monospace,opacity 0.5

JSON Schema

{

  "theme": "black|red|yellow|cyber",      // 主题色(必选,决定整篇调性)

  "title": "演讲标题(浏览器 tab)",

  "subtitle": "副标题/品牌(页脚右下,可选)",

  "slides": [

    // 默认 theme 页

    {

      "lines": [                          // 1-N 行

        {

          "indent": 0,                    // 0/1/2 缩进档(按 outline 嵌套深度)

          "align": "left|center|right",   // 可选,默认 left

          "chunks": [                     // 行内片段

            {"t": "句子前段"},

            {"t": "高亮词", "hl": true},  // 仅 theme 页生效

            {"t": "句子后段"}

          ]

        }

      ]

    },

    // emphasis 页(accent 底色,整页就是高亮,不允许 inline hl)

    { "emphasis": true, "lines": [...] },

    // pre 页(ASCII art / 预格式化块)

    { "preTitle": "diagram_name", "pre": "...preformatted text..." }

  ]

}

字段省略约定

  • 不写 emphasis = 默认 theme 页
  • emphasis 页内 chunks[].hl: true 会被忽略
  • pre 字段则该页为 ASCII art 页(monospace 渲染)

调用流程

  • 获取内容(文件 → Read / 粘贴 → 直接用 / URL → WebFetch)
  • 解析 outline
  • org:识别 * ** 标题层级、- 1. 列表、|...| 表格、*强调* / ~code~#+begin_example
  • markdown(兼容):# ## 标题、- * 列表、| 表格、**强调** 代码块
  • 纯文本(fallback):按空行分段,每段一页
  • 推断 theme:显式参数 > #+filetags: > 默认 black
  • 应用映射规则生成 slides 数组:
  • * 标题 → emphasis 封面
  • **+ 标题 → theme 独占页
  • 段落 → theme 页(按分页规则)
  • 列表 → theme 页(错位 indent + 分页规则)
  • 表格 → theme 页(保留结构 + 分页规则)
  • 强调 → 自动 hl
  • example 块 → 独立 pre 页
  • Read assets/slogan_template.html(cyber 主题需在模板基础上注入扫描线/HUD/光标 CSS)
  • 替换占位符
  • {{TITLE}} → 文件 #+title: 或显式参数
  • {{SUBTITLE}}#+author: #+date: 拼接,或留空
  • {{THEME}} → 推断或显式参数(black|red|yellow|cyber)
  • {{SLIDES_JSON}} → JSON.stringify(slides)
  • 写文件~/Downloads/{name}.html{name} 取自 #+title: 或文件名,去标点,≤ 20 字)
  • 报告路径 + 翻页键 → ← Space F Home End

品味准则

  • outline 是真理——不动字、不抽提、不重写、不重排
  • 一级标题 = emphasis 封面——天然的章节断点,自动节拍
  • 二级标题 = 独占 theme 页——给标题应有的重量
  • 列表错位——靠 indent 0/1/2 体现 outline 嵌套深度
  • ***强调* 自动 hl**——尊重作者的标记意图
  • 拆页保持一致——同一逻辑块的视觉处理一致(字号档位/缩进/底色)
  • 页脚保留——页码 + 副标题不要删,那是品牌的冷气
  • 左对齐不居中——VACAT 美学的灵魂

禁区

  • 不抽 manifesto——不要"找钉子",作者已经写好了 outline
  • 不写新句子——不要"完整断言句"重组
  • 不重排顺序——按 outline 顺序输出,作者怎么排就怎么呈现
  • 不删内容——所有列表项/段落都要呈现,不挑挑拣拣
  • 不放图片/图标——色块就是图(cyber 主题的 HUD/扫描线除外,那是主题的一部分)
  • 不用过渡动画——硬切
  • 不在 emphasis 页用 inline hl——emphasis 整页就是高亮,再 hl 就乱了
  • 不混用多个 theme——一篇一个气质,不切换
  • 不要副标题字过大——页脚 13px,气场不能抢主标
  • 不擅自加 emphasis——只有一级标题、首末页、----- 是 emphasis,别的不要

中文默认

默认输出中文。除非原文是英文且用户要求保留英文。

通用交互

  • Space Enter j PageDown:下一页(含蓝牙翻页笔)
  • k PageUp:上一页(含蓝牙翻页笔)
  • Home/End:跳首末
  • f/F:全屏切换
  • 触屏左右滑:翻页
  • 点击右半屏:下一页;点击左半屏:上一页
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card