mcpField
R
reddit-post-engine

reddit-post-engine

github.com/varnan-tech营销与增长68743 次安装2 周前更新
代码仓库

关于 reddit-post-engine

reddit-post-engine 是为特定 subreddit 规则与社区风格起草帖子的技能,适用于分享项目、工具或想法的人。连接 Composio 后,可在获得明确确认后提交帖子。

主要功能

  1. 01获取 subreddit 规则和近期热门帖
  2. 02按 subreddit 风格调整草稿
  3. 03将推广链接排除在正文外
  4. 04可选起草首条评论
  5. 05检查规则合规性和垃圾内容风险
  6. 06可选通过 Composio 发布

适用场景

  1. 01为特定 subreddit 准备项目帖
  2. 02分享前确认是否允许自我推广
  3. 03起草重视社区价值的帖子及配套评论

MCP 相关

连接 Composio Reddit MCP 后,技能可在用户明确确认后创建 Reddit 帖子和后续评论。未连接时则生成草稿,供手动提交。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/varnan-tech/opendirectory --skill reddit-post-engine

安装后在 Claude Code 中输入/reddit-post-engine确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
README.md
evals/
evals.json
references/
subreddit-playbook.md

详细介绍

Reddit 帖子引擎

起草一篇符合 subreddit 文化的 Reddit 帖子。还可以通过 Composio 发布。


重要规则: 未确认 subreddit 规则前,绝不要发布。正文中绝不要放产品链接:只有在合适的情况下,才将链接放在第一条评论中。遵循 90/10 规则:即使不提及任何产品,你的帖子也应能提供价值。

反垃圾规则: 以推广为主的帖子会被删除,账号也可能被封禁。目标是先为社区做贡献。只有 subreddit 允许自我推广时,才能在第一条评论中提及产品。


步骤 1:检查设置

echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
# Check if Composio Reddit MCP is connected
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP: not connected"

如果缺少 GEMINI_API_KEY: 停止。告知用户:"需要 GEMINI_API_KEY。请前往 aistudio.google.com 获取,并将其添加到 .env 文件中。"

如果未连接 Composio Reddit MCP: 继续。此技能会起草帖子,但跳过发布步骤。告知用户:"Composio Reddit MCP 未连接:我会起草帖子,供你手动发布。如需启用直接发布,请参阅 README.md 中的设置说明。"


步骤 2:收集背景信息

你需要:

  • 目标 subreddit(例如 r/devops、r/startups、r/SideProject)
  • 你要分享的内容(项目、文章、问题、讨论、工具)
  • 一句话描述其功能
  • 它为何与该 subreddit 的社区相关
  • 你想发布自发帖(文本)还是链接帖

如果缺少任何一项,请在一条消息中询问:

"要起草 Reddit 帖子,我需要:

  1. 哪个 subreddit?(例如 r/devops、r/startups)
  2. 你要分享什么?(项目、文章、工具、问题)
  3. 它有什么作用?(用一句话说明,偏技术性)
  4. 这个 subreddit 为什么会特别关注它?"

步骤 3:获取 subreddit 规则和社区文化

获取 subreddit 规则:

curl -s \
  -H "User-Agent: varnan-skills/1.0" \
  "https://www.reddit.com/r/{SUBREDDIT}/about/rules.json" \
  | python3 -c "
import sys, json
d = json.load(sys.stdin)
rules = d.get('rules', [])
for r in rules:
    print(f'Rule: {r.get(\"short_name\", \"\")}')
    print(f'Detail: {r.get(\"description\", \"\")[:200]}')
    print()
"

获取近期热门帖子,以了解语气和风格:

curl -s \
  -H "User-Agent: varnan-skills/1.0" \
  "https://www.reddit.com/r/{SUBREDDIT}/top.json?t=week&limit=10" \
  | python3 -c "
import sys, json
d = json.load(sys.stdin)
for p in d['data']['children'][:10]:
    pd = p['data']
    print(f'Score: {pd[\"score\"]} | Title: {pd[\"title\"][:100]}')
"

留意热门帖子的模式:

  • 标题是疑问句还是陈述句?
  • 标题开门见山地介绍技术,还是先讲成果?
  • 是个人口吻("我构建了……")还是客观口吻("一款用于……的工具")?
  • 哪种格式在这个 subreddit 中最受欢迎?

