AI Reddit咨询配置:零基础搭建自动问答机器人
想在 Reddit 上自动回复咨询,需要把 Reddit 账号、API 权限和 AI 模型串起来。
下面按零基础可执行的方式,从创建 Reddit 应用开始,到脚本运行和验证,逐步说明配置过程。
先确认运行环境和前置条件
你需要一台能访问外网的 Linux 服务器或本地电脑,安装 Python 3.8 以上版本。
Reddit 账号需注册满一段时间并有正常活跃记录,新账号直接调用 API 容易被限制。
登录 Reddit 后,打开 https://www.reddit.com/prefs/apps,点击“create another app”创建应用。
类型选“script”,名称随意,重定向 URI 填 http://localhost:8080。
创建成功后,页面会显示 client_id(应用名下方短字符串)和 client_secret。
同时准备好 AI 模型的 API Key,例如 OpenAI 兼容接口或本地模型服务地址。
本文以通用 HTTP 接口为例,不绑定具体厂商。
安装依赖并保存凭证
在服务器上创建项目目录并安装 PRAW(Reddit API 封装库)和 requests:
mkdir ~/reddit-bot && cd ~/reddit-bot
python3 -m venv venv
source venv/bin/activate
pip install praw requests
新建 config.py,填入你的凭证。
不要直接把密钥写进主脚本,方便后续更换:
REDDIT_CLIENT_ID = "你的client_id"
REDDIT_CLIENT_SECRET = "你的client_secret"
REDDIT_USER_AGENT = "script:ai-consult-bot:v1.0 (by /u/你的用户名)"
REDDIT_USERNAME = "你的Reddit用户名"
REDDIT_PASSWORD = "你的Reddit密码"
AI_API_URL = "https://你的AI接口地址/v1/chat/completions"
AI_API_KEY = "你的AI密钥"
如果使用双因素认证,密码处需填写“密码:2FA码”或使用应用专用密码,具体以 Reddit 帮助页为准。
编写自动回复脚本
新建 bot.py,逻辑是:监听指定子版块的新帖子,提取标题和正文,调用 AI 接口生成回复,再以评论形式发布。
import praw
import requests
from config import *
reddit = praw.Reddit(
client_id=REDDIT_CLIENT_ID,
client_secret=REDDIT_CLIENT_SECRET,
user_agent=REDDIT_USER_AGENT,
username=REDDIT_USERNAME,
password=REDDIT_PASSWORD,
)
SUBREDDIT = "learnpython" # 替换为目标子版块
def ask_ai(prompt):
headers = {"Authorization": f"Bearer {AI_API_KEY}", "Content-Type": "application/json"}
data = {
"model": "你的模型名",
"messages": [{"role": "user", "content": prompt}],
"max_tokens": 300,
}
resp = requests.post(AI_API_URL, json=data, headers=headers, timeout=30)
resp.raise_for_status()
return resp.json()["choices"][0]["message"]["content"].strip()
for submission in reddit.subreddit(SUBREDDIT).stream.submissions(skip_existing=True):
text = f"标题:{submission.title}\n内容:{submission.selftext[:1000]}"
try:
reply = ask_ai(f"请用简短中文回答以下 Reddit 帖子中的问题:\n{text}")
submission.reply(reply)
print(f"已回复:{submission.id}")
except Exception as e:
print(f"处理 {submission.id} 失败:{e}")
注意 stream.submissions 会持续运行,建议用 nohup python bot.py & 或 systemd 托管,避免终端断开后停止。
容易踩坑的几个地方
- User-Agent 格式不对:PRAW 要求类似
script:应用名:版本 (by /u/用户名)的格式,缺失或过于简单会被 Reddit 返回 429 限流。 - 新账号权限不足:刚注册的账号可能无法评论或发帖,先手动在目标子版块参与几次讨论。
- 子版块规则限制:部分子版块禁止机器人自动回复,发布前阅读版规,避免被封禁。
- AI 回复过长或跑题:在提示词中限制字数,并明确要求“只回答帖子中的问题,不展开无关内容”。
- 密钥泄露:
config.py不要提交到公开仓库,建议加入.gitignore。
运行后如何验证效果
启动脚本后,在目标子版块用另一个账号发一条测试帖,观察是否在几十秒内收到评论回复。
同时查看终端输出,出现“已回复:帖子ID”表示成功。
如果没有任何反应,先检查 Reddit 账号是否能正常手动评论,再用以下命令单独测试 API 连通性:
curl -H "Authorization: Bearer 你的AI密钥" -H "Content-Type: application/json" \
-d '{"model":"你的模型名","messages":[{"role":"user","content":"测试"}]}' \
你的AI接口地址/v1/chat/completions
返回正常 JSON 说明 AI 接口可用,问题在 Reddit 侧;
返回 401 或 403 则检查密钥和权限。
常见疑问
Reddit API 免费额度够用吗?
Reddit 对脚本类应用有请求频率限制,个人低频回复通常够用,但具体限额可能调整,以 Reddit 官方 API 文档为准。
可以用多个子版块同时监听吗?
可以,把 subreddit 换成 reddit.subreddit("版块1+版块2") 即可,但注意总请求频率不要超限。
AI 回复被 Reddit 判定为垃圾信息怎么办?
降低回复频率,避免模板化内容,并在回复中体现对帖子内容的理解。必要时手动审核后再发布。
以上配置完成后,你就有了一条从 Reddit 帖子到 AI 回复的自动链路。
建议先用小号在低活跃子版块测试,确认稳定后再扩大范围。