@clawhub-changeworldy-cyber-3152717371
PDF 工具箱技能。支持 PDF 合并、拆分、旋转、压缩、格式转换、文字提取、水印添加等常用操作。使用场景:(1) 合并多个 PDF,(2) 拆分 PDF 页面,(3) 旋转/调整方向,(4) 压缩 PDF 大小,(5) PDF 转图片/Word,(6) 提取 PDF 文字,(7) 添加/移除水印。
---
name: pdf-toolkit
description: PDF 工具箱技能。支持 PDF 合并、拆分、旋转、压缩、格式转换、文字提取、水印添加等常用操作。使用场景:(1) 合并多个 PDF,(2) 拆分 PDF 页面,(3) 旋转/调整方向,(4) 压缩 PDF 大小,(5) PDF 转图片/Word,(6) 提取 PDF 文字,(7) 添加/移除水印。
---
# PDF 工具箱
## 核心功能
提供一站式 PDF 处理解决方案,满足日常办公、学习中的各种 PDF 处理需求。
### 支持的操作
- 📎 **合并** - 多个 PDF 合并成一个
- ✂️ **拆分** - 按页码拆分 PDF
- 🔄 **旋转** - 调整页面方向
- 📦 **压缩** - 减小 PDF 文件大小
- 📝 **转换** - PDF 转 Word/图片/文本
- 📄 **提取** - 提取 PDF 中的文字/图片
- 💧 **水印** - 添加或移除水印
- 🔒 **加密** - 设置密码保护
---
## 使用方式
### 1. 合并 PDF
用户请求示例:
- "把这几个 PDF 合并成一个"
- "合并 report1.pdf, report2.pdf, report3.pdf"
**命令:**
```bash
python scripts/merge_pdf.py --output merged.pdf file1.pdf file2.pdf file3.pdf
```
### 2. 拆分 PDF
用户请求示例:
- "把这个 PDF 拆分成单独页面"
- "提取第 1-5 页"
**命令:**
```bash
python scripts/split_pdf.py --input input.pdf --pages 1-5 --output output.pdf
```
### 3. 旋转 PDF
用户请求示例:
- "把这个 PDF 顺时针旋转 90 度"
- "所有页面旋转 180 度"
**命令:**
```bash
python scripts/rotate_pdf.py --input input.pdf --angle 90 --output output.pdf
```
### 4. 压缩 PDF
用户请求示例:
- "压缩这个 PDF,太大了"
- "把 PDF 压缩到 5MB 以内"
**命令:**
```bash
python scripts/compress_pdf.py --input input.pdf --output output.pdf --quality medium
```
### 5. PDF 转换
用户请求示例:
- "把 PDF 转成 Word"
- "PDF 转图片"
**命令:**
```bash
python scripts/convert_pdf.py --input input.pdf --format word --output output.docx
python scripts/convert_pdf.py --input input.pdf --format image --output-dir images/
```
### 6. 提取文字
用户请求示例:
- "提取这个 PDF 的文字内容"
- "把 PDF 转成文本"
**命令:**
```bash
python scripts/extract_text.py --input input.pdf --output output.txt
```
### 7. 添加水印
用户请求示例:
- "给 PDF 添加水印"
- "加上'机密'两个字"
**命令:**
```bash
python scripts/watermark.py --input input.pdf --text "机密" --output output.pdf
```
---
## 质量选项
### 压缩质量
| 选项 | 说明 | 适用场景 |
|------|------|---------|
| low | 高压缩,质量较低 | 邮件发送、网页展示 |
| medium | 平衡压缩和质量 | 日常使用 |
| high | 低压缩,保持质量 | 打印、存档 |
### 转换格式
| 格式 | 说明 | 保留内容 |
|------|------|---------|
| word | 转 Word 文档 | 文字、格式、图片 |
| image | 转图片(PNG) | 每页一张图片 |
| text | 纯文本 | 仅文字内容 |
| html | 网页格式 | 文字、基本格式 |
---
## 常见问题
### Q: 合并后顺序不对怎么办?
A: 按文件名排序,确保文件名有序(如 01.pdf, 02.pdf)
### Q: 压缩后文字模糊?
A: 使用 high 质量选项,或降低压缩比例
### Q: 提取的文字乱码?
A: 可能是扫描版 PDF,需要 OCR 功能(需额外安装)
### Q: 加密的 PDF 怎么处理?
A: 先提供密码解密,处理后再加密
---
## 批量处理
支持批量操作多个文件:
```bash
# 批量旋转当前目录所有 PDF
for f in *.pdf; do
python scripts/rotate_pdf.py --input "$f" --angle 90 --output "rotated_$f"
done
# 批量压缩
for f in *.pdf; do
python scripts/compress_pdf.py --input "$f" --output "compressed_$f" --quality medium
done
```
---
## 参考资源
- 脚本使用说明:见 `references/scripts.md`
- 常见问题解答:见 `references/faq.md`
- 批量处理示例:见 `references/batch-examples.md`
FILE:scripts/compress_pdf.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PDF 压缩工具
压缩 PDF 文件大小
"""
import sys
import os
import json
import subprocess
try:
from pypdf import PdfWriter, PdfReader, PdfMerger
except ImportError:
print(json.dumps({
"error": "缺少依赖:pypdf",
"install": "pip install pypdf"
}, ensure_ascii=False))
sys.exit(1)
def compress_pdf(input_file: str, output_file: str, quality: str = "medium") -> dict:
"""
压缩 PDF 文件
Args:
input_file: 输入文件
output_file: 输出文件
quality: 质量等级(low, medium, high)
Returns:
结果字典
"""
try:
if not os.path.exists(input_file):
return {"error": f"文件不存在:{input_file}"}
original_size = os.path.getsize(input_file)
# 检查是否有 ghostscript
has_ghostscript = False
try:
subprocess.run(["gs", "--version"], capture_output=True, check=True)
has_ghostscript = True
except (subprocess.CalledProcessError, FileNotFoundError):
pass
if has_ghostscript:
# 使用 Ghostscript 压缩(效果更好)
dpi_map = {"low": 72, "medium": 150, "high": 300}
dpi = dpi_map.get(quality, 150)
cmd = [
"gs", "-sDEVICE=pdfwrite",
"-dCompatibilityLevel=1.4",
f"-dPDFSETTINGS=/ebook" if quality == "medium" else
f"-dPDFSETTINGS=/screen" if quality == "low" else
f"-dPDFSETTINGS=/printer",
f"-dDownsampleColorImages=true",
f"-dColorImageResolution={dpi}",
f"-dDownsampleGrayImages=true",
f"-dGrayImageResolution={dpi}",
f"-dDownsampleMonoImages=true",
f"-dMonoImageResolution={dpi}",
"-dNOPAUSE", "-dBATCH", "-dQUIET",
f"-sOutputFile={output_file}",
input_file
]
result = subprocess.run(cmd, capture_output=True, text=True)
if os.path.exists(output_file):
compressed_size = os.path.getsize(output_file)
ratio = (1 - compressed_size / original_size) * 100
return {
"success": True,
"message": f"压缩成功,减小{ratio:.1f}%",
"output": output_file,
"original_size": f"{original_size / 1024:.1f} KB",
"compressed_size": f"{compressed_size / 1024:.1f} KB",
"method": "ghostscript"
}
# 降级方案:使用 pypdf 简单压缩
reader = PdfReader(input_file)
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
# 压缩流
writer.compress_identical_objects(remove_unreferenced_resources=True)
with open(output_file, "wb") as f:
writer.write(f)
compressed_size = os.path.getsize(output_file)
ratio = (1 - compressed_size / original_size) * 100 if original_size > 0 else 0
return {
"success": True,
"message": f"压缩成功,减小{ratio:.1f}%",
"output": output_file,
"original_size": f"{original_size / 1024:.1f} KB",
"compressed_size": f"{compressed_size / 1024:.1f} KB",
"method": "pypdf",
"note": "安装 Ghostscript 可获得更好压缩效果"
}
except Exception as e:
return {"error": f"压缩失败:{str(e)}"}
def main():
args = sys.argv[1:]
if len(args) < 2:
print(json.dumps({
"error": "用法:compress_pdf.py --input input.pdf --output output.pdf [--quality low|medium|high]",
"example": "python compress_pdf.py --input file.pdf --output compressed.pdf --quality medium"
}, ensure_ascii=False))
sys.exit(1)
# 解析参数
input_file = None
output_file = None
quality = "medium"
i = 0
while i < len(args):
if args[i] == "--input" and i + 1 < len(args):
input_file = args[i + 1]
i += 2
elif args[i] == "--output" and i + 1 < len(args):
output_file = args[i + 1]
i += 2
elif args[i] == "--quality" and i + 1 < len(args):
quality = args[i + 1]
i += 2
else:
i += 1
if not input_file or not output_file:
print(json.dumps({"error": "请指定输入和输出文件"}))
sys.exit(1)
if quality not in ["low", "medium", "high"]:
print(json.dumps({"error": "质量等级必须是 low, medium, 或 high"}))
sys.exit(1)
# 执行压缩
result = compress_pdf(input_file, output_file, quality)
print(json.dumps(result, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
FILE:scripts/extract_text.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PDF 文本提取工具
从 PDF 中提取文字内容
"""
import sys
import os
import json
try:
from pypdf import PdfReader
except ImportError:
print(json.dumps({
"error": "缺少依赖:pypdf",
"install": "pip install pypdf"
}, ensure_ascii=False))
sys.exit(1)
def extract_text(input_file: str, output_file: str = None) -> dict:
"""
从 PDF 中提取文本
Args:
input_file: 输入文件
output_file: 输出文件(可选)
Returns:
结果字典
"""
try:
if not os.path.exists(input_file):
return {"error": f"文件不存在:{input_file}"}
reader = PdfReader(input_file)
text_content = []
for i, page in enumerate(reader.pages):
text = page.extract_text()
if text:
text_content.append(f"--- 第{i + 1}页 ---\n{text}")
full_text = "\n\n".join(text_content)
result = {
"success": True,
"message": f"成功提取 {len(reader.pages)} 页文本",
"pages": len(reader.pages),
"char_count": len(full_text)
}
if output_file:
with open(output_file, "w", encoding="utf-8") as f:
f.write(full_text)
result["output"] = output_file
else:
result["text"] = full_text[:5000] # 限制输出长度
if len(full_text) > 5000:
result["note"] = "文本过长,仅显示前 5000 字符"
return result
except Exception as e:
return {"error": f"提取失败:{str(e)}"}
def main():
args = sys.argv[1:]
if len(args) < 1:
print(json.dumps({
"error": "用法:extract_text.py --input input.pdf [--output output.txt]",
"example": "python extract_text.py --input file.pdf --output text.txt"
}, ensure_ascii=False))
sys.exit(1)
# 解析参数
input_file = None
output_file = None
i = 0
while i < len(args):
if args[i] == "--input" and i + 1 < len(args):
input_file = args[i + 1]
i += 2
elif args[i] == "--output" and i + 1 < len(args):
output_file = args[i + 1]
i += 2
else:
i += 1
if not input_file:
print(json.dumps({"error": "请指定输入文件"}))
sys.exit(1)
# 执行提取
result = extract_text(input_file, output_file)
print(json.dumps(result, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
FILE:scripts/merge_pdf.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PDF 合并工具
将多个 PDF 文件合并成一个
"""
import sys
import os
import json
try:
from pypdf import PdfWriter, PdfReader
except ImportError:
print(json.dumps({
"error": "缺少依赖:pypdf",
"install": "pip install pypdf"
}, ensure_ascii=False))
sys.exit(1)
def merge_pdfs(input_files: list, output_file: str) -> dict:
"""
合并多个 PDF 文件
Args:
input_files: 输入文件列表
output_file: 输出文件路径
Returns:
结果字典
"""
try:
writer = PdfWriter()
# 检查文件是否存在
existing_files = []
for file in input_files:
if os.path.exists(file):
existing_files.append(file)
else:
print(f"警告:文件不存在 - {file}", file=sys.stderr)
if not existing_files:
return {"error": "没有有效的输入文件"}
# 合并 PDF
for file in existing_files:
reader = PdfReader(file)
for page in reader.pages:
writer.add_page(page)
# 写入输出文件
with open(output_file, "wb") as f:
writer.write(f)
return {
"success": True,
"message": f"成功合并 {len(existing_files)} 个文件",
"output": output_file,
"pages": len(writer.pages)
}
except Exception as e:
return {"error": f"合并失败:{str(e)}"}
def main():
# 简单的命令行参数解析
args = sys.argv[1:]
if len(args) < 2:
print(json.dumps({
"error": "用法:merge_pdf.py --output output.pdf file1.pdf [file2.pdf ...]",
"example": "python merge_pdf.py --output merged.pdf file1.pdf file2.pdf file3.pdf"
}, ensure_ascii=False))
sys.exit(1)
# 解析参数
output_file = None
input_files = []
i = 0
while i < len(args):
if args[i] == "--output" and i + 1 < len(args):
output_file = args[i + 1]
i += 2
else:
input_files.append(args[i])
i += 1
if not output_file:
print(json.dumps({"error": "请指定输出文件:--output output.pdf"}))
sys.exit(1)
if not input_files:
print(json.dumps({"error": "请指定至少一个输入文件"}))
sys.exit(1)
# 执行合并
result = merge_pdfs(input_files, output_file)
print(json.dumps(result, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
FILE:scripts/rotate_pdf.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PDF 旋转工具
旋转 PDF 页面角度
"""
import sys
import os
import json
try:
from pypdf import PdfWriter, PdfReader
except ImportError:
print(json.dumps({
"error": "缺少依赖:pypdf",
"install": "pip install pypdf"
}, ensure_ascii=False))
sys.exit(1)
def rotate_pdf(input_file: str, output_file: str, angle: int = 90, pages: str = None) -> dict:
"""
旋转 PDF 页面
Args:
input_file: 输入文件
output_file: 输出文件
angle: 旋转角度(90, 180, 270)
pages: 页码范围(如"1-5"或"1,3,5"),None 表示全部
Returns:
结果字典
"""
try:
if not os.path.exists(input_file):
return {"error": f"文件不存在:{input_file}"}
reader = PdfReader(input_file)
writer = PdfWriter()
# 解析页码范围
page_indices = None
if pages:
page_indices = []
for part in pages.split(','):
if '-' in part:
start, end = map(int, part.split('-'))
page_indices.extend(range(start - 1, end))
else:
page_indices.append(int(part) - 1)
# 处理每一页
for i, page in enumerate(reader.pages):
if page_indices is None or i in page_indices:
page.rotate(angle)
writer.add_page(page)
# 写入输出文件
with open(output_file, "wb") as f:
writer.write(f)
return {
"success": True,
"message": f"成功旋转 {len(writer.pages)} 页",
"output": output_file,
"angle": angle
}
except Exception as e:
return {"error": f"旋转失败:{str(e)}"}
def main():
args = sys.argv[1:]
if len(args) < 3:
print(json.dumps({
"error": "用法:rotate_pdf.py --input input.pdf --angle 90 --output output.pdf [--pages 1-5]",
"example": "python rotate_pdf.py --input file.pdf --angle 90 --output rotated.pdf"
}, ensure_ascii=False))
sys.exit(1)
# 解析参数
input_file = None
output_file = None
angle = 90
pages = None
i = 0
while i < len(args):
if args[i] == "--input" and i + 1 < len(args):
input_file = args[i + 1]
i += 2
elif args[i] == "--output" and i + 1 < len(args):
output_file = args[i + 1]
i += 2
elif args[i] == "--angle" and i + 1 < len(args):
angle = int(args[i + 1])
i += 2
elif args[i] == "--pages" and i + 1 < len(args):
pages = args[i + 1]
i += 2
else:
i += 1
if not input_file or not output_file:
print(json.dumps({"error": "请指定输入和输出文件"}))
sys.exit(1)
# 执行旋转
result = rotate_pdf(input_file, output_file, angle, pages)
print(json.dumps(result, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
FILE:scripts/split_pdf.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PDF 拆分工具
按页码拆分 PDF 文件
"""
import sys
import os
import json
try:
from pypdf import PdfWriter, PdfReader
except ImportError:
print(json.dumps({
"error": "缺少依赖:pypdf",
"install": "pip install pypdf"
}, ensure_ascii=False))
sys.exit(1)
def split_pdf(input_file: str, output_pattern: str, pages: str = None) -> dict:
"""
拆分 PDF 文件
Args:
input_file: 输入文件
output_pattern: 输出文件模式(如 output_{}.pdf,{}会被页码替换)
pages: 页码范围(如"1-5"提取指定页,"all"每页一个文件)
Returns:
结果字典
"""
try:
if not os.path.exists(input_file):
return {"error": f"文件不存在:{input_file}"}
reader = PdfReader(input_file)
total_pages = len(reader.pages)
output_files = []
if pages == "all" or pages is None:
# 每页一个文件
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
output_file = output_pattern.format(i + 1)
with open(output_file, "wb") as f:
writer.write(f)
output_files.append(output_file)
return {
"success": True,
"message": f"成功拆分为 {len(output_files)} 个文件",
"output_files": output_files
}
elif '-' in pages or ',' in pages:
# 提取指定页码
writer = PdfWriter()
page_indices = []
for part in pages.split(','):
if '-' in part:
start, end = map(int, part.split('-'))
page_indices.extend(range(start - 1, min(end, total_pages)))
else:
page_num = int(part)
if page_num <= total_pages:
page_indices.append(page_num - 1)
for i in page_indices:
writer.add_page(reader.pages[i])
output_file = output_pattern.format("extracted")
with open(output_file, "wb") as f:
writer.write(f)
output_files.append(output_file)
return {
"success": True,
"message": f"成功提取 {len(page_indices)} 页",
"output_files": output_files
}
else:
return {"error": "页码格式错误,使用'1-5'或'1,3,5'或'all'"}
except Exception as e:
return {"error": f"拆分失败:{str(e)}"}
def main():
args = sys.argv[1:]
if len(args) < 2:
print(json.dumps({
"error": "用法:split_pdf.py --input input.pdf --output output_{}.pdf [--pages 1-5|all]",
"example": "python split_pdf.py --input file.pdf --output page_{}.pdf --pages 1-5"
}, ensure_ascii=False))
sys.exit(1)
# 解析参数
input_file = None
output_pattern = None
pages = None
i = 0
while i < len(args):
if args[i] == "--input" and i + 1 < len(args):
input_file = args[i + 1]
i += 2
elif args[i] == "--output" and i + 1 < len(args):
output_pattern = args[i + 1]
i += 2
elif args[i] == "--pages" and i + 1 < len(args):
pages = args[i + 1]
i += 2
else:
i += 1
if not input_file or not output_pattern:
print(json.dumps({"error": "请指定输入和输出文件"}))
sys.exit(1)
# 确保输出模式包含{}
if '{}' not in output_pattern:
output_pattern = output_pattern.replace('.pdf', '_{}.pdf')
# 执行拆分
result = split_pdf(input_file, output_pattern, pages)
print(json.dumps(result, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
自媒体爆款标题生成技能。为小红书/公众号/抖音/知乎/B 站创作者生成高点击率标题。使用场景:(1) 小红书种草标题,(2) 公众号文章标题,(3) 抖音视频标题,(4) 知乎问答标题,(5) B 站视频标题,(6) 标题优化/改写。
---
name: viral-title-generator
description: 自媒体爆款标题生成技能。为小红书/公众号/抖音/知乎/B 站创作者生成高点击率标题。使用场景:(1) 小红书种草标题,(2) 公众号文章标题,(3) 抖音视频标题,(4) 知乎问答标题,(5) B 站视频标题,(6) 标题优化/改写。
---
# 自媒体爆款标题生成器
## 核心功能
帮助自媒体创作者快速生成高点击率、高传播性的标题,提升内容曝光和流量。
### 支持平台
- 小红书
- 微信公众号
- 抖音/快手
- 知乎
- B 站
- 微博
---
## 各平台标题特点
### 小红书(20 字以内)
- **种草风** - "亲测好用"、"真的绝了"
- **数字党** - "7 天瘦 5 斤"、"3 个技巧"
- **情绪化** - "后悔没早买"、"哭死"
- **emoji 加持** - 🔥✨💖📍
**示例:**
```
25 岁存款为 0,我靠这 3 个副业月入 3 万💰
后悔没早买!这个神器让我每天多睡 1 小时⏰
上海打工 5 年,我攒下第一个 50 万💪
```
### 公众号(24-30 字)
- **悬念式** - "为什么...?"、"原来..."
- **对比式** - "从...到..."、"以前...现在..."
- **利益式** - "如何..."、"...的方法"
- **权威式** - "XX 专家说"、"XX 研究显示"
**示例:**
```
从月薪 3 千到月入 10 万,我只做对了这 3 件事
为什么你总是存不下钱?这 5 个习惯正在毁掉你
哈佛研究:每天这样做,寿命延长 10 年
```
### 抖音(15-20 字)
- **前 3 秒原则** - 开头就要抓住注意力
- **疑问式** - "你知道...吗?"
- **反差式** - "没想到..."、"竟然..."
- **指令式** - "一定要..."、"千万别..."
**示例:**
```
你知道吗?90% 的人都不知道这个省钱技巧
没想到!10 块钱的东西比 1000 块的还好用
一定要看!这个视频可能帮你省下一辆车
```
### 知乎(25-40 字)
- **问题式** - 直接是问题
- **专业感** - 体现深度思考
- **数据支撑** - 用数字增加可信度
**示例:**
```
普通人如何通过副业实现月入过万?有哪些可行的路径?
工作 5 年存款为 0 是一种怎样的体验?
为什么越来越多的年轻人选择不婚不育?
```
### B 站(20-30 字)
- **二次元风** - 可以用梗、流行语
- **夸张式** - "史上最强"、"全程高能"
- **系列化** - "第 X 期"、"XX 系列"
**示例:**
```
【全程高能】我花了 30 天,学会了 10 项技能
史上最强 Excel 教程!看完你就是大神
【第 10 期】挑战用 100 元过一周,结果...
```
---
## 爆款标题公式
### 公式 1:数字 + 结果 + 时间
```
{数字}个{方法/技巧},{时间}内{结果}
例:3 个存钱技巧,1 年内存下 10 万
```
### 公式 2:人群 + 痛点 + 解决方案
```
{人群}还在为{痛点}烦恼?{解决方案}
例:上班族还在为没时间健身烦恼?这套方法每天只需 10 分钟
```
### 公式 3:对比 + 反差
```
从{状态 A}到{状态 B},我只做了{事情}
例:从月光族到存款 50 万,我只做了这 3 件事
```
### 公式 4:悬念 + 揭秘
```
为什么{现象}?原来{真相}
例:为什么越省钱越穷?原来这才是富人思维
```
### 公式 5:警告 + 后果
```
千万别{行为},否则{后果}
例:千万别这样存钱,否则越存越穷
```
---
## 高点击率技巧
### 1. 用数字
- "3 个技巧"比"几个技巧"更具体
- "7 天"比"很快"更有说服力
- "10 万+"比"很多"更直观
### 2. 制造反差
- "月薪 3 千"vs"月入 10 万"
- "存款为 0"vs"攒下 50 万"
- "普通人"vs"年入百万"
### 3. 引发好奇
- "原来..."
- "没想到..."
- "竟然是..."
- "揭秘..."
### 4. 制造紧迫
- "限时"
- "最后 X 天"
- "马上截止"
- "手慢无"
### 5. 情绪共鸣
- "后悔没早..."
- "哭死"
- "太香了"
- "真的绝了"
---
## 违规词提醒
### 各平台敏感词
- **绝对化** - 最、第一、顶级
- **医疗** - 治愈、疗效、减肥(用"瘦身"替代)
- **金钱** - 赚钱、暴富(用"搞钱"、"增收"替代)
- **色情** - 各种暗示性词语
### 安全替代
```
"赚钱" → "搞钱"、"增收"
"减肥" → "瘦身"、"掉秤"
"最好" → "超好用"、"绝了"
"第一" → "天花板"、"宝藏"
```
---
## 参考资源
- 标题公式详解:见 `references/title-formulas.md`
- 平台规则:见 `references/platform-rules.md`
- 爆款案例库:见 `references/examples.md`
FILE:references/examples.md
# 爆款标题案例库
## 小红书爆款案例
### 搞钱/副业类
```
25 岁存款为 0,我靠这 3 个副业月入 3 万💰
普通女生如何靠副业实现经济独立?我的 5 个建议
不上班也能月入过万?这 5 个副业适合所有人
```
### 瘦身/美妆类
```
7 天瘦 5 斤!不节食不运动的懒人瘦身法
从 120 斤到 90 斤,我用了这 5 个方法
平价替代!这些国货比大牌还好用
```
### 生活/情感类
```
上海打工 5 年,我攒下第一个 50 万💪
30 岁未婚,我活成了自己想要的样子
后悔没早买!这些神器提升幸福感
```
### 学习/成长类
```
30 天学会 Python,我的学习计划分享
从职场小白到部门主管,我做对了什么
每天早起 1 小时,我的人生发生了这些变化
```
---
## 公众号爆款案例
### 财富类
```
从月薪 3 千到月入 10 万,我只做对了这 3 件事
为什么你总是存不下钱?这 5 个习惯正在毁掉你
普通人如何实现财务自由?这是我听过最好的答案
```
### 健康类
```
哈佛研究:每天这样做,寿命延长 10 年
体检报告上的这个指标,正在悄悄毁掉你的健康
医生不会告诉你的 10 个养生真相
```
### 情感类
```
结婚 5 年,我终于明白了婚姻的真相
为什么越来越多的年轻人选择不婚不育?
好的婚姻,都做到了这 3 点
```
### 职场类
```
工作 5 年才明白:会哭的孩子有奶吃
为什么老实人总是吃亏?这 3 个原因太真实了
从被裁员到年薪 50 万,我用了 3 年
```
---
## 抖音爆款案例
### 知识类
```
你知道吗?90% 的人都不知道这个省钱技巧
3 个习惯,让你悄悄变富
一定要看!这个视频可能帮你省下一辆车
```
### 生活类
```
没想到!10 块钱的东西比 1000 块的还好用
拼多多这些宝藏店铺,知道的人太少了
这样整理房间,每天多睡 1 小时
```
### 情感类
```
如果你现在很累,一定要看完这个视频
致所有正在努力的人:你并不孤单
结婚前,一定要和对方聊这 5 个问题
```
---
## 知乎爆款案例
### 财富问题
```
普通人如何通过副业实现月入过万?有哪些可行的路径?
工作 5 年存款为 0 是一种怎样的体验?
有哪些适合普通人的理财方式?
```
### 职场问题
```
为什么有些人在职场上混得风生水起,有些人却总是被边缘化?
如何应对职场 PUA?
35 岁被裁员是一种怎样的体验?
```
### 生活问题
```
为什么越来越多的年轻人选择不婚不育?
有哪些让你相见恨晚的生活小技巧?
独居是一种怎样的体验?
```
---
## B 站爆款案例
### 学习类
```
【全程高能】我花了 30 天,学会了 10 项技能
史上最强 Excel 教程!看完你就是大神
从入门到精通:Python 学习全攻略
```
### 生活类
```
【第 10 期】挑战用 100 元过一周,结果...
独居女生的日常:一个人也要好好生活
我把我家装成了这样,朋友都说太绝了
```
### 搞钱类
```
25 岁 UP 主收入大公开!做 UP 主真的赚钱吗?
我尝试了 10 种副业,最后只推荐这 3 个
普通人如何靠自媒体实现财务自由?
```
---
## 标题拆解练习
### 案例 1
**标题:** 25 岁存款为 0,我靠这 3 个副业月入 3 万💰
**拆解:**
- 人群:25 岁年轻人
- 痛点:存款为 0
- 方案:3 个副业
- 结果:月入 3 万
- 公式:人群 + 痛点 + 数字 + 结果
### 案例 2
**标题:** 从月薪 3 千到月入 10 万,我只做对了这 3 件事
**拆解:**
- 对比:3 千 vs10 万
- 数字:3 件事
- 悬念:做对了什么
- 公式:对比 + 数字 + 悬念
### 案例 3
**标题:** 为什么你总是存不下钱?这 5 个习惯正在毁掉你
**拆解:**
- 痛点:存不下钱
- 警告:正在毁掉你
- 数字:5 个习惯
- 公式:痛点 + 警告 + 数字
---
## 模仿练习
选一个爆款标题,套用公式创作自己的:
**原题:** 25 岁存款为 0,我靠这 3 个副业月入 3 万💰
**模仿 1:** 30 岁一事无成,我靠这 5 个方法逆袭人生
**模仿 2:** 40 岁被裁员,我靠这 2 个技能重新出发
**模仿 3:** 毕业 3 年存款为 0,我是如何改变现状的
多练习、多拆解,你也能写出爆款标题!
FILE:references/platform-rules.md
# 各平台规则与标题特点
## 小红书
### 平台特点
- **用户画像** - 70% 女性,18-35 岁,一二线城市
- **内容调性** - 真实分享、种草、生活美学
- **流量逻辑** - 标签匹配 + 互动率
### 标题规则
- **字数** - 最多 20 个字(超出会被截断)
- **emoji** - 可以用 1-3 个,增加视觉吸引力
- **标签** - 标题后可以加话题标签
### 高点击标题特点
```
✅ 数字具体:3 个、7 天、50 万
✅ 情绪真实:哭死、绝了、后悔
✅ 场景具体:上海、北漂、学生党
✅ 结果明确:瘦 5 斤、存 10 万、月入 3 万
```
### 示例
```
25 岁存款为 0,我靠这 3 个副业月入 3 万💰
后悔没早买!这个神器让我每天多睡 1 小时⏰
上海打工 5 年,我攒下第一个 50 万💪
```
### 敏感词
- 赚钱 → 搞钱、增收
- 减肥 → 瘦身、掉秤
- 最好 → 天花板、宝藏
- 医疗相关词汇
---
## 微信公众号
### 平台特点
- **用户画像** - 全年龄段,偏成熟
- **内容调性** - 深度、专业、有价值
- **流量逻辑** - 粉丝推送 + 看一看 + 搜索
### 标题规则
- **字数** - 24-30 字最佳(封面显示完整)
- **封面图** - 标题和封面图配合
- **副标题** - 可以补充信息
### 高点击标题特点
```
✅ 悬念式:为什么、原来、揭秘
✅ 对比式:从...到...、以前...现在...
✅ 利益式:如何、方法、技巧
✅ 权威式:专家说、研究显示
```
### 示例
```
从月薪 3 千到月入 10 万,我只做对了这 3 件事
为什么你总是存不下钱?这 5 个习惯正在毁掉你
哈佛研究:每天这样做,寿命延长 10 年
```
### 注意事项
- 避免标题党(内容与标题不符会被投诉)
- 可以用副标题补充信息
- 封面图文字不要超过 40%
---
## 抖音
### 平台特点
- **用户画像** - 全年龄段,下沉市场占比高
- **内容调性** - 短平快、娱乐化
- **流量逻辑** - 完播率 + 互动率
### 标题规则
- **字数** - 15-20 字最佳(前 3 秒原则)
- **封面文字** - 视频封面可以加文字
- **话题** - 加热门话题增加曝光
### 高点击标题特点
```
✅ 前 3 秒抓住注意力
✅ 疑问式:你知道吗、为什么
✅ 反差式:没想到、竟然
✅ 指令式:一定要、千万别
```
### 示例
```
你知道吗?90% 的人都不知道这个省钱技巧
没想到!10 块钱的东西比 1000 块的还好用
一定要看!这个视频可能帮你省下一辆车
```
### 注意事项
- 标题是辅助,视频前 3 秒最重要
- 可以用"看到最后"引导完播
- 热门话题蹭流量
---
## 知乎
### 平台特点
- **用户画像** - 高学历、理性、爱思考
- **内容调性** - 专业、深度、有逻辑
- **流量逻辑** - 搜索 + 推荐 + 关注
### 标题规则
- **问题式** - 标题本身就是问题
- **字数** - 25-40 字
- **描述** - 问题描述可以补充背景
### 高点击回答特点
```
✅ 专业感:数据、研究、理论
✅ 逻辑清晰:首先、其次、最后
✅ 个人经历:亲身经验更有说服力
✅ 长文深度:3000 字以上更容易火
```
### 示例问题
```
普通人如何通过副业实现月入过万?有哪些可行的路径?
工作 5 年存款为 0 是一种怎样的体验?
为什么越来越多的年轻人选择不婚不育?
```
### 注意事项
- 不要瞎编数据(会被专业人士打假)
- 可以引用权威来源
- 长回答更容易获得赞同
---
## B 站
### 平台特点
- **用户画像** - Z 世代,二次元文化
- **内容调性** - 有趣、有梗、有干货
- **流量逻辑** - 完播率 + 三连率
### 标题规则
- **字数** - 20-30 字
- **封面** - 标题和封面图配合
- **系列化** - 可以做成系列内容
### 高点击标题特点
```
✅ 夸张式:史上最强、全程高能
✅ 系列化:第 X 期、XX 系列
✅ 挑战类:挑战用 X 元过 X 天
✅ 教程类:从入门到精通
```
### 示例
```
【全程高能】我花了 30 天,学会了 10 项技能
史上最强 Excel 教程!看完你就是大神
【第 10 期】挑战用 100 元过一周,结果...
```
### 注意事项
- 可以用【】标注内容类型
- 封面图要吸睛
- 标题可以玩梗(但要适度)
---
## 微博
### 平台特点
- **用户画像** - 全年龄段,娱乐化
- **内容调性** - 热点、八卦、观点
- **流量逻辑** - 热搜 + 转发
### 标题规则
- **字数** - 140 字以内(但标题部分建议 20 字内)
- **话题** - #话题#增加曝光
- **@** - 可以@相关账号
### 高点击特点
```
✅ 热点结合
✅ 观点鲜明
✅ 情绪强烈
✅ 引发讨论
```
### 示例
```
#职场# 为什么老实人总是吃亏?这 3 个原因太真实了
#情感# 结婚 5 年,我终于明白了婚姻的真相
#搞钱# 2026 年最适合普通人的副业Top5
```
---
## 各平台最佳发布时间
| 平台 | 最佳时段 | 备注 |
|------|---------|------|
| 小红书 | 12:00-14:00, 19:00-22:00 | 午休和睡前 |
| 公众号 | 7:00-9:00, 21:00-23:00 | 通勤和睡前 |
| 抖音 | 18:00-22:00 | 下班后 |
| 知乎 | 9:00-11:00, 20:00-23:00 | 工作和睡前 |
| B 站 | 17:00-23:00 | 放学后/下班后 |
| 微博 | 全天 | 热点随时发 |
---
## 标题测试方法
### A/B 测试
- 同一内容准备 2-3 个标题
- 不同时间段发布测试
- 看点击率、完播率、互动率
### 数据指标
- **点击率** - 标题吸引力的直接体现
- **完播率** - 标题和内容匹配度
- **互动率** - 内容质量和共鸣度
### 优化方向
- 点击率低 → 优化标题
- 完播率低 → 优化内容开头
- 互动率低 → 优化内容质量
FILE:references/title-formulas.md
# 爆款标题公式详解
## 一、数字型标题
### 核心逻辑
数字让内容更具体、可信、易消化
### 公式模板
```
{数字} + {量词} + {内容} + {结果/好处}
```
### 示例
```
3 个存钱技巧,1 年内存下 10 万
5 款平价好物,学生党必看
7 天瘦 5 斤,不节食不运动
10 个副业项目,总有一个适合你
```
### 最佳数字
- **3** - 不多不少,刚好记住
- **5** - 中等数量,感觉丰富
- **7** - 有神秘感(7 天、7 个)
- **10** - 完整、全面的感觉
- **99%** - 高比例,增加可信度
---
## 二、对比型标题
### 核心逻辑
通过前后对比,突出变化和效果
### 公式模板
```
从{状态 A}到{状态 B},{过程/方法}
{事物 A}vs{事物 B},{结论}
```
### 示例
```
从月薪 3 千到月入 10 万,我只做对了这 3 件事
从胖 120 斤到 90 斤,我用了这 5 个方法
拼多多 vs 淘宝,同样的东西价格差一半
30 岁 vs20 岁,我的消费观变了
```
### 对比维度
- **时间对比** - 以前/现在、20 岁/30 岁
- **价格对比** - 平价/大牌、10 元/1000 元
- **状态对比** - 穷/富、胖/瘦、忙/闲
- **认知对比** - 以为/其实、听说/真相
---
## 三、悬念型标题
### 核心逻辑
制造信息差,引发好奇心
### 公式模板
```
为什么{现象}?{答案/揭秘}
{事物}的背后,{真相}
{数字}%的人都不知道{信息}
```
### 示例
```
为什么越省钱越穷?原来这才是真相
月入 10 万的背后,这 3 个秘密没人告诉你
90% 的人都不知道的省钱技巧
上海女孩月入 3 万,为什么存不下钱?
```
### 悬念词库
- 为什么、原来、竟然、没想到
- 背后、真相、秘密、内幕
- 揭秘、曝光、揭开、揭示
---
## 四、痛点型标题
### 核心逻辑
戳中用户痛点,提供解决方案
### 公式模板
```
{人群}还在为{痛点}烦恼?{解决方案}
{痛点}怎么办?{方法}
别再{错误行为}了,{正确做法}
```
### 示例
```
上班族还在为没时间健身烦恼?这套方法每天只需 10 分钟
存款为 0 怎么办?这 5 个习惯帮你快速攒钱
别再盲目存钱了,这样存越存越多
```
### 常见痛点
- **金钱** - 没钱、存不下、月光
- **时间** - 没时间、太忙、来不及
- **外貌** - 胖、丑、矮、皮肤差
- **能力** - 不会、不懂、学不会
- **情感** - 孤独、焦虑、迷茫
---
## 五、警告型标题
### 核心逻辑
利用损失厌恶心理
### 公式模板
```
千万别{行为},否则{后果}
{行为}的人,最后都{后果}
{数字}个{行为},正在毁掉你的{事物}
```
### 示例
```
千万别这样存钱,否则越存越穷
经常熬夜的人,最后都怎么样了
这 5 个习惯,正在毁掉你的身体
```
### 注意事项
- 后果要真实可信,不能太夸张
- 最好能给出解决方案
- 避免制造过度焦虑
---
## 六、利益型标题
### 核心逻辑
直接告诉用户能得到什么好处
### 公式模板
```
如何{达成目标}?{方法}
{时间}内{结果},{方法}
{免费/低价}获得{高价值事物}
```
### 示例
```
如何靠副业月入过万?这 5 个方法亲测有效
30 天学会 Python,我的学习计划分享
免费领!价值 1999 元的课程资料
```
### 利益词库
- 免费、0 元、领取、赠送
- 省钱、赚钱、增收、变现
- 快速、轻松、简单、高效
- 学会、掌握、提升、进阶
---
## 七、情绪型标题
### 核心逻辑
用情绪感染用户
### 公式模板
```
{情绪词}!{内容}
{内容},{情绪反应}
太{形容词}了,{内容}
```
### 示例
```
哭死!这个神器让我每天多睡 1 小时
真的绝了!10 块钱的东西比 1000 块的还好用
太香了!拼多多这些宝藏店铺必须收藏
后悔没早买!这些好物提升幸福感
```
### 情绪词库
- **正面** - 绝了、香、爽、值、宝藏
- **负面** - 哭死、后悔、踩雷、智商税
- **惊讶** - 没想到、竟然、原来、震惊
---
## 八、人群型标题
### 核心逻辑
精准定位目标人群
### 公式模板
```
{人群}必看/必备/专属
给{人群}的{内容}
{人群}的{痛点/需求}
```
### 示例
```
学生党必看!这些平价好物太香了
给所有女生的 3 个搞钱建议
上班族的副业指南,月入过万不是梦
```
### 人群标签
- **年龄** - 00 后、90 后、80 后、30 岁+
- **身份** - 学生、上班族、宝妈、自由职业
- **地域** - 北漂、沪漂、小城镇
- **状态** - 单身、已婚、有娃、无房
---
## 九、故事型标题
### 核心逻辑
用故事吸引用户
### 公式模板
```
{人物}+{事件}+{结果}
我{做了什么},{得到什么}
{时间}的{人物},{状态}
```
### 示例
```
25 岁女生裸辞后,靠这 3 个副业月入 5 万
北漂 5 年,我从月薪 3 千到存款 50 万
全职妈妈带娃 3 年,如何靠写作实现经济独立
```
### 故事要素
- **人物** - 让用户有代入感
- **冲突** - 有困难、有挑战
- **转折** - 有变化、有突破
- **结果** - 有收获、有启发
---
## 十、热点型标题
### 核心逻辑
借势热点,获取流量
### 公式模板
```
{热点事件}+{观点/分析}
{热点人物}+{启示/思考}
{热点话题}+{专业解读}
```
### 示例
```
董宇辉离职事件,给打工人的 3 个启示
某明星塌房背后,这 3 个教训值得深思
最近很火的 XX,我帮你试了,结论是...
```
### 注意事项
- 热点要及时,过期没用
- 观点要独特,不要人云亦云
- 避免敏感热点
---
## 组合使用
最好的标题往往是多个公式的组合:
```
数字 + 对比:从 0 到 50 万,我只用了这 3 个方法
悬念 + 利益:为什么她月入 10 万?这个方法你也可以复制
痛点 + 警告:存款为 0 怎么办?千万别再这样花钱了
人群 + 情绪:学生党哭死!这些平价好物太香了
```
多组合、多测试,找到最适合你的标题公式!
FILE:scripts/generate_titles.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
自媒体爆款标题生成器
根据内容主题和平台自动生成多个高点击率标题
"""
import sys
import json
import random
from typing import List, Dict
# 标题模板库
TEMPLATES = {
"xiaohongshu": [
"{age}岁{status},我靠这{num}个{method}{result}💰",
"后悔没早{action}!这个{thing}让我{benefit}✨",
"{city}{time},我{achievement}💪",
"从{state1}到{state2},我只做了这{num}件事",
"{num}个{method},{time}内{result}🔥",
"真的绝了!{price}的东西比{high_price}的还好用",
"{target}必看!这些{thing}太香了💖",
],
"wechat": [
"从{state1}到{state2},我只做对了这{num}件事",
"为什么你总是{pain_point}?这{num}个{thing}正在毁掉你",
"{authority}研究:{action},{benefit}",
"{num}个{method},帮你{solve_pain}",
"揭秘:{phenomenon}背后的真相",
"{target}的{num}个{method},建议收藏",
],
"douyin": [
"你知道吗?{percent}%的人都不知道这个{thing}",
"没想到!{low_price}块的东西比{high_price}块的还好用",
"一定要看!这个视频可能帮你{benefit}",
"{num}个{method},让你{result}",
"如果你现在{emotion},一定要看完这个视频",
"千万别{wrong_action},否则{bad_result}",
],
"zhihu": [
"{target}如何{goal}?有哪些可行的路径?",
"{experience}是一种怎样的体验?",
"为什么越来越多的{target}{phenomenon}?",
"有哪些{adjective}的{thing}推荐?",
"{num}年{field}经验,我来回答这个问题",
"如何评价{phenomenon}?",
],
"bilibili": [
"【全程高能】我花了{time},{achievement}",
"史上最强{thing}教程!看完你就是大神",
"【第{num}期】挑战用{price}元{action},结果...",
"从入门到精通:{field}学习全攻略",
"{age}岁{target}{achievement},我做到了",
"我尝试了{num}种{method},最后只推荐这{action}",
],
}
# 数据填充库
DATA = {
"age": ["25", "28", "30", "35"],
"status": ["存款为 0", "一事无成", "月入 3 千", "刚毕业", "裸辞"],
"num": ["3", "5", "7", "10"],
"method": ["副业", "技巧", "方法", "习惯", "项目"],
"result": ["月入 3 万", "存下 50 万", "瘦 10 斤", "逆袭人生", "实现自由"],
"action": ["买", "学", "做", "开始", "坚持"],
"thing": ["神器", "方法", "技巧", "习惯", "项目", "东西"],
"benefit": ["每天多睡 1 小时", "省下一辆车", "瘦了 20 斤", "月入过万", "改变人生"],
"city": ["上海", "北京", "深圳", "杭州"],
"time": ["打工 5 年", "毕业 3 年", "北漂 8 年", "深漂 6 年"],
"achievement": ["攒下第一个 50 万", "买了第一套房", "月入 10 万", "实现财务自由"],
"state1": ["月薪 3 千", "胖 120 斤", "存款为 0", "职场小白"],
"state2": ["月入 10 万", "瘦到 90 斤", "存款 50 万", "部门主管"],
"price": ["10", "20", "50", "9.9"],
"high_price": ["1000", "500", "200"],
"target": ["上班族", "学生党", "宝妈", "女生", "普通人"],
"pain_point": ["存不下钱", "没时间", "学不会", "没效果"],
"authority": ["哈佛", "斯坦福", "清华", "北大", "专家"],
"percent": ["90", "95", "99", "80"],
"emotion": ["很累", "很迷茫", "很焦虑", "很辛苦"],
"wrong_action": ["这样存钱", "盲目努力", "乱花钱", "熬夜"],
"bad_result": ["越存越穷", "一事无成", "身体垮掉", "后悔莫及"],
"goal": ["月入过万", "实现财务自由", "学会编程", "减肥成功"],
"experience": ["工作 5 年存款为 0", "30 岁未婚", "裸辞创业", "北漂 10 年"],
"phenomenon": ["选择不婚不育", "躺平", "提前退休", "离开大城市"],
"adjective": ["相见恨晚", "实用", "靠谱", "高效"],
"field": ["Python", "Excel", "写作", "剪辑", "英语"],
}
def generate_titles(topic: str = None, platform: str = "all", count: int = 5) -> Dict:
"""
生成标题
Args:
topic: 内容主题
platform: 目标平台
count: 生成数量
Returns:
生成的标题列表和说明
"""
results = {}
platforms = list(TEMPLATES.keys()) if platform == "all" else [platform]
for plat in platforms:
if plat not in TEMPLATES:
continue
templates = TEMPLATES[plat]
titles = []
for _ in range(count):
template = random.choice(templates)
title = template
# 填充变量
for key, values in DATA.items():
placeholder = "{" + key + "}"
if placeholder in title:
title = title.replace(placeholder, random.choice(values), 1)
titles.append(title)
results[plat] = titles
return {
"topic": topic or "通用",
"platform": platform,
"titles": results,
"tips": [
"标题前几个字最关键(移动端展示限制)",
"用数字增加具体性和可信度",
"制造反差和悬念吸引点击",
"避免违规词和敏感词",
"多测试不同标题找最优"
]
}
def main():
# 默认参数
topic = ""
platform = "all"
count = 5
# 解析命令行参数
if len(sys.argv) > 1:
try:
params = json.loads(sys.argv[1])
topic = params.get('topic', '')
platform = params.get('platform', 'all')
count = params.get('count', 5)
except json.JSONDecodeError:
topic = sys.argv[1]
# 生成标题
result = generate_titles(topic, platform, count)
# 输出结果
print(json.dumps(result, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
电商爆款文案生成技能。为淘宝/拼多多/抖音/京东卖家生成高转化率的商品标题、详情页文案、卖点提炼和促销文案。使用场景:(1) 商品标题优化,(2) 详情页文案生成,(3) 卖点提炼,(4) 促销活动文案,(5) 竞品文案分析。
---
name: ecommerce-copywriter
description: 电商爆款文案生成技能。为淘宝/拼多多/抖音/京东卖家生成高转化率的商品标题、详情页文案、卖点提炼和促销文案。使用场景:(1) 商品标题优化,(2) 详情页文案生成,(3) 卖点提炼,(4) 促销活动文案,(5) 竞品文案分析。
---
# 电商爆款文案生成器
## 核心功能
本技能帮助电商卖家快速生成高转化率的营销文案,节省时间并提升销量。
### 适用平台
- 淘宝/天猫
- 拼多多
- 抖音小店
- 京东
- 小红书
---
## 使用方式
### 1. 生成商品标题
用户请求示例:
- "帮我想一个保暖内衣的商品标题"
- "优化这个标题:冬季加厚保暖毛衣"
- "生成 5 个吸引点击的羽绒服标题"
**标题公式:**
```
【核心卖点】+ 产品名称 + 适用人群/场景 + 促销信息
```
**标题技巧:**
- 前 10 个字最关键(移动端展示限制)
- 包含热搜词(季节、功能、人群)
- 加入数字和促销词(买一送一、限时折扣)
- 避免违规词(最、第一、国家级等)
### 2. 生成详情页文案
用户请求示例:
- "写一个保温杯的详情页文案"
- "帮我写产品描述,卖的是儿童运动鞋"
**详情页结构:**
```
1. 首屏海报文案(3 秒抓住注意力)
2. 痛点场景(引发共鸣)
3. 核心卖点(3-5 个)
4. 产品细节/参数
5. 使用场景展示
6. 用户评价/信任背书
7. 促销信息/行动号召
```
### 3. 提炼产品卖点
用户请求示例:
- "这个产品有什么卖点:无线蓝牙耳机,续航 30 小时,降噪,防水"
- "帮我提炼卖点,准备做主图"
**卖点分类:**
- 功能卖点(解决了什么问题)
- 情感卖点(带来什么感受)
- 信任卖点(为什么信你)
- 促销卖点(为什么现在买)
### 4. 促销活动文案
用户请求示例:
- "双 11 促销文案怎么写"
- "写一个限时抢购的文案"
- "新店开业活动文案"
**促销文案要素:**
- 紧迫感(限时、限量)
- 优惠力度(具体数字)
- 行动号召(立即下单)
- 信任保障(退换无忧)
---
## 文案风格指南
### 不同平台风格
| 平台 | 风格特点 | 文案长度 |
|------|---------|---------|
| 淘宝 | 详细专业,重参数 | 长文案 |
| 拼多多 | 简单直接,重价格 | 短文案 |
| 抖音 | 场景化,重情绪 | 中短文案 |
| 小红书 | 种草风,重体验 | 中篇文案 |
| 京东 | 品质感,重服务 | 中长文案 |
### 高转化文案技巧
1. **用数字说话** - "7 天瘦 5 斤" 比 "快速瘦身" 更有说服力
2. **场景化描述** - 让用户想象使用后的美好画面
3. **对比手法** - 使用前 vs 使用后
4. **从众心理** - "10 万人已购买"、"月销 10 万+"
5. **稀缺性** - "仅剩 XX 件"、"限时 XX 小时"
---
## 违规词提醒
**绝对不能用:**
- 最、第一、顶级、国家级
- 治愈、疗效、100% 有效
- 其他广告法禁用词
**谨慎使用:**
- 爆款、热销(需有数据支撑)
- 正品、专柜(需有授权)
---
## 快速模板
### 标题模板
```
【买 1 送 3】{产品名} {核心卖点} {适用人群} 限时特惠
{季节/场景}{产品名} {功能 1}+{功能 2} {促销信息}
{人群}必备!{产品名} {差异化卖点} 今天下单立减{金额}
```
### 详情页开头模板
```
❌ 你是否也遇到过这些问题:
- 问题 1
- 问题 2
- 问题 3
✅ {产品名} 帮你一次解决!
🔥 核心卖点:
1. {卖点 1}
2. {卖点 2}
3. {卖点 3}
```
### 促销文案模板
```
⏰ 限时{XX}小时!
💰 原价{XX} 元,今天只要{XX}元
🎁 前{XX}名下单再送{赠品}
🚚 包邮 + 运费险,不满意包退
👉 点击立即抢购,手慢无!
```
---
## 参考资源
- 卖点提炼方法:见 `references/selling-points.md`
- 各平台规则:见 `references/platform-rules.md`
- 文案模板库:见 `references/templates.md`
FILE:references/platform-rules.md
# 各电商平台规则与文案风格
## 淘宝/天猫
### 文案风格
- **详细专业** - 用户习惯看长详情
- **重参数规格** - 尺码、材质、功能要详细
- **品牌感** - 突出品牌故事和调性
### 标题规则
- 最多 60 个字符(30 个汉字)
- 不能重复关键词
- 不能包含违规词
### 违规词清单(重点)
```
❌ 绝对化用语:最、第一、顶级、国家级、世界级
❌ 医疗用语:治愈、疗效、100% 有效、根治
❌ 虚假宣传:正品(无授权)、专柜(无证明)
❌ 价格违规:原价(无依据)、历史最低(无证明)
```
### 推荐文案结构
```
1. 首屏海报(3 秒吸引)
2. 痛点场景(引发共鸣)
3. 核心卖点(3-5 个)
4. 详细参数
5. 细节展示
6. 用户评价
7. 售后保障
```
---
## 拼多多
### 文案风格
- **简单直接** - 用户决策快
- **重价格优势** - 突出便宜、实惠
- **短平快** - 文案不宜过长
### 标题规则
- 最多 40 个字符
- 价格信息可以放标题
- 突出"包邮""特价"
### 推荐文案结构
```
1. 价格优势(最显眼)
2. 核心卖点(1-3 个)
3. 简单参数
4. 促销信息
```
### 高转化技巧
- "9.9 包邮"直接放标题
- "限时抢购"营造紧迫感
- "已拼 10 万 + 件"从众心理
---
## 抖音小店
### 文案风格
- **场景化** - 描述使用场景
- **重情绪** - 激发购买冲动
- **短视频思维** - 前 3 秒抓住注意力
### 标题规则
- 最多 30 个字符
- 可以用感叹号、问号
- 适合口播风格
### 推荐文案结构
```
1. 痛点/场景(引发共鸣)
2. 解决方案(产品介绍)
3. 效果展示(前后对比)
4. 促销信息(限时限量)
```
### 高转化技巧
- "你还在为 XX 烦恼吗?"开头
- 用"我亲测有效"增加信任
- "今天直播间专属价"制造稀缺
---
## 京东
### 文案风格
- **品质感** - 强调正品、品质
- **重服务** - 物流、售后是优势
- **专业详细** - 用户期待高
### 标题规则
- 最多 60 个字符
- 可以放品牌名
- 突出"京东自营""京东配送"
### 推荐文案结构
```
1. 品牌介绍
2. 产品亮点
3. 详细参数
4. 服务承诺(物流、售后)
5. 用户评价
```
### 高转化技巧
- "京东自营"增加信任
- "211 限时达"突出物流
- "30 天无忧退换"降低决策门槛
---
## 小红书
### 文案风格
- **种草风** - 像朋友推荐
- **重体验** - 个人使用感受
- **真实感** - 避免过度营销
### 标题规则
- 最多 20 个字符
- 可以用 emoji
- 适合"标题党"
### 推荐文案结构
```
1. 吸引眼球的标题
2. 个人使用体验
3. 产品优缺点(真实)
4. 购买建议
5. 相关话题标签
```
### 高转化技巧
- "亲测好用"开头
- 说 1-2 个无伤大雅的缺点增加真实感
- 用 emoji 增加可读性
- 加话题标签增加曝光
---
## 违规词速查表
### 绝对不能用
```
最、第一、顶级、极品、独家、国家级、世界级
治愈、疗效、100% 有效、根治、永不
```
### 谨慎使用(需有依据)
```
爆款、热销、销量第一(需数据证明)
正品、专柜、旗舰店(需授权证明)
原价、历史最低(需价格记录)
```
### 安全替代词
```
"最受欢迎" → "深受喜爱"
"第一" → "领先"
"治愈" → "舒缓"
"100%" → "高达"
```
---
## 各平台最佳发布时间
| 平台 | 最佳时段 | 备注 |
|------|---------|------|
| 淘宝 | 10:00-12:00, 20:00-23:00 | 晚间流量最大 |
| 拼多多 | 全天 | 价格敏感用户随时购买 |
| 抖音 | 18:00-22:00 | 下班后刷抖音 |
| 小红书 | 12:00-14:00, 20:00-22:00 | 午休和睡前 |
| 京东 | 9:00-11:00, 20:00-22:00 | 上班族时段 |
FILE:references/selling-points.md
# 卖点提炼方法
## FAB 法则
**Feature(属性)** → **Advantage(作用)** → **Benefit(好处)**
### 示例
| 属性 (F) | 作用 (A) | 好处 (B) |
|---------|---------|---------|
| 304 不锈钢 | 不生锈、易清洗 | 用 10 年都不坏,省心 |
| 5000mAh 电池 | 续航持久 | 出门一天不用带充电宝 |
| 纯棉面料 | 透气吸汗 | 夏天穿不闷不黏身 |
### 提炼步骤
1. **列出产品所有属性** - 材质、功能、参数、设计等
2. **转化为用户语言** - 不说"304 不锈钢",说"用 10 年不生锈"
3. **找到核心痛点** - 用户最在意什么
4. **排序优先级** - 把最打动人的放前面
---
## 卖点分类框架
### 1. 功能型卖点(解决什么问题)
- 效率提升:"3 分钟搞定"
- 问题解决:"再也不用担心..."
- 性能优势:"比 XX 快 3 倍"
### 2. 情感型卖点(带来什么感受)
- 身份认同:"精英人士的选择"
- 安全感:"给宝宝最好的"
- 归属感:"10 万妈妈的选择"
### 3. 经济型卖点(省多少钱)
- 直接省钱:"每天只要 1 块钱"
- 性价比:"专柜 1/10 的价格"
- 投资回报:"用 1 年省出 1 台新机器"
### 4. 信任型卖点(为什么信你)
- 销量背书:"月销 10 万+"
- 权威认证:"XX 机构检测通过"
- 用户评价:"99% 好评率"
- 售后保障:"365 天只换不修"
---
## 卖点提炼模板
### 模板 1:痛点 + 解决方案
```
还在为{痛点}烦恼?
{产品名} 采用{技术/方法},
{时间/成本} 就能{效果}
```
### 模板 2:对比法
```
普通产品:{缺点 1}、{缺点 2}
我们的产品:{优点 1}、{优点 2}
```
### 模板 3:场景法
```
{场景描述}的时候,
你是不是也{痛点}?
有了{产品名},就能{美好结果}
```
### 模板 4:数字法
```
{数字}天/小时/次 见证改变
{数字}万人已经选择
{数字}倍效果提升
```
---
## 不同类目的核心卖点
### 服装鞋帽
- 面料舒适度
- 版型显瘦/显高
- 搭配场景
- 季节适配
### 数码电器
- 性能参数
- 使用便捷性
- 续航/耐用性
- 售后服务
### 美妆护肤
- 成分安全
- 功效可见
- 适用肤质
- 使用感受
### 食品零食
- 原材料来源
- 口感味道
- 健康无添加
- 新鲜日期
### 家居日用
- 实用功能
- 节省空间
- 易清洁
- 耐用性
---
## 卖点验证清单
在确定卖点前,问自己:
- [ ] 这个卖点是用户真正在意的吗?
- [ ] 能和竞品形成差异化吗?
- [ ] 有数据/证据支撑吗?
- [ ] 能用一句话说清楚吗?
- [ ] 放在主图上能吸引点击吗?
如果以上答案都是 YES,这就是一个好卖点!
FILE:references/templates.md
# 电商文案模板库
## 商品标题模板
### 通用爆款标题
```
【买 1 送 3】2026 新款{产品名}{核心卖点}{适用人群} 限时特惠
{季节}{产品名}{功能 1}+{功能 2} 今天下单立减{金额}
{人群}必备!{产品名}{差异化卖点} 现货速发
```
### 淘宝标题(60 字符)
```
{品牌}{产品名}{核心词}{属性词}{场景词}{人群词}{促销词}
例:优衣库 保暖内衣 男士 加绒加厚 冬季 打底衫 发热 防静电 限时折扣
```
### 拼多多标题(简单直接)
```
{价格优势}{产品名}{核心卖点} 包邮
例:9.9 包邮 保暖内衣 加绒加厚 男士冬季必备
```
### 抖音标题(场景化)
```
{场景痛点}?{产品名} 帮你{解决方案}!
例:冬天怕冷穿不暖?这款保暖内衣让你暖一整天!
```
---
## 详情页文案模板
### 模板 1:痛点解决型
```
❌ 你是否也遇到过这些问题:
• {痛点 1}
• {痛点 2}
• {痛点 3}
✅ {产品名} 帮你一次解决!
🔥 为什么选择我们:
1. {卖点 1} - {具体说明}
2. {卖点 2} - {具体说明}
3. {卖点 3} - {具体说明}
📊 产品参数:
{参数列表}
💬 用户都说好:
"{用户评价 1}"
"{用户评价 2}"
🎁 限时福利:
今天下单享{优惠},前{数量}名再送{赠品}
```
### 模板 2:场景种草型
```
{场景描述}
想象一下:
{美好画面描述}
{产品名} 让你的{场景}变得不一样
✨ 核心亮点:
• {亮点 1}
• {亮点 2}
• {亮点 3}
🎯 适合人群:
• {人群 1}
• {人群 2}
• {人群 3}
💝 现在入手最划算:
{促销信息}
```
### 模板 3:专业参数型
```
【产品名称】{产品名}
【产品型号】{型号}
【核心材质】{材质}
【产品尺寸】{尺寸}
【适用场景】{场景}
🔬 技术解析:
{技术说明}
📈 性能对比:
| 项目 | 普通产品 | 本产品 |
|------|---------|--------|
| {指标 1} | {数值} | {数值} |
| {指标 2} | {数值} | {数值} |
🏆 权威认证:
• {认证 1}
• {认证 2}
📦 包装清单:
• {物品 1}
• {物品 2}
• {物品 3}
```
---
## 主图文案模板
### 卖点型主图
```
主图 1:{核心卖点} + {产品图}
主图 2:{使用场景} + {效果对比}
主图 3:{细节展示} + {品质证明}
主图 4:{促销信息} + {行动号召}
主图 5:{信任背书} + {售后保障}
```
### 文字排版建议
```
• 字数控制在 10 个字以内
• 突出 1 个核心卖点
• 使用对比色增强可读性
• 避免遮挡产品主体
```
---
## 促销活动文案
### 限时抢购
```
⏰ 限时{XX}小时抢购!
💰 原价{XX}元 → 现价{XX}元
📉 直降{XX}元,历史最低价
🎁 前{XX}名下单再送{赠品}
👉 手慢无,立即抢购!
```
### 满减活动
```
🎊 全场满减,上不封顶!
满{金额}减{金额}
满{金额}减{金额}
满{金额}减{金额}
💳 还可叠加优惠券
```
### 新品上市
```
🆕 新品首发!
✨ {产品亮点}
💎 首发价{XX}元(原价{XX}元)
🎁 前{XX}名享{专属福利}
📅 活动时间:{开始} - {结束}
```
### 清仓处理
```
🔥 清仓大处理!
💸 全场{X}折起
📦 售完不补
⚠️ 尺码不全,先到先得
```
---
## 直播话术模板
### 开场留人
```
欢迎新进直播间的宝宝们!
今天给大家带来一款{产品名},
{核心卖点},
直播间专属价只要{价格}!
想要的扣 1!
```
### 产品介绍
```
这款产品我亲自用过{时间},
最大的感受就是{使用感受}。
它采用了{技术/材质},
所以能够{效果}。
```
### 促单话术
```
今天直播间价格{价格},
日常价是{日常价},
直接省了{金额}元!
而且前{数量}单再送{赠品},
库存只有{数量}单,
拍完就没有了!
3、2、1,上链接!
```
---
## 客服话术模板
### 询单转化
```
亲,您看的这款{产品名}
现在有活动,只要{价格}元
今天下单还能{优惠}
您要不要带一件试试?
```
### 议价应对
```
亲,这个价格已经是底价了
质量您放心,支持{保障}
而且现在买还送{赠品}
算下来真的很划算呢
```
### 催付话术
```
亲,您订单里的{产品名}
库存不多了,建议您尽快付款
今天付款还能{优惠/赠品}
超时订单会自动关闭哦
```
FILE:scripts/generate_title.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
电商商品标题生成器
根据产品信息自动生成多个高转化率的商品标题
"""
import sys
import json
from typing import List, Dict
def generate_titles(product_info: Dict) -> List[str]:
"""
根据产品信息生成标题
Args:
product_info: 包含 product_name, selling_points, target_audience,
promotion, platform 等信息的字典
Returns:
生成的标题列表
"""
titles = []
product_name = product_info.get('product_name', '产品')
selling_points = product_info.get('selling_points', [])
target_audience = product_info.get('target_audience', '')
promotion = product_info.get('promotion', '')
platform = product_info.get('platform', 'taobao')
# 淘宝标题模板(60 字符)
if platform == 'taobao':
templates = [
f"【买 1 送 3】2026 新款{product_name}{' '.join(selling_points[:2])} {target_audience} 限时特惠",
f"冬季{product_name} {selling_points[0] if selling_points else ''}+ 热销{target_audience} 今天下单立减",
f"{target_audience}必备!{product_name} {selling_points[0] if selling_points else ''} 现货速发",
f"【{promotion}】{product_name} {' '.join(selling_points[:3])} 包邮",
]
# 拼多多标题(简单直接)
elif platform == 'pinduoduo':
templates = [
f"9.9 包邮 {product_name} {selling_points[0] if selling_points else ''} 特价",
f"【{promotion}】{product_name} 限时抢购 手慢无",
f"{product_name} 爆款热销 {target_audience} 首选",
]
# 抖音标题(场景化)
elif platform == 'douyin':
templates = [
f"冬天怕冷?{product_name}让你暖一整天!{selling_points[0] if selling_points else ''}",
f"还在为{target_audience}烦恼?这款{product_name}帮你解决!",
f"用了{product_name}才知道,{selling_points[0] if selling_points else ''}这么重要!",
]
else: # 通用
templates = [
f"【热销】{product_name} {' '.join(selling_points[:3])} {promotion}",
f"2026 新款{product_name} {target_audience}推荐 {selling_points[0] if selling_points else ''}",
f"{product_name} 限时特惠{' '.join(selling_points[:2])} 包邮",
]
titles.extend(templates)
return titles
def main():
if len(sys.argv) < 2:
print(json.dumps({
"error": "请提供产品信息 JSON",
"example": {
"product_name": "保暖内衣",
"selling_points": ["加绒加厚", "发热", "防静电"],
"target_audience": "男士",
"promotion": "买一送一",
"platform": "taobao"
}
}, ensure_ascii=False))
sys.exit(1)
try:
product_info = json.loads(sys.argv[1])
titles = generate_titles(product_info)
result = {
"product_name": product_info.get('product_name', '产品'),
"platform": product_info.get('platform', '通用'),
"titles": titles,
"tips": [
"标题前 10 个字最关键(移动端展示)",
"避免使用违规词(最、第一、国家级等)",
"包含热搜词提升搜索曝光"
]
}
print(json.dumps(result, ensure_ascii=False, indent=2))
except json.JSONDecodeError as e:
print(json.dumps({"error": f"JSON 解析错误:{str(e)}"}))
sys.exit(1)
except Exception as e:
print(json.dumps({"error": f"生成失败:{str(e)}"}))
sys.exit(1)
if __name__ == "__main__":
main()