Community寫作與編輯github.com

Reddit 發文引擎

根據特定子版的文化與規則,撰寫並可選擇直接發佈 Reddit 貼文。使用 90/10 法則擬定標題、內文與首則留言,並可透過 Composio Reddit MCP 選擇性直接發佈。

Reddit 發文引擎 是什麼?

此技能可自動化 Reddit 貼文撰寫與發佈流程,確保內容符合目標子版的文化、規則與最佳實踐。它透過 API 擷取子版規則、近期熱門貼文風格與社群類別,並使用 Gemini AI 生成符合該版語氣的貼文。系統會強制執行反垃圾郵件規則,例如將商品連結限制在首則留言、避免過度推廣的語言,並進行詳細的自我品質檢查與抗辯審查。此技能支援所有子版,並可選擇透過 Composio Reddit MCP 直接發佈;若無 MCP 連線,則會產出供手動張貼的最終草稿,非常適合開發者、創業者或任何想在 Reddit 上分享專案卻不違反社群規範的使用者。

相容平台✓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 發文引擎 是做什麼的?

撰寫符合子版文化的 Reddit 貼文。可選擇透過 Composio 發佈。


關鍵規則: 未確認子版規則前,絕不發佈。絕不在內文中包含產品連結:若有需要,僅將連結放在首則留言。遵循 90/10 法則:您的貼文應在提及任何產品之前,先提供獨立價值。

反垃圾郵件規則: 主要為推銷性質的貼文將被移除,並可能導致帳號被停權。目標是優先貢獻社群。產品提及應放在首則留言,且僅在該子版允許自我推廣時才這麼做。


步驟 1:環境檢查

echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
# 檢查 Composio Reddit MCP 是否已連線
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP: 未連線"

如果缺少 GEMINI_API_KEY: 停止。告知使用者:「需要 GEMINI_API_KEY。請前往 aistudio.google.com 取得。並將其加入您的 .env 檔案。」

如果 Composio Reddit MCP 未連線: 繼續執行。此技能會產生貼文草稿,但會跳過發佈步驟。告知使用者:「Composio Reddit MCP 未連線:我將為您擬定貼文以供手動張貼。若要啟用直接發佈功能,請參閱 README.md 中的設定說明。」


步驟 2:收集情境

您需要:

  • 目標子版(例如 r/devops、r/startups、r/SideProject)
  • 您要分享的內容(專案、文章、問題、討論、工具)
  • 用一句話描述它的功能
  • 它與這個特定子版社群相關的原因
  • 您想要的是文字貼文還是連結貼文

如果缺少任何一項,在單一訊息中詢問:

「要為您擬定 Reddit 貼文,我需要:

  1. 哪個子版?(例如 r/devops、r/startups)
  2. 您要分享什麼?(專案、文章、工具、問題)
  3. 它的功能是什麼?(一句話,具技術性)
  4. 為什麼這個子版會特別關心它?」

步驟 3:獲取子版規則與文化

獲取子版規則:

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'規則: {r.get(\"short_name\", \"\")}')
    print(f'詳情: {r.get(\"description\", \"\")[:200]}')
    print()
"

獲取近期熱門貼文以了解語氣與風格:

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'分數: {pd[\"score\"]} | 標題: {pd[\"title\"][:100]}')
"

注意熱門貼文的模式:

  • 標題是問句還是陳述句?
  • 它們是以技術還是成果開頭?
  • 它們是個人經驗(「我建立了...」)還是客觀描述(「用於...的工具」)?
  • 在這個子版中,哪種格式獲得最多互動?

查看子版側邊欄的發文規則:

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('公開描述:', data.get('public_description', '')[:300])
print('訂閱人數:', data.get('subscribers', 0))
"

辨識子版類型:

