mcpField
R
reddit

reddit

github.com/acedatacloud其他17204 次安装1 天前更新
代码仓库

关于 reddit

reddit 技能通过 OAuth 令牌或登录 Cookie 访问 Reddit,适合需要读取内容、查找讨论并谨慎发布的工作流。它包含发帖确认门槛、社区规则检查和写入结果核验。

主要功能

  1. 01OAuth 或 Cookie 身份验证
  2. 02读取帖子与评论
  3. 03搜索帖子和查看社区规则
  4. 04需确认后发布或回复
  5. 05写入结果核验与安全限制

适用场景

  1. 01查看 Reddit 账户及近期内容
  2. 02按关键词查找讨论并先检查版规
  3. 03经确认后提交帖子或回复
  4. 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。

评论

支持 Markdown