需先登录豆包网页版抓取cookie和authorization凭证,再用requests调用/api/v1/chat接口批量生成标题,配合防封延时与csv导出。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用豆包AI的Python SDK批量生成文章标题,需要绕过官方未开放的公开API限制,直接调用其内部HTTP接口并模拟真实请求头与会话状态。这要求你先登录网页版豆包获取有效Cookie,否则所有请求将返回401错误。
获取有效的Authorization和Cookie凭证
打开Chrome或Edge浏览器,访问 https://www.doubao.com → 登录账号 → 按F12打开开发者工具 → 切换到Network标签页 → 在搜索框输入任意词触发一次提问 → 在左侧列表中找到以 /api/v1/chat 开头的请求 → 点击它 → 右侧Headers面板下拉到底部,复制 【Cookie】 字段整行内容(含所有键值对,长度通常超过1500字符)→ 同样在Headers里找到 【Authorization】 字段,复制其Bearer后的完整token字符串(形如 eyJhbGciOi...)。
注意:这两个字段有效期约24小时,过期后必须重新抓取,不能复用他人Cookie。
安装依赖并构造基础请求结构
执行命令:pip install requests。
新建 doubao_batch.py 文件,写入以下代码框架:
import requests
import json
import time
headers = {
"Authorization": "Bearer YOUR_TOKEN_HERE",
"Cookie": "YOUR_COOKIE_HERE",
"Content-Type": "application/json",
"Origin": "https://www.doubao.com",
"Referer": "https://www.doubao.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
其中 YOUR_TOKEN_HERE 和 YOUR_COOKIE_HERE 必须替换成上一步抓取的真实值,漏掉任一字符都会导致403响应。
封装单次标题生成函数
方法一:使用固定prompt模板
def generate_title(topic):
payload = {
"messages": [
{"role": "user", "content": f"请为'{topic}'生成5个简洁有力、带数字序号的中文标题,每行一个,不要解释,不要空行。"}
],
"model": "doubao-pro"
}
resp = requests.post("https://www.doubao.com/api/v1/chat", headers=headers, json=payload)
return resp.json()["choices"][0]["message"]["content"].strip().split("\n")
方法二:动态注入关键词+风格指令
def generate_title(topic, style="爆款"): # 可选值:爆款/学术/文艺/口语
style_map = {
"爆款": "多用感叹号、数字、对比词,突出冲突感",
"学术": "使用术语,强调逻辑关系与研究视角",
"文艺": "加入隐喻、通感、留白,避免直白陈述"
}
prompt = f"请为'{topic}'生成5个{style_map[style]}风格的中文标题,编号1-5,每行一个,不加标点结尾,不解释。"
# 后续构造payload同方法一
执行批量生成并保存结果
第一步:准备待处理主题列表
topics = ["人工智能伦理", "小红书涨粉技巧", "零基础学Python"]
第二步:逐个调用生成函数,添加防封策略
results = {}
for i, topic in enumerate(topics):
print(f"正在生成第{i+1}个主题:{topic}")
try:
titles = generate_title(topic)
results[topic] = titles
time.sleep(3.5) # 必须等待≥3秒,否则连续请求会被限流
except Exception as e:
print(f"生成失败:{topic},错误:{e}")
results[topic] = []
第三步:导出为CSV文件
import csv
with open("batch_titles.csv", "w", encoding="utf-8-sig", newline="") as f:
writer = csv.writer(f)
writer.writerow(["主题", "标题1", "标题2", "标题3", "标题4", "标题5"])
for topic, titles in results.items():
row = [topic] + (titles[:5] + [""] * (5 - len(titles)))[:5]
writer.writerow(row)
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