類型範例發文風格
技術實踐者r/devops, r/sysadmin, r/ExperiencedDevs技術細節,不廢話,「我做了 X 並學到了 Y」
創業/建造者r/startups, r/SideProject, r/indiehackers個人故事、數據、學到的教訓
一般科技r/programming, r/technology新聞觀點、討論鉤子、爭議性觀點
職涯r/cscareerquestions, r/ITCareerQuestions提問格式、特定情境、徵求經驗
小眾工具r/vim, r/rust, r/golang深度技術內容、程式碼範例、基準測試

使用獲取的規則和熱門貼文來決定適用哪種風格。


步驟 4:使用 Gemini 擬定貼文

將貼文內容寫入暫存檔並呼叫 Gemini:

cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
  "system_instruction": {
    "parts": [{
      "text": "你是 {SUBREDDIT} 社群中活躍的開發者。撰寫一篇符合此子版文化的 Reddit 貼文。規則:(1) 如果是專案或經驗分享貼文,請使用第一人稱撰寫。(2) 內文中絕對不要包含任何產品連結:連結只能放在首則留言。(3) 貼文必須為社群提供真正獨立的價值,與任何被分享的產品無關。(4) 語氣需符合此子版熱門貼文的風格:{SUBREDDIT_TONE_NOTES}。(5) 標題最多 300 個字元。(6) 文字貼文的內文長度為 150-400 字。(7) 不得使用行銷語言:避免使用「革新」、「強大」、「穩健」、「無縫」、「創新」等詞彙。(8) 如果貼文是關於使用者建立的工具,請使用「我做了...」或「我建立了...」作為開場:這在 Reddit 上效果最好。(9) 輸出格式:第一行為標題,空一行,接著是內文。不要標籤,不要評論。不要使用破折號。"
    }]
  },
  "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'])"

將 POST_DETAILS_HERE 替換為:

  • 子版名稱與類型
  • 觀察到的熱門貼文模式
  • 被分享的內容及其相關原因
  • 關鍵技術細節
  • 建立者的真實動機

步驟 5:擬定首則留言

如果使用者有產品連結或其他背景資訊要分享,請擬定一則首則留言,在貼文上線後立即發佈。

首則留言有兩個目的:

  1. 提供連結(使內文保持無連結,感覺較不具推銷性)
  2. 加入在貼文內文中可能顯得太過推銷的背景資訊

首則留言規則:

  • 在貼文上線後,立即將其作為您自己貼文的首則回覆發佈
  • 保持在 100 字以內
  • 範例格式:「想查看的人可以點此連結:[URL]:也歡迎詢問關於[貼文中提到的特定技術事項]的問題。」
  • 只有在該子版允許在留言中自我推廣時,才加入首則留言
  • 如果子版有「禁止自我推廣」規則,則完全省略連結

步驟 6:自我品質檢查

在展示草稿前進行檢查:

結構:

  • 標題不超過 300 個字元
  • 內文中沒有出現連結
  • 貼文以第一人稱開頭(適用於專案/經驗分享貼文)
  • 包含至少一個特定的技術細節或具體數字
  • 貼文語氣符合在此子版觀察到的熱門貼文風格(在步驟 3 中記錄)
  • 步驟 3 中的子版規則未被違反

Claude 用語偵測:掃描以下詞彙類別並移除所有實例:

類別應移除的詞彙
填充式強調詞難以置信地、絕對地、肯定地、確實地、本質上、根本上、字面上、特別地、相當地、真的、顯著地、簡單地、真正地、最終、非常
AI 含糊用語我應該注意、值得注意的是、重要的是、如前所述、如我所提
炒作描述詞革新、革命性、強大、穩健、無縫、創新、同級最佳、尖端、開創性、卓越
開場白總之、總結來說、總結、整體而言、首先、最後但同樣重要
不必要的連接詞此外、而且、再者、然而(放在句首)、因此、所以、藉此
AI 特有用語這確保了、這允許了、這有助於、這使得、深入探究、利用、善用、促進

如果出現任何詞彙:用特定的名詞、動詞或數字取代。「非常快」改為「12 毫秒內執行完畢」。「強大的工具」改為其實際功能。

