本文へ移動
cccskills
無料GitHub で公開

reddit-post

Post to Reddit using AppleScript Chrome control. Use when user wants to post to Reddit, share on subreddits, or promote open source projects on Reddit. Triggers on "post to reddit", "share on reddit", "reddit post", "submit to subreddit", or any Reddit posting request.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md6.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Reddit Posting Skill (AppleScript Chrome Control)

Post to Reddit by controlling the user's real Chrome via AppleScript. No Playwright, no Selenium, no API tokens.


How It Works

Claude Code → osascript → Chrome (real browser, logged in) → Reddit /api/submit
  • Same-origin fetch with cookies → undetectable
  • Reddit's /api/submit endpoint for text/link posts
  • Modhash from /api/me.json for CSRF protection

Prerequisites

  • macOS only (AppleScript is a macOS technology)
  • Chrome: View → Developer → Allow JavaScript from Apple Events (restart Chrome after enabling)
  • User logged into Reddit in Chrome

Method Detection (Run First)

WINDOWS=$(osascript -e 'tell application "Google Chrome" to return count of windows' 2>/dev/null)
if [ "$WINDOWS" = "0" ] || [ -z "$WINDOWS" ]; then
    echo "METHOD 2 (System Events + Console)"
else
    echo "METHOD 1 (execute javascript)"
fi

See reddit-cultivate skill for full Method 1 vs Method 2 details.


Posting Workflow

Step 1: Get 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'

Step 2: Submit Post

Navigate Chrome to reddit.com first (same-origin requirement), then submit:

(async()=>{
  try {
    let body = new URLSearchParams({
      sr: "SideProject",           // subreddit name (no r/ prefix)
      kind: "self",                // "self" for text, "link" for URL
      title: "Your post title",
      text: "Your post body with **markdown** support",
      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;
  }
})()

For link posts, change:

kind: "link",
url: "https://github.com/your/repo",  // instead of text

Step 3: Extract Post Link

The response contains result.json.data.url — the direct link to the new post.

Step 4: Add Flair (if required)

Some subreddits require flair. After posting, use:

(async()=>{
  try {
    // First get available flairs
    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;
  }
})()

Then apply 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;
  }
})()

Step 5: Session Summary

Always end with the post link:

SubTitlePost Link
r/SideProject"Your title"https://www.reddit.com/r/SideProject/comments/abc123/...

Spam Filter Avoidance

Words to AVOID in titles/body

AvoidUse Instead
crawl, crawled, crawlingcompiled, cataloged, indexed, collected
scrape, scrapinggathered, extracted, retrieved
bot, automatedtool, script, program
free (overused)open source, MIT licensed
hack, hackstips, techniques, methods

Content Triggers to Avoid

  • Multiple external links (max 1-2)
  • URL shorteners (bit.ly, tinyurl)
  • New account + promotional content
  • Same content across multiple subreddits quickly
  • Excessive self-promotion language

Best Subreddits for Open Source Projects

SubredditMembersBest ForNotes
r/coolgithubprojects60KGitHub reposDesigned for this!
r/SideProject453KSide projectsVery welcoming
r/opensource100K+Open source toolsTechnical audience
r/programming6M+Dev toolsHigh competition
r/Python1.5M+Python toolsActive community
r/webdev2M+Web tools"Showoff Saturday" only
r/selfhosted400K+Self-hosted toolsGreat engagement

Best Times to Post (US Eastern Time)

DayBest Time
Monday6-8 AM
Tuesday7-9 AM
Wednesday8-10 AM
Thursday7-9 AM
Friday6-8 AM
Saturday7-9 AM
Sunday8-10 AM

Post 30 minutes BEFORE peak times for momentum building.


Post Templates

Open Source Project Announcement

Title: I built [PROJECT_NAME] - [one-line description] (open source)

Body:
Hey everyone,

I created [PROJECT_NAME] to solve [PROBLEM].

**What it does:**
- Feature 1
- Feature 2
- Feature 3

**Tech stack:** [Languages/frameworks]

**Links:**
- GitHub: [single link]

Happy to answer any questions!

Tool/Resource Share

Title: [TOOL_NAME]: [what it does] - free and open source

Body:
Built this because [reason/pain point].

**Features:**
- [List 3-5 key features]

**How to use:**
[Brief code example or instructions]

GitHub: [link]

Feedback welcome!

Cross-Posting Strategy

Stagger posts across subreddits for maximum reach:

  1. Day 1: Primary subreddit (most relevant)
  2. Day 2-3: Secondary subreddit (different audience)
  3. Day 4-5: General subreddit (r/SideProject, etc.)

Never post to multiple subreddits on the same day — triggers spam detection.


Error Recovery

IssueSolution
"Post removed by filters"Rewrite without trigger words, reduce links
"You're doing that too much"Wait 10-15 min, need more karma
"This community requires flair"Use /api/selectflair after posting
"Title too long"Keep under 300 characters
Post not visibleCheck if shadowbanned: profile in incognito
Modhash expiredRe-fetch from /api/me.json

Why AppleScript (Not Playwright)

ToolProblem
Playwrightnavigator.webdriver=true, detected by Reddit
SeleniumSame detection issue
curl + APIIP blocked after few requests
AppleScriptControls real Chrome, undetectable, cookies included

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Turn a KOL roster + subreddit brand-fit analysis into a deployable creator network. Splits creators into KOL (authority) and KOC (grassroots) layers, matches each to a main + secondary subreddits by real gear/shooting-type ∩ community fit, and emits an account×subreddit deployment_matrix (with a ≤3-per-sub ceiling + no-cross-interaction rule) plus per-creator persona_cards. Route A disclosed-compliance baked into every card (FTC disclosure required on any material connection). Consumes reddit-kol-finder's kol_roster.json natively. READ-ONLY, deterministic, no LLM key needed.

日本語の概要は準備中です。原文の説明を表示しています。

PHY041/claude-skill-reddit452026年7月4日 更新

Reddit account cultivation for indie developers. Uses AppleScript to control real Chrome — undetectable by anti-bot systems. Checks karma, finds rising posts, drafts comments, and posts directly. Triggers on "/reddit-cultivate", "check my reddit", "reddit maintenance", "find reddit opportunities", "build reddit karma".

日本語の概要は準備中です。原文の説明を表示しています。

PHY041/claude-skill-reddit452026年7月4日 更新

深挖一组 subreddit 的"社区研究"技能。给一个品牌或项目,先摸清相关(自家品牌+竞品)的 subreddit:爬规则原文、爬高赞帖逐帖学、找共性、产出"能不能提品牌/能不能发链接/要不要披露"的逐社区政策矩阵。用于任何新品牌/新项目上 Reddit 前的社区尽调。触发词:"研究 subreddit""摸清社区规则""Reddit 社区尽调""subreddit deep research""某品牌相关的 sub"。

日本語の概要は準備中です。原文の説明を表示しています。

PHY041/claude-skill-reddit452026年7月4日 更新

PHY041 のスキルをすべて見る

このスキルの問題を報告する