auto-commenter
A skill for writing natural and valuable comments on Reddit communities. Includes the complete workflow from subreddit exploration, comment writing, review, posting, to tracking.
1How It Works & Mechanism
The entire skill contains zero custom code: all capabilities are composed of Playwright MCP browser tools and procedural instructions in SKILL.md. The only 'runtime' in the repository is the MCP server declared in .mcp/settings.json.
{ "playwright": { "command": "npx", "args": [ "@playwright/mcp@latest" ] } }
The main workflow is a hardcoded 8-step state machine: Check today's tracking file → Select subreddit → Browse new posts to select a target → Deep read post and existing comments → Write comment → 16-point personalization review loop → Post comment → Qualify leads + log activity.
1. Check today's date file in tracking/reddit/ folder → File name: YYYY-MM-DD.md (e.g., 2026-01-12.md) → If file doesn't exist, create new one referencing template.md
Quotas and pacing are hardcoded in the documentation: 3 comments per subreddit per day, at least 5-10 minutes between comments in the same subreddit, a total batch mode quota of 24 comments (8×3), and defined procedures for rate limits and expired sessions.
- Total 24 (8 subreddits × 3) - Subtract today's written comments - Remaining quota = 24 - Today's written comments
Achieving 'human-like writing' relies on a 16-item personalization checklist + 8 sentence pattern templates + mandatory length distribution quotas, rather than unconstrained model generation.
### Length Distribution (Required) For daily activity (e.g., 24 comments): - **Short (1-2 sentences)**: Minimum 30% = 7-8 - **Medium (3-5 sentences)**: About 50% = 12 - **Long (6+ sentences)**: Maximum 20% = 4-5
Content authenticity is grounded in two hard constraints: the original post must be read thoroughly (judging by keywords alone is prohibited), and if a comment references the poster's website, the agent must actually visit it via the browser before writing feedback.
• Visit actual site with browser_navigate(provided link) • Check UI/UX with browser_snapshot() • Write feedback based ONLY on what you actually saw • Absolutely NO speculative feedback on things you didn't see
Commercial intent is built-in: Step 7 evaluates posters as high/medium/low relevant leads based on 'Lead Selection Criteria' in leads/reddit.md and logs them into a lead sheet; resources/product.md provides product messaging templates (value proposition, pain points, competitor comparisons, natural promotional phrasing).
## Lead Selection Criteria ### High Relevance - Directly mentions your product category - Complains about problems your product solves
Token discipline is codified into the skill: MCP calls pass minimal instructions, direct URL navigation is used instead of element clicking, and screenshots are strictly prohibited (accessibility trees are used for snapshots).
**⚠️ No screenshots**: Do NOT use `browser_take_screenshot`. Always use only `browser_snapshot` for page verification (accessibility tree is sufficient and doesn't save files)
2Core Capabilities
3External Dependencies
| Kind | Dependency / Endpoint |
|---|---|
| package | @playwright/mcp |
| network | Reddit(列帖与导航) |
| network | Reddit(rising 列表) |
| network | 帖子内 OP 提供的外部站点(被要求真访问以给出实证反馈) |
| package | claude(npm,^0.1.1) |
4Recommended Governance & Evidence
- 本地凭据 / 浏览器配置: Reads user login cookies/sessions/keychains: Implicit: Playwright MCP operates with a persistent local browser profile, reusing the Reddit login state (browser cookies/session); SETUP.md
- scripts/: Executes local scripts or commands: The repository contains no scripts (entire repo consists of md/json/png); runtime requires the host to launch the MCP server: npx @playwright/mcp@latest (.mcp/settings.json)
- scripts/ 或 SKILL.md: Declares dynamic installation of external language package dependencies
- 网络端点: Declares external network access: https://www.reddit.com/r/{subreddit}/new|rising/ (listing posts)
- 本地工作目录: File read/write and artifact output: tracking/reddit/YYYY-MM-DD.md (creates daily file and appends: activity table + full comment text + permalink)
5Second-Pass Verification
- [ok] 仓库零脚本、能力来自 Playwright MCP — git ls-tree -r 全量仅 .claude/skills/reddit-commenter/{SKILL.md,BATCH.md,resources/*.md}、README/SETUP/QUICK_REFERENCE/CONTRIBUTING/CHANGES/LICENSE、.mcp/settings.json、package.json(-lock)、leads/reddit.md、tracking/reddit/template.md、assets/og_image.png、.github 模板;无任何可执行脚本。
- [ok] MCP server 声明与 SKILL.md 工具名一致 — .mcp/settings.json 注册 playwright/@playwright/mcp@latest;SKILL.md 使用 browser_navigate/browser_snapshot/browser_click/browser_type/browser_wait_for,并显式禁用 browser_take_screenshot,SETUP.md 另确认 'This installs the Playwright MCP server.'。
- [ok] 每社区每日 3 条 + 5-10 分钟间隔 — SKILL.md Step 1 'Check subreddits under daily limit (3)'、'Check last comment time (minimum 5-10 minute intervals)';BATCH.md 配额公式 24=8×3 与 '[4] ... (wait 5-15 minutes)' 存在(两文件对等待区间的措辞略有差异:5-10 vs 5-15)。
- [ok] 16 项个性化清单与 8 种句式模板 — personalization_reddit.md 内 '## Personalization Checklist (16 Items)' 表逐项 1-16(含 #14 AI detection prevention、#16 Site verification),'## 8 Style Patterns' 1-8 节均存在;SKILL.md Step 5 要求逐项检查。
- [ok] 反 AI 检测 / 反重复结构 — 原文 '## Avoid Repetitive Structure (CRITICAL)'、'Repeating this structure makes it look AI-generated'、'## AI-Like Comment Prevention (CRITICAL)' 与长度分布配额均逐字存在。
- [ok] 『先看帖再写』与『真访问站点』两条真实性约束 — Step 3 全段(含 'Absolutely NO speculative feedback on things you didn't see')与 Cautions 第 6 条一致,无夸大。
- [ok] 无凭证/密钥硬编码 — 全仓关键词扫描仅 3 处无关命中(MCP token 优化、Login Required、CONTRIBUTING 的 credential 讨论);无 .env、无 API key 常量。
- [discrepancy] 登录态来源(凭证面)最终定性 — 第一遍曾想写『无凭证读取』,第二遍修正:skill 文件确实不读密钥,但 SETUP.md 要求账号已在本机浏览器登录、BATCH.md 专门处理 'Login session expired',说明运行时依赖浏览器登录态(cookie 级)。故按『凭证据实接触』定档 orange,并在 credential_reads 以『隐式复用浏览器登录态』如实记录,而非直报『无』。
6Verdict & Scenarios
31277b2a576dd188…