Community写作与编辑github.com

Varnan-Tech/opendirectory

Writes and optionally posts a Reddit post for any subreddit, following that subreddit's specific culture and rules. Drafts a title, body, and first comment using the 90/10 rule. Uses Composio Reddit MCP for optional direct posting. Use when asked to post on Reddit, draft a Reddit post, share a project on Reddit, write a subreddit post, or launch something on Reddit. Trigger when a user says "post this on Reddit", "write a Reddit post for r/...", "help me launch on Reddit", "draft something for Reddit", or "how do I share this on Reddit without getting banned".

opendirectory 是什么?

opendirectory is a Claude Code agent skill that writes and optionally posts a Reddit post for any subreddit, following that subreddit's specific culture and rules. Drafts a title, body, and first comment using the 90/10 rule. Uses Composio Reddit MCP for optional direct posting. Use when asked to post on Reddit, draft a Reddit post, share a project on Reddit, write a subreddit post, or launch something on Reddit. Trigger when a user says "post this on Reddit", "write a Reddit post for r/...", "help me launch on Reddit", "draft something for Reddit", or "how do I share this on Reddit without getting banned".

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Varnan-Tech/opendirectory/tree/main/skills/reddit-post-engine

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Reddit Post Engine

Draft a Reddit post that fits the subreddit's culture. Optionally post it via Composio.


Critical rule: Never post without confirming subreddit rules. Never include product links in the body: put them in the first comment only if appropriate. Follow the 90/10 rule: your post should add value independent of any product mention.

Anti-spam rule: Posts that are primarily promotional will be removed and may get the account banned. The goal is to contribute to the community first. Product mentions go in the first comment, and only if the subreddit allows self-promotion.


Step 1: Setup Check

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"

If GEMINI_API_KEY is missing: Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com. Add it to your .env file."

If Composio Reddit MCP is not connected: Continue. The skill will draft posts but skip the posting step. Inform the user: "Composio Reddit MCP not connected: I'll draft your post for manual submission. To enable direct posting, see the setup instructions in README.md."


Step 2: Gather Context

You need:

  • Target subreddit (e.g., r/devops, r/startups, r/SideProject)
  • What you are sharing (project, article, question, discussion, tool)
  • One-sentence description of what it does
  • Why it's relevant to this specific subreddit's community
  • Whether you want a self-post (text) or link post

If any of these are missing, ask in one message:

"To draft your Reddit post, I need:

  1. Which subreddit? (e.g., r/devops, r/startups)
  2. What are you sharing? (project, article, tool, question)
  3. What does it do? (one sentence, technical)
  4. Why does this subreddit care about it specifically?"

Step 3: Fetch Subreddit Rules and Culture

Fetch the subreddit's rules:

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()
"

Fetch recent top posts to understand tone and style:

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]}')
"

Note patterns in the top posts:

  • Are titles questions or statements?
  • Do they lead with the technology or the outcome?
  • Are they personal ("I built...") or impersonal ("Tool for...")?
  • What format gets the most engagement in this subreddit?

Check subreddit sidebar for posting rules:

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))
"

Identify the subreddit type:

TypeExamplesPost style
Technical practitionerr/devops, r/sysadmin, r/ExperiencedDevsTechnical specifics, no fluff, "I did X and learned Y"
Startup/builderr/startups, r/SideProject, r/indiehackersPersonal story, metrics, lessons learned
General techr/programming, r/technologyNews angle, discussion hook, controversial take
Careerr/cscareerquestions, r/ITCareerQuestionsQuestion format, specific scenario, ask for experience
Niche toolr/vim, r/rust, r/golangDeep technical content, code examples, benchmarks

Use the fetched rules and top posts to determine which style applies.


Step 4: Draft the Post with Gemini

Write the post content to a temp file and call 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'])"

Replace POST_DETAILS_HERE with:

  • Subreddit name and type
  • Top post patterns observed
  • What is being shared and why it's relevant
  • Key technical details
  • Builder's honest motivation

Step 5: Draft the First Comment

If the user has a product link or additional context to share, draft a first comment to post immediately after the post goes live.

The first comment serves two purposes:

  1. Provide the link (which keeps the body link-free and feels less promotional)
  2. Add context that would be too promotional in the post body

First comment rules:

  • Post this as the first reply to your own post, immediately after it goes live
  • Keep it under 100 words
  • Example format: "Link for those who want to check it out: [URL]: also happy to answer questions about [specific technical thing mentioned in the post]."
  • Only include the first comment if the subreddit allows self-promotion in comments
  • If the subreddit has a "No self-promotion" rule, omit the link entirely

