mirror of
https://github.com/comeonzhj/Auto-Redbook-Skills.git
synced 2026-03-27 12:49:27 +08:00
optimize skill: private-by-default, sketch theme, references docs
- publish_xhs.py: 默认改为仅自己可见(is_private=True),--private 改为 --public 标志 - render_xhs.py: 默认主题从 default 改为 sketch - SKILL.md: 重构为精简规范格式,引用 references/params.md - references/params.md: 新增完整参数参考文档(渲染/发布/Markdown格式) - README.md: 顶部添加一句话 Agent 安装指引,更新项目结构说明 Made-with: Cursor
This commit is contained in:
14
README.md
14
README.md
@@ -1,5 +1,10 @@
|
|||||||
## 📕 Auto-Redbook-Skills(已重构版)
|
## 📕 Auto-Redbook-Skills(已重构版)
|
||||||
|
|
||||||
|
> **一句话安装此技能**:让你的 Agent 说:「拉取下面的项目,安装其中的技能:https://github.com/comeonzhj/Auto-Redbook-Skills 」
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
> 自动撰写小红书笔记、生成多主题卡片、可选自动发布的 Skills
|
> 自动撰写小红书笔记、生成多主题卡片、可选自动发布的 Skills
|
||||||
> 当前版本对渲染脚本和样式系统做了**一次完整重构**,感谢 Cursor 的辅助开发 🙌
|
> 当前版本对渲染脚本和样式系统做了**一次完整重构**,感谢 Cursor 的辅助开发 🙌
|
||||||
|
|
||||||
@@ -146,7 +151,7 @@ python scripts/publish_xhs.py \
|
|||||||
|
|
||||||
| 参数 | 说明 |
|
| 参数 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| `--private` | 设为私密笔记 |
|
| `--public` | 公开发布(默认仅自己可见) |
|
||||||
| `--post-time "2024-01-01 12:00:00"` | 定时发布 |
|
| `--post-time "2024-01-01 12:00:00"` | 定时发布 |
|
||||||
| `--api-mode` | 通过 xhs-api 服务发布 |
|
| `--api-mode` | 通过 xhs-api 服务发布 |
|
||||||
| `--dry-run` | 仅验证,不实际发布 |
|
| `--dry-run` | 仅验证,不实际发布 |
|
||||||
@@ -162,6 +167,8 @@ Auto-Redbook-Skills/
|
|||||||
├── requirements.txt # Python 依赖
|
├── requirements.txt # Python 依赖
|
||||||
├── package.json # Node.js 依赖
|
├── package.json # Node.js 依赖
|
||||||
├── env.example.txt # Cookie 配置示例
|
├── env.example.txt # Cookie 配置示例
|
||||||
|
├── references/ # 技能参考文档
|
||||||
|
│ └── params.md # 完整参数参考(主题/模式/发布参数)
|
||||||
├── assets/
|
├── assets/
|
||||||
│ ├── cover.html # 封面 HTML 模板
|
│ ├── cover.html # 封面 HTML 模板
|
||||||
│ ├── card.html # 正文卡片 HTML 模板
|
│ ├── card.html # 正文卡片 HTML 模板
|
||||||
@@ -185,9 +192,10 @@ Auto-Redbook-Skills/
|
|||||||
│ ├── Sketch/
|
│ ├── Sketch/
|
||||||
│ └── terminal/
|
│ └── terminal/
|
||||||
└── scripts/
|
└── scripts/
|
||||||
├── render_xhs.py # Python 渲染脚本(支持主题 + 分页模式)
|
├── render_xhs.py # Python 渲染脚本(8 主题 + 4 分页模式)
|
||||||
|
├── render_xhs_v2.py # Python 渲染脚本 V2(7 渐变色彩风格)
|
||||||
├── render_xhs.js # Node.js 渲染脚本
|
├── render_xhs.js # Node.js 渲染脚本
|
||||||
└── publish_xhs.py # 小红书发布脚本
|
└── publish_xhs.py # 小红书发布脚本(默认仅自己可见)
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
215
SKILL.md
215
SKILL.md
@@ -1,212 +1,119 @@
|
|||||||
---
|
---
|
||||||
name: xhs-note-creator
|
name: xhs-note-creator
|
||||||
description: 小红书笔记素材创作技能。当用户需要创建小红书笔记素材时使用这个技能。技能包含:根据用户的需求和提供的资料,撰写小红书笔记内容(标题+正文),生成图片卡片(封面+正文卡片),以及发布小红书笔记。
|
description: 小红书笔记素材创作技能。当用户需要创建小红书笔记素材时使用这个技能。技能包含:根据用户的需求和提供的资料,撰写小红书笔记内容(标题+正文),生成图片卡片(封面+正文卡片),以及发布小红书笔记。支持 8 种精美排版主题和 4 种智能分页模式。
|
||||||
---
|
---
|
||||||
|
|
||||||
# 小红书笔记创作技能
|
# 小红书笔记创作技能
|
||||||
|
|
||||||
这个技能用于创建专业的小红书笔记素材,包括内容撰写、图片卡片生成和笔记发布。
|
根据用户提供的资料或需求,创作小红书笔记内容、生成精美图片卡片,并可选择发布到小红书。
|
||||||
|
|
||||||
## 使用场景
|
> 详细参数文档见 `references/params.md`
|
||||||
|
|
||||||
- 用户需要创建小红书笔记时
|
---
|
||||||
- 用户提供资料需要转化为小红书风格内容时
|
|
||||||
- 用户需要生成精美的图片卡片用于发布时
|
|
||||||
|
|
||||||
## 工作流程
|
## 工作流程
|
||||||
|
|
||||||
### 第一步:撰写小红书笔记内容
|
### 第一步:撰写小红书笔记内容
|
||||||
|
|
||||||
根据用户需求和提供的资料,创作符合小红书风格的内容:
|
根据用户需求和资料,创作符合小红书风格的内容:
|
||||||
|
|
||||||
#### 标题要求
|
**标题**:不超过 20 字,吸引眼球,可用数字/疑问句/感叹号增强吸引力。
|
||||||
- 不超过 20 字
|
|
||||||
- 吸引眼球,制造好奇心
|
|
||||||
- 可使用数字、疑问句、感叹号增强吸引力
|
|
||||||
- 示例:「5个让效率翻倍的神器推荐!」「震惊!原来这样做才对」
|
|
||||||
|
|
||||||
#### 正文要求
|
**正文**:段落清晰,点缀少量 Emoji(每段 1-2 个),短句短段,结尾附 5-10 个 SEO 标签。
|
||||||
- 使用良好的排版,段落清晰
|
|
||||||
- 点缀少量 Emoji 增加可读性(每段 1-2 个即可)
|
|
||||||
- 使用简短的句子和段落
|
|
||||||
- 结尾给出 SEO 友好的 Tags 标签(5-10 个相关标签)
|
|
||||||
|
|
||||||
### 第二步:生成 Markdown 文档
|
|
||||||
|
|
||||||
**注意:这里生成的 Markdown 文档是用于渲染卡片的,必须专门生成,禁止直接使用上一步的笔记正文内容。**
|
|
||||||
|
|
||||||
Markdown 文件,文件应包含:
|
|
||||||
|
|
||||||
1. YAML 头部元数据(封面信息):
|
|
||||||
```yaml
|
|
||||||
---
|
---
|
||||||
emoji: "🚀" # 封面装饰 Emoji
|
|
||||||
title: "大标题" # 封面大标题(不超过15字)
|
|
||||||
subtitle: "副标题文案" # 封面副标题(不超过15字)
|
|
||||||
---
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 用于渲染卡片的 Markdown 文本内容:
|
### 第二步:生成渲染用 Markdown 文档
|
||||||
- 当待渲染内容必须严格切分为独立的数张图片时,可使用 `---` 分割线主动将正文分隔为多个卡片段落(每个段落文本控制在 200 字左右),输出图片时使用参数`-m separator`
|
|
||||||
- 当待渲染内容无需严格分割,生成正常 Markdown 文本即可,跟下方分页模式参数规则按需选择
|
|
||||||
|
|
||||||
完整 Markdown 文档内容示例:
|
**注意:此 Markdown 专为图片渲染设计,禁止直接使用上一步的笔记正文。**
|
||||||
|
|
||||||
|
文档结构:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
---
|
---
|
||||||
emoji: "💡"
|
emoji: "🚀"
|
||||||
title: "5个效率神器让工作效率翻倍"
|
title: "封面大标题(≤15字)"
|
||||||
subtitle: "对着抄作业就好了,一起变高效"
|
subtitle: "封面副标题(≤15字)"
|
||||||
---
|
---
|
||||||
|
|
||||||
# 📝 神器一:Notion
|
# 正文内容...
|
||||||
|
|
||||||
> 全能型笔记工具,支持数据库、看板、日历等多种视图...
|
---
|
||||||
|
|
||||||
## 特色功能
|
|
||||||
|
|
||||||
- 特色一
|
|
||||||
- 特色二
|
|
||||||
|
|
||||||
# ⚡ 神器二:Raycast
|
|
||||||
|
|
||||||
\`\`\`
|
|
||||||
可使用代码块来增加渲染后图片的视觉丰富度
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
## 推荐原因
|
|
||||||
|
|
||||||
- 原因一
|
|
||||||
- 原因二
|
|
||||||
- ……
|
|
||||||
|
|
||||||
|
|
||||||
# 🌈 神器三:Arc
|
|
||||||
|
|
||||||
全新理念的浏览器,侧边栏标签管理...
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
|
# 第二张卡片内容...(使用 --- 手动分隔时)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 第三步:渲染图片卡片
|
分页策略选择:
|
||||||
|
- 内容需精确切分 → 用 `---` 手动分隔,配合 `-m separator`
|
||||||
|
- 内容长短不稳定 → 生成普通 Markdown,使用 `-m auto-split`
|
||||||
|
|
||||||
将 Markdown 文档渲染为图片卡片。使用以下脚本渲染:
|
---
|
||||||
|
|
||||||
|
### 第三步:渲染图片卡片
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python scripts/render_xhs.py <markdown_file> [options]
|
python scripts/render_xhs.py <markdown_file> [options]
|
||||||
```
|
```
|
||||||
|
|
||||||
- 默认输出目录为当前工作目录
|
**默认主题**:`sketch`(手绘素描风格)
|
||||||
- 生成的图片包括:封面(cover.png)和正文卡片(card_1.png, card_2.png, ...)
|
**默认分页**:`separator`(按 `---` 分隔)
|
||||||
|
|
||||||
#### 渲染参数(Python)
|
常用示例:
|
||||||
|
|
||||||
| 参数 | 简写 | 说明 | 默认值 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| `--output-dir` | `-o` | 输出目录 | 当前工作目录 |
|
|
||||||
| `--theme` | `-t` | 排版主题 | `default` |
|
|
||||||
| `--mode` | `-m` | 分页模式 | `separator` |
|
|
||||||
| `--width` | `-w` | 图片宽度 | `1080` |
|
|
||||||
| `--height` | | 图片高度(`dynamic` 下为最小高度) | `1440` |
|
|
||||||
| `--max-height` | | `dynamic` 最大高度 | `4320` |
|
|
||||||
| `--dpr` | | 设备像素比(清晰度) | `2` |
|
|
||||||
|
|
||||||
#### 排版主题(`--theme`)
|
|
||||||
|
|
||||||
- `default`:默认简约浅灰渐变背景(`#f3f3f3 -> #f9f9f9`)
|
|
||||||
- `playful-geometric`:活泼几何(Memphis)
|
|
||||||
- `neo-brutalism`:新粗野主义
|
|
||||||
- `botanical`:植物园自然
|
|
||||||
- `professional`:专业商务
|
|
||||||
- `retro`:复古怀旧
|
|
||||||
- `terminal`:终端命令行
|
|
||||||
- `sketch`:手绘素描
|
|
||||||
|
|
||||||
#### 分页模式(`--mode`)
|
|
||||||
|
|
||||||
- `separator`:按 `---` 分隔符分页(适合内容已手动控量)
|
|
||||||
- `auto-fit`:固定尺寸下自动缩放文字,避免溢出/留白(适合封面+单张图片但尺寸固定的情况)
|
|
||||||
- `auto-split`:按渲染后高度自动切分分页(适合切分不影响阅读的长文内容)
|
|
||||||
- `dynamic`:根据内容动态调整图片高度(注意:图片最高 4320,字数超过 550 的不建使用此模式)
|
|
||||||
|
|
||||||
#### 常用示例
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1) 默认主题 + 手动分隔分页
|
# 默认(sketch 主题 + 手动分页)
|
||||||
python scripts/render_xhs.py content.md -m separator
|
python scripts/render_xhs.py content.md
|
||||||
|
|
||||||
# 2) 固定 1080x1440,自动缩放文字,尽量填满画面
|
# 自动分页(推荐内容长短不定时)
|
||||||
python scripts/render_xhs.py content.md -m auto-fit
|
|
||||||
|
|
||||||
# 3) 自动切分分页(推荐:内容长短不稳定)
|
|
||||||
python scripts/render_xhs.py content.md -m auto-split
|
python scripts/render_xhs.py content.md -m auto-split
|
||||||
|
|
||||||
# 4) 动态高度(允许不同高度卡片)
|
# 切换主题
|
||||||
python scripts/render_xhs.py content.md -m dynamic --max-height 4320
|
|
||||||
|
|
||||||
# 5) 切换主题
|
|
||||||
python scripts/render_xhs.py content.md -t playful-geometric -m auto-split
|
python scripts/render_xhs.py content.md -t playful-geometric -m auto-split
|
||||||
|
|
||||||
|
# 固定尺寸自动缩放
|
||||||
|
python scripts/render_xhs.py content.md -m auto-fit
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Node.js 渲染(可选)
|
生成结果:`cover.png`(封面)+ `card_1.png`、`card_2.png`...(正文卡片)
|
||||||
|
|
||||||
```bash
|
**可用主题**(`-t`):`sketch`、`default`、`playful-geometric`、`neo-brutalism`、`botanical`、`professional`、`retro`、`terminal`
|
||||||
node scripts/render_xhs.js content.md -t default -m separator
|
|
||||||
```
|
|
||||||
|
|
||||||
Node.js 参数与 Python 基本一致:`--output-dir/-o`、`--theme/-t`、`--mode/-m`、`--width/-w`、`--height`、`--max-height`、`--dpr`。
|
**分页模式**(`-m`):`separator`、`auto-fit`、`auto-split`、`dynamic`
|
||||||
|
|
||||||
|
> 完整参数说明见 `references/params.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### 第四步:发布小红书笔记(可选)
|
### 第四步:发布小红书笔记(可选)
|
||||||
|
|
||||||
使用发布脚本将生成的图片发布到小红书:
|
**前置条件**:配置好 `.env` 文件中的 `XHS_COOKIE`(详见 `references/params.md`)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python scripts/publish_xhs.py --title "笔记标题" --desc "笔记描述" --images card_1.png card_2.png cover.png
|
# 默认仅自己可见(推荐先预览确认)
|
||||||
|
python scripts/publish_xhs.py --title "笔记标题" --desc "笔记描述" \
|
||||||
|
--images cover.png card_1.png card_2.png
|
||||||
|
|
||||||
|
# 确认无误后公开发布
|
||||||
|
python scripts/publish_xhs.py --title "笔记标题" --desc "笔记描述" \
|
||||||
|
--images cover.png card_1.png card_2.png --public
|
||||||
```
|
```
|
||||||
|
|
||||||
**前置条件**:
|
> **默认以「仅自己可见」发布**,加 `--public` 参数才会公开。
|
||||||
|
|
||||||
1. 需配置小红书 Cookie:
|
---
|
||||||
```
|
|
||||||
XHS_COOKIE=your_cookie_string_here
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Cookie 获取方式:
|
|
||||||
- 在浏览器中登录小红书(https://www.xiaohongshu.com)
|
|
||||||
- 打开开发者工具(F12)
|
|
||||||
- 在 Network 标签中查看请求头的 Cookie
|
|
||||||
|
|
||||||
## 图片规格说明
|
|
||||||
|
|
||||||
### 封面卡片
|
|
||||||
- 尺寸比例:3:4(小红书推荐比例)
|
|
||||||
- 基准尺寸:1080×1440px
|
|
||||||
- 包含:Emoji 装饰、大标题、副标题
|
|
||||||
- 样式:渐变背景 + 圆角内容区
|
|
||||||
|
|
||||||
### 正文卡片
|
|
||||||
- 尺寸比例:3:4
|
|
||||||
- 基准尺寸:1080×1440px
|
|
||||||
- 支持:标题、段落、列表、引用、代码块、图片
|
|
||||||
- 样式:白色卡片 + 渐变背景边框
|
|
||||||
|
|
||||||
## 技能资源
|
## 技能资源
|
||||||
|
|
||||||
### 脚本文件
|
### 脚本
|
||||||
- `scripts/render_xhs.py` - Python 渲染脚本
|
- `scripts/render_xhs.py` — 渲染脚本(主推,8 主题 + 4 分页模式)
|
||||||
- `scripts/render_xhs.js` - Node.js 渲染脚本
|
- `scripts/render_xhs_v2.py` — 渲染脚本 V2(备用,7 种渐变色彩风格)
|
||||||
- `scripts/publish_xhs.py` - 小红书发布脚本
|
- `scripts/publish_xhs.py` — 发布脚本
|
||||||
|
|
||||||
### 资源文件
|
### 模板与样式
|
||||||
- `assets/cover.html` - 封面 HTML 模板
|
- `assets/cover.html` — 封面 HTML 模板
|
||||||
- `assets/card.html` - 正文卡片 HTML 模板
|
- `assets/card.html` — 正文卡片 HTML 模板
|
||||||
- `assets/styles.css` - 共用样式表
|
- `assets/styles.css` — 公共容器样式
|
||||||
|
- `assets/themes/` — 各主题 CSS 文件
|
||||||
|
|
||||||
## 注意事项
|
### 参考文档
|
||||||
|
- `references/params.md` — 完整参数参考(主题/模式/发布参数)
|
||||||
1. Markdown 文件应保存在工作目录,渲染后的图片也保存在工作目录
|
|
||||||
2. 技能目录 (`md2Redbook/`) 仅存放脚本和模板,不存放用户数据
|
|
||||||
3. 图片尺寸会根据内容自动调整,但保持 3:4 比例
|
|
||||||
4. Cookie 有有效期限制,过期后需要重新获取
|
|
||||||
5. 发布功能依赖 xhs 库,需要安装:`pip install xhs`
|
|
||||||
|
|||||||
156
references/params.md
Normal file
156
references/params.md
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
# 参数参考文档
|
||||||
|
|
||||||
|
## 渲染脚本(render_xhs.py)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/render_xhs.py <markdown_file> [options]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 参数列表
|
||||||
|
|
||||||
|
| 参数 | 简写 | 说明 | 默认值 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `--output-dir` | `-o` | 输出目录 | 当前工作目录 |
|
||||||
|
| `--theme` | `-t` | 排版主题 | `sketch` |
|
||||||
|
| `--mode` | `-m` | 分页模式 | `separator` |
|
||||||
|
| `--width` | `-w` | 图片宽度(px) | `1080` |
|
||||||
|
| `--height` | | 图片高度(`dynamic` 下为最小高度) | `1440` |
|
||||||
|
| `--max-height` | | `dynamic` 模式下的最大高度 | `4320` |
|
||||||
|
| `--dpr` | | 设备像素比(清晰度) | `2` |
|
||||||
|
|
||||||
|
### 排版主题(`--theme`)
|
||||||
|
|
||||||
|
| 值 | 名称 | 说明 |
|
||||||
|
|---|---|---|
|
||||||
|
| `sketch` | 手绘素描 | 手绘风格,默认 |
|
||||||
|
| `default` | 默认简约 | 浅灰渐变背景(`#f3f3f3 → #f9f9f9`) |
|
||||||
|
| `playful-geometric` | 活泼几何 | Memphis 设计风格 |
|
||||||
|
| `neo-brutalism` | 新粗野主义 | 粗框线条、强对比 |
|
||||||
|
| `botanical` | 植物园自然 | 自然绿植风格 |
|
||||||
|
| `professional` | 专业商务 | 简洁商务蓝 |
|
||||||
|
| `retro` | 复古怀旧 | 暖色复古感 |
|
||||||
|
| `terminal` | 终端命令行 | 深色代码终端风格 |
|
||||||
|
|
||||||
|
### 分页模式(`--mode`)
|
||||||
|
|
||||||
|
| 值 | 说明 | 适用场景 |
|
||||||
|
|---|---|---|
|
||||||
|
| `separator` | 按 `---` 分隔符分页 | 内容已手动控量,需要精确分页 |
|
||||||
|
| `auto-fit` | 固定尺寸,自动整体缩放内容 | 封面 + 单张图,尺寸固定不溢出 |
|
||||||
|
| `auto-split` | 根据渲染后高度自动切分 | 内容长短不稳定,推荐通用选择 |
|
||||||
|
| `dynamic` | 根据内容动态调整图片高度 | 允许不同高度卡片,字数 ≤550 |
|
||||||
|
|
||||||
|
### 常用命令示例
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 默认:sketch 主题 + 手动分隔分页
|
||||||
|
python scripts/render_xhs.py content.md
|
||||||
|
|
||||||
|
# 自动分页(推荐内容不稳定时使用)
|
||||||
|
python scripts/render_xhs.py content.md -m auto-split
|
||||||
|
|
||||||
|
# 固定尺寸自动缩放
|
||||||
|
python scripts/render_xhs.py content.md -m auto-fit
|
||||||
|
|
||||||
|
# 切换主题
|
||||||
|
python scripts/render_xhs.py content.md -t playful-geometric -m auto-split
|
||||||
|
|
||||||
|
# 自定义尺寸
|
||||||
|
python scripts/render_xhs.py content.md -t retro -m dynamic --width 1080 --height 1440 --dpr 2
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 发布脚本(publish_xhs.py)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/publish_xhs.py --title "标题" --desc "描述" --images img1.png img2.png
|
||||||
|
```
|
||||||
|
|
||||||
|
### 参数列表
|
||||||
|
|
||||||
|
| 参数 | 简写 | 说明 | 默认值 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `--title` | `-t` | 笔记标题(不超过 20 字) | 必填 |
|
||||||
|
| `--desc` | `-d` | 笔记描述/正文内容 | `""` |
|
||||||
|
| `--images` | `-i` | 图片文件路径(可多个) | 必填 |
|
||||||
|
| `--public` | | 公开发布(默认仅自己可见) | `False` |
|
||||||
|
| `--post-time` | | 定时发布(格式:`2024-01-01 12:00:00`) | 立即发布 |
|
||||||
|
| `--api-mode` | | 通过 xhs-api 服务发布 | 本地模式 |
|
||||||
|
| `--api-url` | | API 服务地址 | `http://localhost:5005` |
|
||||||
|
| `--dry-run` | | 仅验证,不实际发布 | `False` |
|
||||||
|
|
||||||
|
> **注意**:默认以「仅自己可见」发布,确认内容无误后再用 `--public` 公开。
|
||||||
|
|
||||||
|
### 常用命令示例
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 默认(仅自己可见,用于预览确认)
|
||||||
|
python scripts/publish_xhs.py --title "标题" --desc "描述" --images cover.png card_1.png card_2.png
|
||||||
|
|
||||||
|
# 公开发布
|
||||||
|
python scripts/publish_xhs.py --title "标题" --desc "描述" --images cover.png card_1.png --public
|
||||||
|
|
||||||
|
# 定时发布
|
||||||
|
python scripts/publish_xhs.py --title "标题" --desc "描述" --images *.png --post-time "2024-12-01 10:00:00" --public
|
||||||
|
|
||||||
|
# API 模式
|
||||||
|
python scripts/publish_xhs.py --title "标题" --desc "描述" --images *.png --api-mode
|
||||||
|
|
||||||
|
# 仅验证不发布
|
||||||
|
python scripts/publish_xhs.py --title "标题" --desc "描述" --images *.png --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
### 环境变量配置(.env)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp env.example.txt .env
|
||||||
|
```
|
||||||
|
|
||||||
|
编辑 `.env`:
|
||||||
|
|
||||||
|
```env
|
||||||
|
# 必需:小红书 Cookie
|
||||||
|
XHS_COOKIE=your_cookie_string_here
|
||||||
|
|
||||||
|
# 可选:API 模式服务地址
|
||||||
|
XHS_API_URL=http://localhost:5005
|
||||||
|
```
|
||||||
|
|
||||||
|
**Cookie 获取方式**:浏览器登录小红书 → F12 → Network → 任意请求的 Cookie 头,复制完整字符串。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Markdown 文档格式
|
||||||
|
|
||||||
|
### YAML 头部元数据
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
emoji: "🚀" # 封面装饰 Emoji
|
||||||
|
title: "大标题" # 封面大标题(不超过 15 字)
|
||||||
|
subtitle: "副标题文案" # 封面副标题(不超过 15 字)
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
### 分页分隔符
|
||||||
|
|
||||||
|
使用 `---` 手动分割卡片(配合 `-m separator` 使用):
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
emoji: "💡"
|
||||||
|
title: "工具推荐"
|
||||||
|
subtitle: "提升效率的 5 个神器"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 神器一:Notion
|
||||||
|
|
||||||
|
> 全能笔记工具...
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 神器二:Raycast
|
||||||
|
|
||||||
|
快捷启动工具...
|
||||||
|
```
|
||||||
@@ -155,7 +155,7 @@ class LocalPublisher:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def publish(self, title: str, desc: str, images: List[str],
|
def publish(self, title: str, desc: str, images: List[str],
|
||||||
is_private: bool = False, post_time: str = None) -> Dict[str, Any]:
|
is_private: bool = True, post_time: str = None) -> Dict[str, Any]:
|
||||||
"""发布图文笔记"""
|
"""发布图文笔记"""
|
||||||
print(f"\n🚀 准备发布笔记(本地模式)...")
|
print(f"\n🚀 准备发布笔记(本地模式)...")
|
||||||
print(f" 📌 标题: {title}")
|
print(f" 📌 标题: {title}")
|
||||||
@@ -268,7 +268,7 @@ class ApiPublisher:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def publish(self, title: str, desc: str, images: List[str],
|
def publish(self, title: str, desc: str, images: List[str],
|
||||||
is_private: bool = False, post_time: str = None) -> Dict[str, Any]:
|
is_private: bool = True, post_time: str = None) -> Dict[str, Any]:
|
||||||
"""发布图文笔记"""
|
"""发布图文笔记"""
|
||||||
print(f"\n🚀 准备发布笔记(API 模式)...")
|
print(f"\n🚀 准备发布笔记(API 模式)...")
|
||||||
print(f" 📌 标题: {title}")
|
print(f" 📌 标题: {title}")
|
||||||
@@ -317,15 +317,15 @@ def main():
|
|||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
epilog='''
|
epilog='''
|
||||||
示例:
|
示例:
|
||||||
# 基本用法
|
# 基本用法(默认仅自己可见)
|
||||||
python publish_xhs.py -t "我的标题" -d "正文内容" -i cover.png card_1.png card_2.png
|
python publish_xhs.py -t "我的标题" -d "正文内容" -i cover.png card_1.png card_2.png
|
||||||
|
|
||||||
|
# 公开发布
|
||||||
|
python publish_xhs.py -t "我的标题" -d "正文内容" -i *.png --public
|
||||||
|
|
||||||
# 使用 API 模式
|
# 使用 API 模式
|
||||||
python publish_xhs.py -t "我的标题" -d "正文内容" -i *.png --api-mode
|
python publish_xhs.py -t "我的标题" -d "正文内容" -i *.png --api-mode
|
||||||
|
|
||||||
# 设为私密笔记
|
|
||||||
python publish_xhs.py -t "我的标题" -d "正文内容" -i *.png --private
|
|
||||||
|
|
||||||
# 定时发布
|
# 定时发布
|
||||||
python publish_xhs.py -t "我的标题" -d "正文内容" -i *.png --post-time "2024-12-01 10:00:00"
|
python publish_xhs.py -t "我的标题" -d "正文内容" -i *.png --post-time "2024-12-01 10:00:00"
|
||||||
'''
|
'''
|
||||||
@@ -347,9 +347,9 @@ def main():
|
|||||||
help='图片文件路径(可以多个)'
|
help='图片文件路径(可以多个)'
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--private',
|
'--public',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help='是否设为私密笔记'
|
help='公开发布(默认为仅自己可见)'
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--post-time',
|
'--post-time',
|
||||||
@@ -393,7 +393,7 @@ def main():
|
|||||||
print(f" 📌 标题: {args.title}")
|
print(f" 📌 标题: {args.title}")
|
||||||
print(f" 📝 描述: {args.desc}")
|
print(f" 📝 描述: {args.desc}")
|
||||||
print(f" 🖼️ 图片: {valid_images}")
|
print(f" 🖼️ 图片: {valid_images}")
|
||||||
print(f" 🔒 私密: {args.private}")
|
print(f" 🔒 私密: {not args.public}")
|
||||||
print(f" ⏰ 定时: {args.post_time or '立即发布'}")
|
print(f" ⏰ 定时: {args.post_time or '立即发布'}")
|
||||||
print(f" 📡 模式: {'API' if args.api_mode else '本地'}")
|
print(f" 📡 模式: {'API' if args.api_mode else '本地'}")
|
||||||
print("\n✅ 验证通过,可以发布")
|
print("\n✅ 验证通过,可以发布")
|
||||||
@@ -414,7 +414,7 @@ def main():
|
|||||||
title=args.title,
|
title=args.title,
|
||||||
desc=args.desc,
|
desc=args.desc,
|
||||||
images=valid_images,
|
images=valid_images,
|
||||||
is_private=args.private,
|
is_private=not args.public,
|
||||||
post_time=args.post_time
|
post_time=args.post_time
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@@ -669,8 +669,8 @@ def main():
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--theme', '-t',
|
'--theme', '-t',
|
||||||
choices=AVAILABLE_THEMES,
|
choices=AVAILABLE_THEMES,
|
||||||
default='default',
|
default='sketch',
|
||||||
help='排版主题(默认: default)'
|
help='排版主题(默认: sketch)'
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--mode', '-m',
|
'--mode', '-m',
|
||||||
|
|||||||
Reference in New Issue
Block a user