关于 reddit
reddit 技能通过 OAuth 令牌或登录 Cookie 访问 Reddit,适合需要读取内容、查找讨论并谨慎发布的工作流。它包含发帖确认门槛、社区规则检查和写入结果核验。
主要功能
- 01OAuth 或 Cookie 身份验证
- 02读取帖子与评论
- 03搜索帖子和查看社区规则
- 04需确认后发布或回复
- 05写入结果核验与安全限制
适用场景
- 01查看 Reddit 账户及近期内容
- 02按关键词查找讨论并先检查版规
- 03经确认后提交帖子或回复
- 04核实评论是否成功发布
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ acedatacloud/ skills --skill reddit安装后在 Claude Code 中输入/reddit确认已加载。
附带文件scripts/reddit.pytests/test_reddit.py
详细介绍
Reddit — OAuth 或登录 Cookie 访问
连接器会注入以下凭据中的一种:
REDDIT_COOKIES:由 ACE 浏览器扩展捕获的 JSON Cookie 数组。 其中包含reddit_session,可授予完整账户访问权限。这是机密信息 — 切勿回显、打印、记录或返回。REDDIT_TOKEN:官方 OAuth bearer token(identity read submit)。
辅助程序会在官方 OAuth 可用时自动优先使用它,否则使用 Cookie。
它会发送 Reddit 要求的描述性 User-Agent,且绝不会将 Cookie 转发到
reddit.com 以外的地方。
脚本解析
Bash 调用之间不会共享 shell 变量。每次使用辅助程序前,都要在每个 Bash 代码块调用中解析它:
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$R" whoami
如果身份验证失败,请让用户前往 https://studio.acedata.cloud/console/connectors 重新连接。对于被封锁或 已过期的会话,不要循环重试。
读取
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$R" whoami
python3 "$R" submissions --limit 10
python3 "$R" comments --limit 10
comment 会自行验证:如果 Reddit 返回的内容格式无法解析,它会先通过
comments 查找该评论,再报告任何情况。如果它仍表示写入可能失败,请在重新发送前
自行使用 comments 再次检查。
查找帖子并查看版规
search 会为每条结果返回 fullname(t3_…),这是 comment --parent
所需的值。subreddit-info 会返回该 subreddit 的版规 — 在此处发布任何内容前,请先
阅读版规。
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$R" search --query "suno api" --time week --limit 10
python3 "$R" search --query "image generation api" --subreddit SideProject
python3 "$R" subreddit-info --subreddit SideProject
--sort 默认为 relevance。Reddit 的 new 排序会忽略关键词相关性
— 它会返回近期帖子,其中往往完全不包含查询词。只有在扫描特定 subreddit 的近期动态时才使用
--sort new,切勿用它按关键词查找帖子。
回复帖子 — 需要确认
--parent 接受 fullname(帖子为 t3_…,评论为 t1_…)或 reddit.com
永久链接。**请展示目标帖子和确切的回复文本,然后取得明确确认。**如果末尾没有
--confirm,则为试运行。
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 "$R" comment --parent t3_1r9yrtn --body-file reply.md
python3 "$R" comment --parent t3_1r9yrtn --body-file reply.md --confirm
发布帖子 — 需要确认
发布内容会公开。**务必展示 subreddit、最终标题以及最终正文/URL,
然后取得明确确认。**如果末尾没有 --confirm,两个写入命令都只会试运行,
不会发起网络请求。
R="${SKILL_DIR:-}/scripts/reddit.py"; [ -f "$R" ] || R=$(find /tmp -maxdepth 8 -path '*/skills/*/reddit/scripts/reddit.py' -print -quit 2>/dev/null)
[ -f "$R" ] || { echo "reddit script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
# Text post: use a file for long Markdown.
python3 "$R" submit-text --subreddit test --title "My title" --text-file post.md
python3 "$R" submit-text --subreddit test --title "My title" --text-file post.md --confirm
# Link post.
python3 "$R" submit-link --subreddit test --title "My title" --url "https://example.com"
python3 "$R" submit-link --subreddit test --title "My title" --url "https://example.com" --confirm
只有当 --confirm 是最后一个参数时,它才会生效。标题或正文中包含
--confirm 文本,绝不会触发写入。
安全与故障处理
- 切勿打印
REDDIT_COOKIES、REDDIT_TOKEN、reddit_session或 modhash。 - 不要投票、发送私信、规避封禁或交叉发布相同内容。此技能有意不提供这些操作。
- **绝不要在多个帖子中发布相同的回复文本。**Reddit 会将重复的相同评论视为垃圾信息,并对账户采取措施,而非针对评论。 针对每个回复所对应的具体帖子撰写回复。
- 遵守各 subreddit 的版规 — 先运行
subreddit-info。账户年龄、karma 和 flair 要求可能导致帖子或评论被拒绝;报告拒绝情况时,不要暴露 Reddit 的原始身份验证响应,因为其中可能包含回显的凭据材料。 - 不要自动重试写入。Reddit 可能已接受请求后才发生超时,重放请求可能造成重复内容。
- 遵守速率限制,切勿批量提交帖子或评论。仅在有意进行端到端验证时使用
r/test。 - Cookie 模式会调用 Reddit 第一方 Web JSON 端点,Reddit 更改站点时,这些端点可能发生变化。遇到意外的 HTML 或路由错误时,应报告为上游变更,而不是猜测其他私有端点。
自我推广 — 推广任何内容前请先阅读
Reddit 会根据推广行为模式封禁账号,而不是根据单个链接。用户的目标是推广自己的产品时:
- 先回答问题。 即使移除产品链接,回复本身也必须有用。如果做不到,就不要发送。
- 披露关联关系(“我在开发 X”)——不披露的推广最容易导致账号被封。
- 最多放一个链接,且放在末尾,绝不要放在帖子标题中。
- 不要一概回复。 少数真正相关的帖子胜过大量回复,而大量回复恰恰是垃圾内容检测重点关注的行为。
- 如果某个 subreddit 有专门的自我推广 / “Showoff” 主题帖,就在其中发布——这是获准使用的渠道。
- 在大多数活跃的 subreddit 中,低 karma 或新账号发布的帖子会被 AutoModerator 自动移除。检查
whoami中的 karma,并提醒用户,而不是让账号因一条被悄悄过滤的帖子而白白受损。
记录输出
成功发布帖子或评论并获取其公开结果 URL 后,调用内置的 publish_artifact 工具一次,让用户可以在 My Outputs 中跟踪此交付内容:
publish_artifact(kind="message", channel="reddit", title="<title>", url="<the REAL returned URL>", status="delivered")
使用实际返回的 URL,绝不要伪造。每个已发布项目只调用一次,并且仅在确认交付后调用;如果发布失败,则跳过调用(或使用 status="failed")。
参见 _shared/artifacts.md。