检查 subreddit 侧边栏中的发帖规则:

curl -s \
  -H "User-Agent: varnan-skills/1.0" \
  "https://www.reddit.com/r/{SUBREDDIT}/about.json" \
  | python3 -c "
import sys, json
d = json.load(sys.stdin)
data = d.get('data', {})
print('Public description:', data.get('public_description', '')[:300])
print('Subscribers:', data.get('subscribers', 0))
"

确定 subreddit 类型:

类型示例帖子风格
技术从业者r/devops、r/sysadmin、r/ExperiencedDevs具体的技术细节,不说空话;采用“我做了 X,并学到了 Y”的方式
初创公司/构建者r/startups、r/SideProject、r/indiehackers个人经历、数据、经验教训
综合科技r/programming、r/technology新闻角度、讨论切入点、有争议的观点
职业发展r/cscareerquestions、r/ITCareerQuestions提问形式、具体情境、征求他人经验
小众工具r/vim、r/rust、r/golang深入的技术内容、代码示例、基准测试

根据获取的规则和热门帖子,判断适用哪种风格。


步骤 4:使用 Gemini 起草帖子

将帖子内容写入临时文件,然后调用 Gemini:

cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "You are a developer who is active in the {SUBREDDIT} community. Write a Reddit post that fits this subreddit's culture. Rules: (1) Write in first person if it is a project or experience post. (2) Do NOT include any product links in the body: links go in the first comment only. (3) The post must add genuine value to the community independent of any product being shared. (4) Match the tone of top posts in this subreddit: {SUBREDDIT_TONE_NOTES}. (5) Title max 300 characters. (6) Body 150-400 words for text posts. (7) No marketing language: no 'game-changing', 'powerful', 'robust', 'seamless', 'innovative'. (8) If the post is about a tool the user built, use the 'I made...' or 'I built...' opener: it performs best on Reddit. (9) Output: title on first line, blank line, then body. No labels, no commentary. Do not use em dashes."
    }]
  },
  "contents": [{
    "parts": [{
      "text": "POST_DETAILS_HERE"
    }]
  }],
  "generationConfig": {
    "temperature": 0.7,
    "maxOutputTokens": 1024
  }
}
ENDJSON

curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d @/tmp/reddit-post-request.json \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"

将 POST_DETAILS_HERE 替换为以下内容:

  • Subreddit 名称和类型
  • 观察到的热门帖子模式
  • 分享的内容及其相关性
  • 关键技术细节
  • 构建者真实的动机

步骤 5:起草第一条评论

如果用户有产品链接或要分享的补充背景信息,请起草一条第一评论,在帖子发布后立即发布。

第一条评论有两个作用:

  1. 提供链接(这样正文不含链接,也显得不那么像推广)
  2. 补充在帖子正文中显得过于推广的背景信息

第一条评论规则:

  • 帖子发布后,立即将此评论作为对自己帖子的第一条回复
  • 控制在 100 词以内
  • 示例格式:"想了解详情的朋友可以看这个链接:[URL];也很乐意回答关于帖子中提到的[具体技术问题]。"
  • 只有 subreddit 允许在评论中自我推广时,才添加第一条评论
  • 如果 subreddit 有“禁止自我推广”规则,则完全省略链接

第 6 步:自我检查

发布前检查草稿:

结构:

  • 标题不超过 300 个字符
  • 正文中没有链接
  • 帖子以第一人称开头(项目/经验类帖子)
  • 至少包含一项具体技术细节或确切数字
  • 帖子语气符合在第 3 步观察到的该 subreddit 热门帖风格
  • 没有违反第 3 步中的 subreddit 规则

检测 Claude 式表达:扫描以下词汇类别并全部删除:

类别要删除的词语
填充式强调词难以置信地、绝对、当然、肯定、本质上、根本上、字面上、尤其、相当、颇为、真正地、显著地、仅仅、确实、最终、非常
AI 式模棱两可我应该指出、值得注意的是、需要特别指出的是、如前所述、正如我所指出的
夸大宣传的描述词改变游戏规则的、革命性的、强大的、稳健的、无缝的、创新的、同类最佳的、尖端的、突破性的、非凡的
铺垫语总之、概括来说、总结一下、总体而言、首先也是最重要的、最后但同样重要的是
不必要的连接词此外、而且、另外、然而(用于句首时)、因此、所以、从而
AI 痕迹用语这确保了、这允许、这有助于、这使得、深入探讨、利用、借助、促进

