1实现原理 · 为什么它能做到
整个 skill 零自有代码:能力全部由 Playwright MCP 的浏览器工具 + SKILL.md 的流程指令构成,仓库里唯一的『运行时』是 .mcp/settings.json 声明的 MCP server。
{ "playwright": { "command": "npx", "args": [ "@playwright/mcp@latest" ] } }
主流程是写死的 8 步状态机:检查当日 tracking 文件 → 选 subreddit → 浏览新帖选帖 → 深读帖与已有评论 → 写评论 → 16 项个性化复审循环 → 发帖 → 判线索 + 记账。
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
配额与节奏由文档硬编码:每个 subreddit 每日 3 条、同 subreddit 评论间隔至少 5-10 分钟,批量模式总配额 24 条(8×3),并规定了限流/掉登录的处置。
- Total 24 (8 subreddits × 3) - Subtract today's written comments - Remaining quota = 24 - Today's written comments
『像人写的』靠一份 16 项个性化清单 + 8 种句式模板 + 长度分布强制配额来逼近,而不是靠模型自由发挥。
### 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
内容真实性靠两条硬约束兜住:必须先深读原帖(禁止只看关键词判断),若评论涉及对方站点则必须真的用浏览器访问后再写反馈。
• 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
商业目的内建:Step 7 按 leads/reddit.md 的『Lead Selection Criteria』把发帖人判成高/中/低相关线索并计入线索表;resources/product.md 提供产品话术模板(价值主张、痛点、竞品对比、自然推广措辞)。
## Lead Selection Criteria ### High Relevance - Directly mentions your product category - Complains about problems your product solves
token 纪律写进 skill:调用 MCP 只传最少指令、直接按 URL 导航而不是点元素、且明令禁止截图(快照用无障碍树)。
**⚠️ 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)
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| package | @playwright/mcp |
| network | Reddit(列帖与导航) |
| network | Reddit(rising 列表) |
| network | 帖子内 OP 提供的外部站点(被要求真访问以给出实证反馈) |
| package | claude(npm,^0.1.1) |
4管控建议与判定依据
- 本地凭据 / 浏览器配置: 读取用户登录 Cookie/会话/密钥环: 隐式:Playwright MCP 以本机持久化浏览器 profile 驱动,Reddit 登录态(浏览器 cookie/会话)被复用;SETUP.m
- scripts/: 执行本地脚本或命令: 仓库本身无脚本(全仓为 md/json/png);运行时由宿主启动 MCP server:npx @playwright/mcp@latest(.mc
- scripts/ 或 SKILL.md: 声明动态安装外部语言包依赖
- 网络端点: 声明外部网络访问: https://www.reddit.com/r/{subreddit}/new|rising/(列帖)
- 本地工作目录: 文件读写与工件输出: tracking/reddit/YYYY-MM-DD.md(创建当日文件并追加:活动表 + 评论全文 + permalink)
5第二遍独立确认
- [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 以『隐式复用浏览器登录态』如实记录,而非直报『无』。
6结论
31277b2a576dd188…