运行时依赖
安装命令
点击复制技能文档
Reddit 发帖技能(AppleScript Chrome 控制) 通过 AppleScript 控制用户的真实 Chrome 浏览器来发布 Reddit 帖子。无需 Playwright、Selenium 或 API 令牌。
工作原理 Claude 代码 → osascript → Chrome(真实浏览器,已登录)→ Reddit /api/submit 同源 fetch 带 cookie → 无法检测的 Reddit 的 /api/submit 端点用于文本/链接帖子 从 /api/me.json 获取 Modhash 用于 CSRF 保护
先决条件 仅限 macOS(AppleScript 是 macOS 技术) Chrome:查看 → 开发者 → 允许从 Apple 事件执行 JavaScript(启用后重启 Chrome) 用户已在 Chrome 中登录 Reddit
方法检测(首先运行) WINDOWS=$(osascript -e 'tell application "Google Chrome" to return count of windows' 2>/dev/null) if [ "$WINDOWS" = "0" ] || [ -z "$WINDOWS" ]; then echo "方法 2(系统事件 + 控制台)" else echo "方法 1(执行 JavaScript)" fi 请参阅 reddit-cultivate 技能以获取有关方法 1 和方法 2 的完整详细信息。
发布工作流 步骤 1:获取 Modhash osascript -e 'tell application "Google Chrome" to tell active tab of first window to execute javascript "fetch(\"/api/me.json\",{credentials:\"include\"}).then(r=>r.json()).then(d=>{document.title=\"UH:\"+d.data.modhash})"' sleep 2 osascript -e 'tell application "Google Chrome" to return title of active tab of first window'
步骤 2:提交帖子 导航到 reddit.com,然后提交: (async()=>{ try { let body = new URLSearchParams({ sr: "SideProject", // 子版块名称(无 r/ 前缀) kind: "self", // "self" 为文本,"link" 为 URL title: "您的帖子标题", text: "您的帖子正文,支持 markdown", uh: "MODHASH_HERE", api_type: "json", resubmit: "true" }); let resp = await fetch("/api/submit", { method: "POST", credentials: "include", headers: {"Content-Type": "application/x-www-form-urlencoded"}, body: body.toString() }); let result = await resp.json(); document.title = "POSTED:" + JSON.stringify(result); } catch(e) { document.title = "ERR:" + e.message; } })() 对于链接帖子,请更改:kind: "link", url: "https://github.com/your/repo", // 代替文本
步骤 3:提取帖子链接 响应包含 result.json.data.url — 新帖子的直接链接。
步骤 4:添加 Flair(如果需要) 某些子版块需要 Flair。在发布后使用: (async()=>{ try { // 首先获取可用的 Flair let resp = await fetch("/r/SUBREDDIT/api/link_flair_v2", {credentials: "include"}); let flairs = await resp.json(); document.title = "FLAIRS:" + JSON.stringify(flairs.map(f => ({id: f.id, text: f.text}))); } catch(e) { document.title = "ERR:" + e.message; } })() 然后应用 Flair: (async()=>{ try { let body = new URLSearchParams({ link: "t3_POST_ID", flair_template_id: "FLAIR_ID", uh: "MODHASH" }); await fetch("/api/selectflair", { method: "POST", credentials: "include", headers: {"Content-Type": "application/x-www-form-urlencoded"}, body: body.toString() }); document.title = "FLAIR_SET"; } catch(e) { document.title = "ERR:" + e.message; } })()
步骤 5:会话摘要 始终以帖子链接结束: 子标题 帖子链接 r/SideProject "您的标题" https://www.reddit.com/r/SideProject/comments/abc123/...
垃圾邮件过滤器避免 标题/正文中要避免的词语 避免 使用代替 crawl, crawled, crawling 编译, 编目, 索引, 收集 scrape, scraping 收集, 提取, 检索 bot, automated tool, script, program 免费(过度使用) 开源, MIT 许可 hack, hacks 技巧, 方法, 技术 Content 触发器避免 多个外部链接(最多 1-2 个) URL 缩短器(bit.ly, tinyurl) 新帐户 + 推广内容 同一内容在多个子版块中快速发布 过度自我推广语言
适合开源项目的最佳子版块 子版块 成员 最适合 说明 r/coolgithubprojects 60K GitHub 仓库 为此而设计! r/SideProject 453K 侧项目 非常欢迎 r/opensource 100K+ 开源工具 技术受众 r/programming 6M+ 开发工具 竞争激烈 r/Python 1.5M+ Python 工具 活跃社区 r/webdev 2M+ 网页工具 仅限“展示星期六” r/selfhosted 400K+ 自托管工具 互动性好
最佳发布时间(美国东部时间) 星期 最佳时间 星期一 6-8 AM 星期二 7-9 AM 星期三 8-10 AM 星期四 7-9 AM 星期五 6-8 AM 星期六 7-9 AM 星期日 8-10 AM 发布前 30 分钟发布,以便建立势头。
发布模板 开源项目公告 标题:我构建了 [PROJECT_NAME] - [一行描述](开源) 正文:大家好,我创建了 [PROJECT_NAME] 来解决 [问题]。 它的功能: - 功能 1 - 功能 2 - 功能 3 技术栈: [语言/框架] 链接: - GitHub:[单个链接] 愿意回答任何问题!
工具/资源共享 标题:[工具名称]:[它的功能] - 免费开源 正文:我构建了这个工具,因为 [原因/痛点]。 **