# 小红书推送生成 SOP (xiaohongshu_note_sop)

## 触发场景
用户提供论文信息，要求生成小红书推送（封面图 + 文案）

## 用户输入（每次只需提供这些）
- **论文主体**：论文PDF文件
- **论文题目**：论文的完整标题
- **论文代码**：论文在平台上的编码（如arXiv编号）
- **研究机构**：进行研究的机构名称
- **发布时间**：论文的发布时间
- **账号名称**、**标签方向**（可选，有默认值）

---

## 统一工作流（读一遍论文，生成封面+文案）

### Phase 0：信息提取（一次性完成）

读取论文全文，提取以下信息供封面和文案共用：

| 提取项 | 用途 | 示例 |
|--------|------|------|
| 中文精华标题（≤30字） | 封面主标题 | "从AI助手到AI科学家" |
| 核心方法名称 | 封面副标题 + 文案正文 | "POISE框架" |
| 数据亮点（2-3组数字） | 封面数据卡 + 文案效果段 | "+4.6 Overall" |
| 方法细节/创新点 | 文案核心方法段 | "认知进化搜索" |
| 实验结论/设计原则 | 文案价值升华段 | "三条设计原则" |
| 论文展望/局限 | 文案思辨问题 | "未来方向" |
| 一句话颠覆性意义 | 文案开头场景构思 | "AI自主做科研" |

### Phase 1：生成封面图（HTML → PNG）

#### 1.1 HTML封面设计
- **比例**：3:4（推荐 540×720px）
- **结构**：单个 `<div id="cover">` 画布，`border:0; border-radius:0`
- **字体**：Google Fonts CDN（推荐 Noto Sans SC），4级字号层次
  - 主标题 ≥ 副标题字号 × 3
  - 关键词特殊处理（渐变色/高亮/不同颜色）
- **文字占比**：≥ 70% 页面空间，装饰为辅
- **装饰**：SVG流动曲线、几何点缀（圆环/三角/光点）、径向渐变光晕
- **图标**：Font Awesome CDN
- **保存功能**：html2canvas CDN + 保存按钮（按钮在封面div外，不影响截图）

#### 1.2 截图导出
- Playwright + 本地 Edge（`channel="msedge", headless=True`）
- `page.goto(file_url)` → `wait_for_timeout(3000)` 等字体加载
- `page.locator("#cover").screenshot(path=...)`
- 验证：尺寸比例、文字可读性
- 导出 PNG 到桌面

### Phase 2：生成文案（写作要求已固化，无需用户每次提供）

> 以下为固化的创作指导原文，执行时直接遵循，不做二次解读。

#### 2.1 角色设定

你代表一个顶尖高校的人工智能实验室，这里汇聚了许多人才，产生了无数科研成果。现在计划在小红书平台上展示实验室的成果，或者解读AI行业新闻、普及学术前沿知识，来达成提升自身知名度的目的。你兼具AI专业知识与互联网网感，你发布的内容融合了专业性、实用性、趣味性、启发性（以严谨扎实的硬核AI科技为基础、锚定人们工作生活娱乐的需求、用生动活泼的形式演绎、还要引发人们深度思考）。

#### 2.2 文案模板

**【引入】**

封面标语（20字以内）：简洁有力的标题，用于吸引用户点击。

文案开头（100字以内）：你充分理解论文内容后，思考论文的结论/成果可以颠覆人们工作/生活/娱乐的哪个方面，例如解决了某个工作环节的痛点、提升了某个生活场景的质量、创造了某个娱乐的新形式。然后构建一个简单、抽象、戏剧化的场景，体现出论文的结论/成果产生了怎样的效果，有多么重大的意义；用小红书化的充满张力、感染力的语言表现出来。

**【正文】**

话题引入：你使用一句话巧妙地将话题从引入部分虚构的情景引入到严肃的AI专业论文来。

内容结构：论文的标准结构大约是：目的、背景、方法和过程、成果、结论、不足与展望。你综合考虑输入论文的结构和论文的标准结构决定生成的文案的结构。

专业平衡：你需要在AI知识的专业性和内容的通俗性之间找到平衡，既能体现出实验室的专业水平并完整呈现论文的核心要义，又能使对AI感兴趣的初学者没有阅读困难并产生好奇心得到满足的满足感。

内容精炼：由于小红书文案的规模比论文规模小很多，必然会牺牲很多细节。应当重点使用论文中的关键句、总结句，或者你根据具体内容生成概括性的描述。主要展示论文的创新点和亮点，有选择地省略机械性、枯燥的、陈旧的内容。

**【个性化结尾】**

思辨问题：如果论文结尾的展望部分提到了很有启发性的想法，可以直接转述出来；如果论文展望不多，你自主提出一个"AI改变生活"主题的思辨性问题，目的是在评论区引起讨论。

问题设计：你应该根据论文的现实关注点、论文结论/成果的颠覆性意义、AI与人类关系的哲思。提出的问题可以是开放性的，足以引发人们百花齐放的分享，也可以是对抗性的，足以引发正反双方的激烈辩论。

问题长度：问题不宜太长，言简意赅即可，50字以内。

**【固定结尾】**
```
📄 论文题目：[原文标题]
📎 论文代码：[arXiv编号等]
🏫 研究机构：[机构名称]
📅 发布时间：[日期]
```

#### 2.3 字数规范
- **默认上限：2000字**（纯文字，不含emoji和分隔线）
- **突破机制**：当论文内容极其丰富、必须展示更多细节时：
  1. 暂停生成
  2. 将当前半成品呈现给用户
  3. 说明哪些内容必须展示及理由
  4. 等待用户批准后继续

#### 2.4 写作技巧（补充）
- 专业术语首次出现时用括号给出通俗解释
- 数据用对比形式呈现（before → after）
- 每段不超过3-4行，保持移动端阅读节奏
- emoji作为段落视觉锚点，不过度使用
- 英文论文标题保持原文，不翻译

### Phase 3：输出交付

将以下文件保存到桌面：
- `小红书封面_[主题].html` — 可编辑源文件
- `小红书封面_[主题].png` — 直接可用封面图
- `小红书文案_[主题].txt` — 完整文案文本

---

## ⚠ 避坑清单

### CSS文字描边陷阱（已踩坑）
```
❌ 错误：-webkit-text-stroke + -webkit-text-fill-color: transparent
   → 文字变空心镂空，只有描边线条无填充色
   
✅ 正确做法（要描边+填充）：
   方案A：只用 -webkit-text-stroke，不设 text-fill-color: transparent
   方案B：用 background-clip: text + gradient 做彩色填充（不加stroke）
   方案C：双层叠加——底层填充色 + 上层用伪元素做描边
```
**根因**：`-webkit-text-fill-color: transparent` 会清除文字内部填充，
配合 `-webkit-text-stroke` 只剩描边轮廓。想要"描边+填充"效果时禁用 transparent。

### 其他注意
- html2canvas 截图时 `scale:2` 保证清晰度
- Google Fonts 在 headless 浏览器中需 `wait_for_timeout(3000)` 等待加载
- 保存按钮用 `position:fixed` 置于封面外，避免被截入图片