立即刪除用語檢查:以下模式會觸發 Reddit 垃圾郵件過濾器或版主移除:

  • 任何讀起來像廣告的句子(「立即試用 [產品]」、「立即註冊」、「免費開始」)
  • 暗示您不是建造者的用語(「我發現了這個很棒的工具」、「我找到了這個驚人的產品」)
  • 在您尚未建立社群存在的子版中使用第一人稱提及使用者(「我們的使用者」、「我們的客戶」)
  • 「我做了 X,你可以用它來...」後面緊接著連結(推銷結構)
  • 未經限定的最高級用語(「做...的最好方法」、「唯一能做到的工具」)
  • 內文中的外部連結(請僅在首則留言中使用)

如果出現任何立即刪除用語:完全改寫句子,而非僅替換詞彙。


步驟 7:抗辯審查

在展示最終草稿之前,執行 3 種角色的審查。每個角色閱讀貼文,並找出一個具體問題,引用觸發該問題的確切文字。

角色 1:懷疑論實踐者 這個人在 r/{SUBREDDIT} 多年,看過數百個偽裝成貼文的產品發表。他們的看法:

  • 是否有任何句子即使不是明確銷售,也感覺有推銷意味?
  • 貼文是否展現了對社群問題的真正了解,還是只談論產品?
  • 是否有任何實踐者會翻白眼的說法?

指出他們會標記的具體一行文字及其原因。

角色 2:版主 這個人負責執行步驟 3 中獲取的規則。他們的看法:

  • 貼文是否在技術上符合子版規則?
  • 自我推廣與社群貢獻的比例是否可接受?
  • 他們是否看過完全相同的貼文結構之前被移除過?

指出有違規風險的具體一條規則,或確認其是乾淨的。

角色 3:目標讀者 這是一位非建造者的社群成員,符合該子版的人口統計特徵。他們的看法:

  • 即使他們永遠不會使用該產品,他們會給這篇貼文按讚嗎?
  • 即使他們跳過首則留言中的連結,他們能學到可以應用的東西嗎?
  • 開頭句子是否讓他們想繼續讀下去?

指出他們會在何處停止閱讀,或確認貼文能吸引他們的注意力。

在所有三個角色報告之後:套用任何修正。如果沒有角色發現問題,則聲明「抗辯審查:通過。」


步驟 8:透過 Composio 發佈(可選)

如果 Composio Reddit MCP 已連線且使用者確認要發佈:

使用 reddit-composio MCP 工具 REDDIT_CREATE_REDDIT_POST,參數如下:
- subreddit: {SUBREDDIT_WITHOUT_r/}
- title: {TITLE}
- kind: "self"
- text: {BODY}

發佈前,請與使用者確認: 「準備發佈到 r/{SUBREDDIT}。貼文標題:'{TITLE}'。我要繼續嗎?」

只有在獲得明確確認後才能繼續。

發佈後:

  1. 記錄回應中的貼文 URL
  2. 如果已擬定首則留言,使用相同的 MCP 並以回傳的貼文 ID 立即發佈

如果發佈失敗(403、429 或其他錯誤): 提供草稿供手動提交。告知使用者:「直接發佈失敗([錯誤碼])。這是您的貼文草稿,請手動提交。請將標題和內文複製貼上到 reddit.com/r/{SUBREDDIT}/submit。」


步驟 9:呈現輸出

## Reddit 貼文:r/{SUBREDDIT}

### 標題
{title}

### 內文
{body}

### 首則留言(立即張貼)
{first comment, if applicable}

---

### 提交備註
- 貼文類型:{self/link}
- 最佳發文時間:{此子版的尖峰時段:多數科技子版為美國平日上午}
- 發文後:在最初一小時內回覆每則留言:早期互動會向演算法傳達品質訊號
- 網路聲譽注意事項:{如果帳號是新建立的,請注意某些子版在允許發文前需要最低網路聲譽值}

如果貼文已透過 Composio 提交,請將輸出區塊替換為:

貼文已提交:{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.

相關技能