Step 6: Self-QA

Check the draft before presenting:

Structure:

  • Title does not exceed 300 characters
  • No links appear in the post body
  • Post opens in first person (for project/experience posts)
  • At least one specific technical detail or concrete number included
  • Post matches the tone of top posts observed in this subreddit (noted in Step 3)
  • Subreddit rules from Step 3 are not violated

Claude-ism detection: scan for these vocabulary categories and remove all instances:

CategoryWords to remove
Filler intensifiersincredibly, absolutely, certainly, definitely, essentially, fundamentally, literally, particularly, quite, rather, really, significantly, simply, truly, ultimately, very
AI hedgingI should note, it's worth noting, it's important to note, as mentioned, as I noted
Hype descriptorsgame-changing, revolutionary, powerful, robust, seamless, innovative, best-in-class, cutting-edge, groundbreaking, remarkable
Throat-clearingIn conclusion, in summary, to summarize, overall, first and foremost, last but not least
Unnecessary connectorsFurthermore, moreover, additionally, however (at sentence start), thus, hence, thereby
AI tellsThis ensures that, This allows for, This helps to, This enables, delve, utilize, leverage, foster

If any appear: replace with a specific noun, verb, or number. "Very fast" becomes "runs in 12ms". "Powerful tool" becomes what it actually does.

Instant-delete phrase check: these patterns trigger Reddit spam filters or moderator removal:

  • Any sentence that reads as an advertisement ("Try [Product] today", "Sign up now", "Get started free")
  • Phrases that imply you are not the builder ("I came across this great tool", "I found this amazing product")
  • First-person possession of users ("our users", "our customers") in subreddits where you have not established community presence
  • "I made X and you can use it to..." followed immediately by a link (promotional structure)
  • Superlatives without qualification ("the best way to...", "the only tool that...")
  • External links in post body (use first comment only)

If any instant-delete phrases appear: revise the sentence entirely, not just swap words.


Step 7: Adversarial Review

Before presenting the final draft, run a 3-persona review. Each persona reads the post and finds ONE specific problem, quoting the exact text that triggers it.

Persona 1: The Skeptical Practitioner This person has been in r/{SUBREDDIT} for years and has seen hundreds of product launches disguised as posts. Their read:

  • Does any sentence feel promotional even if not explicitly selling?
  • Does the post reveal genuine knowledge of the community's problems, or does it just talk about the product?
  • Is there any claim that a practitioner would roll their eyes at?

State the one specific line they would flag and why.

Persona 2: The Moderator This person enforces the rules fetched in Step 3. Their read:

  • Does the post technically comply with subreddit rules?
  • Is the ratio of self-promotion to community contribution acceptable?
  • Would they have seen this exact post structure removed before?

State the one specific rule that is at risk of violation, or confirm it is clean.

Persona 3: The Target Reader This is a non-builder community member who matches the subreddit's demographic. Their read:

  • Would they upvote this post even if they never use the product?
  • Is there a takeaway they can apply even if they skip the link in the first comment?
  • Does the opening sentence make them want to keep reading?

State the one thing they would stop reading at, or confirm the post holds their attention.

After all three personas report: apply any fixes. If no persona found a problem, state "Adversarial review: clean."


Step 8: Post via Composio (Optional)

If Composio Reddit MCP is connected and the user confirms they want to post:

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

Before posting, confirm with the user: "Ready to post to r/{SUBREDDIT}. Post title: '{TITLE}'. Shall I go ahead?"

Only proceed after explicit confirmation.

After posting:

  1. Note the post URL from the response
  2. If a first comment was drafted, post it immediately using the same MCP with the returned post ID

If posting fails (403, 429, or other error): Present the draft for manual submission. Tell the user: "Direct posting failed ([error code]). Here is your post for manual submission. Copy-paste the title and body at reddit.com/r/{SUBREDDIT}/submit."


Step 9: Present Output

## 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}

If the post was already submitted via Composio, replace the output block with:

Post submitted: {reddit_post_url}

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Varnan-Tech/opendirectory

Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.

Varnan-Tech/opendirectory

World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.

Varnan-Tech/opendirectory

Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.

Varnan-Tech/opendirectory

Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.

Varnan-Tech/opendirectory

Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.

Varnan-Tech/opendirectory

Give it your product URL or description. It finds your top 5 competitors, runs three-track PR research across all of them (editorial, podcasts, communities), identifies which channels appear most frequently, looks up the journalist or host for each, and returns a tiered outreach list with story angles and ready-to-send cold pitch drafts tailored to your product. Use when asked to find PR opportunities, discover where competitors got featured, build a media outreach list, find which journalists cover my space, or get pitch templates for press coverage.