如果出现上述表达:用具体的名词、动词或数字替换。“非常快”改为“运行时间为 12ms”。“强大的工具”改为它实际能做什么。

即时删除短语检查:以下表达模式会触发 Reddit 垃圾信息过滤器或版主删除:

  • 任何类似广告的句子(“今天就试试 [产品]”“立即注册”“免费开始”)
  • 暗示你并非开发者的表达(“我偶然发现了这个很棒的工具”“我找到了一款很棒的产品”)
  • 在尚未建立社区关系的 subreddit 中,以第一人称表示拥有用户(“我们的用户”“我们的客户”)
  • “我做了 X,你可以用它来……”后面紧接着一个链接(推广式结构)
  • 没有依据的最高级表达(“……的最佳方式”“唯一的工具……”)
  • 帖子正文中的外部链接(仅在首条评论中使用)

如果出现任何即时删除短语:彻底改写整句,而非只替换其中的词语。


第 7 步:对抗性审查

在提交最终草稿前,请进行 3 种角色视角的审查。每种角色阅读帖子,并找出一个具体问题,引用触发问题的原文。

角色 1:持怀疑态度的从业者 这个人在 r/{SUBREDDIT} 混迹多年,见过数百个伪装成帖子的产品发布。他们会这样看:

  • 有没有句子即使没有明确推销,也让人觉得是在宣传?
  • 帖子是否体现了对社区问题的真实了解,还是只在谈论产品?
  • 有没有从业者会嗤之以鼻的说法?

指出他们会标记的那一句,以及原因。

角色 2:版主 这个人负责执行第 3 步获取的规则。他们会这样看:

  • 帖子是否符合 subreddit 规则?
  • 自我推广与社区贡献的比例是否可以接受?
  • 他们以前是否见过完全相同的帖子结构并将其删除?

指出一条可能被违反的具体规则,或确认没有问题。

角色 3:目标读者 这是符合该 subreddit 用户群特征、但并非开发者的社区成员。他们会这样看:

  • 即使从未使用该产品,他们也会给这篇帖子点赞吗?
  • 即使跳过首条评论中的链接,他们能获得什么可用的启示吗?
  • 开头一句是否让他们想继续读下去?

指出一处会让他们停止阅读的内容,或确认帖子能吸引他们读下去。

三种角色完成报告后:应用所有修改。如果没有角色发现问题,请写“对抗性审查:无问题。”


步骤 8:通过 Composio 发布(可选)

如果已连接 Composio Reddit MCP,且用户确认要发布:

Use the reddit-composio MCP tool REDDIT_CREATE_REDDIT_POST with:
- subreddit: {SUBREDDIT_WITHOUT_r/}
- title: {TITLE}
- kind: "self"
- text: {BODY}

发布前,请向用户确认: “准备发布到 r/{SUBREDDIT}。帖子标题:‘{TITLE}’。现在发布吗?”

只有在获得明确确认后才能继续。

发布后:

  1. 记录响应中的帖子 URL
  2. 如果已起草首条评论,立即使用同一个 MCP 服务和返回的帖子 ID 发布该评论

如果发布失败(403、429 或其他错误): 提供草稿供用户手动提交。告知用户:“直接发布失败([error code])。这是供你手动提交的帖子。请将标题和正文复制粘贴到 reddit.com/r/{SUBREDDIT}/submit。”


步骤 9:呈现输出

## Reddit Post: r/{SUBREDDIT}

### Title
{title}

### Body
{body}

### First Comment (post immediately after)
{first comment, if applicable}

---

### Submission Notes
- Post type: {self/link}
- Best time to post: {peak hours for this subreddit: weekday mornings US time for most tech subreddits}
- After posting: Reply to every comment in the first hour: early engagement signals quality to the algorithm
- Karma note: {If account is new, note that some subreddits require minimum karma before posting}

如果帖子已通过 Composio 提交,请将输出块替换为:

Post submitted: {reddit_post_url}

评论

支持 Markdown