Varnan-Tech/opendirectory

Generate high-converting, deep-dive growth case studies in MDX format. Use this skill when asked to write a case study or blog post about a company's growth, tech stack, or product-led strategy. It handles the full pipeline (researching the company via Tavily, generating a 16:9 cover image, quality checking the draft, uploading assets to cloud storage, and pushing directly to the target repository).

Varnan-Tech/opendirectory

Scans your project for outdated npm, pip, Cargo, Go, or Ruby packages. Runs a CVE security audit. Fetches changelogs, summarizes breaking changes with Gemini, and opens one PR per risk group (patch, minor, major). Includes Diagnosis Mode for install conflicts. Use when asked to update dependencies, check for outdated packages, open dependency PRs, scan for package updates, audit for CVEs, or flag breaking changes in upgrades. Trigger when a user says "check for outdated packages", "update my dependencies", "open PRs for dependency updates", "scan for CVEs", or "which packages need upgrading".

Varnan-Tech/opendirectory

Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture. Uses graphify to build a knowledge graph first, then writes accurate docs from it. Use when asked to write docs, generate a README, document an API, update stale docs, create an API reference from code, add an architecture section, or document a project in any language. Trigger when a user says their docs are missing, outdated, or wants to document their codebase without writing it manually.

Varnan-Tech/opendirectory

Evaluates expired domain candidates against a target niche, scores them by topical relevance, historical activity level, and history cleanliness, then outputs a ranked shortlist with explainable reasoning and risk flags.

Varnan-Tech/opendirectory

Brutally honest developer-experience audit for a GitHub repo. Scores 10 DX dimensions (time-to-first-success, README clarity, visual proof, install, quick-start, docs, examples, community, trust, marketing), writes a shareable roast in the requested tone (brutal/honest/kind), produces a prioritized action plan ranked by impact × effort, and sketches an ideal README. Trigger when user says "roast my repo", "audit my README", "dx audit", "developer experience review", "score my GitHub project", "before launch checklist", or "make my repo shareable".

Varnan-Tech/opendirectory

Drafts and designs a complete HTML email newsletter from a topic or content brief. Outputs paste-ready HTML for Loops, Mailchimp, Beehiiv, Resend, or any standard email platform. Includes subject line options and plain-text fallback. Trigger when a user says "write a newsletter", "draft an email newsletter", "create an HTML email", "design an email for my subscribers", or "write a newsletter about [topic]".

Varnan-Tech/opendirectory

Takes a GitHub PR URL or the current branch and writes a plain-English explanation of what it does and why, then posts it as a PR comment. Use when asked to explain a PR, summarize a pull request, write a plain-English description of a PR, add a summary comment to a PR, or understand what a PR changes. Trigger when a user says "explain this PR", "summarize this pull request", "what does this PR do", "add a comment explaining the PR", or shares a GitHub PR URL and asks what it does.

Varnan-Tech/opendirectory

Audit how often LLMs recommend your brand vs competitors and generate a GEO action plan.

Varnan-Tech/opendirectory

Takes a competitor's public GitHub repo URL, fetches their open issues via the GitHub REST API, filters noise locally, clusters issues into 6 demand categories, computes a demand score per issue and per cluster, and outputs a ranked demand gap report with a GTM messaging brief. Use when asked to scan a competitor's GitHub issues, find what their users are begging for, turn GitHub complaints into product positioning, identify competitor feature gaps, or generate messaging from real user demand. Trigger when a user says "scan competitor issues", "what are users asking for on X repo", "find demand gaps in Y", "turn GitHub issues into messaging", or "what should I build based on competitor complaints".

Varnan-Tech/opendirectory

Find recurring confusion in your repo's GitHub Discussions, rank it by urgency, and draft the actual docs fixes and content angles — with verbatim community quotes and source links as evidence.

Varnan-Tech/opendirectory

SEO keyword research workflow for blog generation using Google Trends data. Use when writing blog posts, planning content calendars, or optimizing articles for search engines. Finds breakout keywords, builds content structure, and generates SEO-optimized blog outlines targeting tech and developer audiences.

Varnan-Tech/opendirectory

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Varnan-Tech/opendirectory

Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6. 1080×1080px default, 5 style presets, highlight annotations. Trigger when user says "create a chart", "visualize data", "make a bar chart", "line graph", "pie chart", "data visualization", "chart this data", "plot", "graph", or "visualize these numbers".

Varnan-Tech/opendirectory

Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.

相关技能