Reddit Post Engine
Erstelle einen Reddit-Beitrag, der zur Kultur des Subreddits passt. Optional direkt über Composio veröffentlichen.
Wichtige Regel: Niemals ohne Bestätigung der Subreddit-Regeln posten. Niemals Produktlinks in den Text einfügen: Diese gehören ausschließlich in den ersten Kommentar, falls angemessen. Befolge die 90/10-Regel: Dein Beitrag sollte unabhängig von jeder Produkterwähnung einen Mehrwert bieten.
Anti-Spam-Regel: Beiträge, die hauptsächlich Werbezwecken dienen, werden entfernt und können zur Sperrung des Kontos führen. Das Ziel ist es, zuerst einen Beitrag zur Community zu leisten. Produkterwähnungen gehören in den ersten Kommentar und nur, wenn das Subreddit Eigenwerbung erlaubt.
Schritt 1: Setup-Prüfung
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+gesetzt}"
# Prüfen, ob Composio Reddit MCP verbunden ist
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP: nicht verbunden"
Wenn GEMINI_API_KEY fehlt: Stop. Sage dem Benutzer: "GEMINI_API_KEY wird benötigt. Holen Sie ihn unter aistudio.google.com. Fügen Sie ihn Ihrer .env-Datei hinzu."
Wenn Composio Reddit MCP nicht verbunden ist: Fahre fort. Das Skill erstellt Entwürfe, überspringt aber den Veröffentlichungsschritt. Informiere den Benutzer: "Composio Reddit MCP nicht verbunden: Ich erstelle einen Entwurf für die manuelle Einreichung. Informationen zur Einrichtung der direkten Veröffentlichung finden Sie in der README.md."
Schritt 2: Kontext sammeln
Du benötigst:
- Ziel-Subreddit (z.B. r/devops, r/startups, r/SideProject)
- Was du teilst (Projekt, Artikel, Frage, Diskussion, Tool)
- Eine Beschreibung in einem Satz, was es tut
- Warum es für die Community dieses spezifischen Subreddits relevant ist
- Ob du einen Textbeitrag oder einen Linkbeitrag möchtest
Falls etwas fehlt, frage in einer Nachricht:
"Um deinen Reddit-Beitrag zu erstellen, benötige ich:
- Welches Subreddit? (z.B. r/devops, r/startups)
- Was teilst du? (Projekt, Artikel, Tool, Frage)
- Was macht es? (ein Satz, technisch)
- Warum ist dieses Subreddit speziell daran interessiert?"
Schritt 3: Subreddit-Regeln und -Kultur abrufen
Regeln des Subreddits abrufen:
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'Regel: {r.get(\"short_name\", \"\")}')
print(f'Details: {r.get(\"description\", \"\")[:200]}')
print()
"
Aktuelle Top-Beiträge abrufen, um Ton und Stil zu verstehen:
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'Punkte: {pd[\"score\"]} | Titel: {pd[\"title\"][:100]}')
"
Muster in den Top-Beiträgen notieren:
- Sind Titel Fragen oder Aussagen?
- Beginnen sie mit der Technologie oder dem Ergebnis?
- Sind sie persönlich ("Ich habe...") oder unpersönlich ("Tool für...")?
- Welches Format erzielt in diesem Subreddit die meiste Interaktion?
Sidebar des Subreddits auf Posting-Regeln prüfen:
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('Öffentliche Beschreibung:', data.get('public_description', '')[:300])
print('Abonnenten:', data.get('subscribers', 0))
"
Subreddit-Typ identifizieren:
| Typ | Beispiele | Beitragsstil |
|---|---|---|
| Technischer Praktiker | r/devops, r/sysadmin, r/ExperiencedDevs | Technische Details, keine Füllwörter, "Ich habe X gemacht und Y gelernt" |
| Startup/Bauer | r/startups, r/SideProject, r/indiehackers | Persönliche Geschichte, Metriken, gewonnene Erkenntnisse |
| Allgemeine Technik | r/programming, r/technology | Nachrichtenwinkel, Diskussionshaken, kontroverse Meinung |
| Karriere | r/cscareerquestions, r/ITCareerQuestions | Frageformat, spezifisches Szenario, nach Erfahrung fragen |
| Nischen-Tool | r/vim, r/rust, r/golang | Tiefer technischer Inhalt, Codebeispiele, Benchmarks |
Verwende die abgerufenen Regeln und Top-Beiträge, um den passenden Stil zu bestimmen.
Schritt 4: Beitragsentwurf mit Gemini
Schreibe den Beitragsinhalt in eine temporäre Datei und rufe Gemini auf:
cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "Du bist ein Entwickler, der in der {SUBREDDIT}-Community aktiv ist. Schreibe einen Reddit-Beitrag, der zur Kultur dieses Subreddits passt. Regeln: (1) Schreibe in der ersten Person, wenn es ein Projekt- oder Erfahrungsbericht ist. (2) Füge KEINE Produktlinks in den Text ein: Links gehören ausschließlich in den ersten Kommentar. (3) Der Beitrag muss der Community einen echten Mehrwert bieten, unabhängig von jedem geteilten Produkt. (4) Passe dich dem Ton der Top-Beiträge in diesem Subreddit an: {SUBREDDIT_TONE_NOTES}. (5) Titel maximal 300 Zeichen. (6) Text 150-400 Wörter für Textbeiträge. (7) Keine Marketingsprache: kein 'revolutionär', 'leistungsstark', 'robust', 'nahtlos', 'innovativ'. (8) Wenn der Beitrag über ein selbst gebautes Tool handelt, verwende die 'Ich habe...' oder 'Ich baute...' Einleitung: diese funktioniert auf Reddit am besten. (9) Ausgabe: Titel in der ersten Zeile, Leerzeile, dann Text. Keine Etiketten, kein Kommentar. Verwende keine Gedankenstriche."
}]
},
"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'])"
Ersetze POST_DETAILS_HERE mit:
- Subreddit-Name und -Typ
- Beobachtete Muster der Top-Beiträge
- Was geteilt wird und warum es relevant ist
- Wichtige technische Details
- Die ehrliche Motivation des Erbauers
Schritt 5: Ersten Kommentar entwerfen
Wenn der Benutzer einen Produktlink oder zusätzlichen Kontext teilen möchte, entwerfe einen ersten Kommentar, der sofort nach der Veröffentlichung des Beitrags gepostet wird.
Der erste Kommentar hat zwei Zwecke:
- Bereitstellung des Links (hält den Text linkfrei und wirkt weniger werblich)
- Hinzufügen von Kontext, der im Beitragstext zu werblich wirken würde
Regeln für den ersten Kommentar:
- Poste diesen als erste Antwort auf deinen eigenen Beitrag, sofort nachdem er live ist
- Halte ihn unter 100 Wörtern
- Beispielformat: "Link für alle, die es ausprobieren möchten: [URL]; beantworte auch gerne Fragen zu [spezifischem technischen Aspekt, der im Beitrag erwähnt wurde]."
- Füge den ersten Kommentar nur ein, wenn das Subreddit Eigenwerbung in Kommentaren erlaubt
- Wenn das Subreddit eine "Keine Eigenwerbung"-Regel hat, lasse den Link vollständig weg
Schritt 6: Selbst-Qualitätssicherung
Überprüfe den Entwurf vor der Präsentation:
Struktur:
- Titel überschreitet nicht 300 Zeichen
- Keine Links im Beitragstext
- Beitrag beginnt in der ersten Person (bei Projekt-/Erfahrungsbeiträgen)
- Mindestens ein spezifisches technisches Detail oder eine konkrete Zahl enthalten
- Ton des Beitrags entspricht den beobachteten Top-Beiträgen in diesem Subreddit (in Schritt 3 notiert)
- Subreddit-Regeln aus Schritt 3 werden nicht verletzt
Claude-ismus-Erkennung: Durchsuche diese Vokabelkategorien und entferne alle Vorkommen:
| Kategorie | Zu entfernende Wörter |
|---|---|
| Füll-Intensivierer | unglaublich, absolut, sicherlich, definitiv, essenziell, grundsätzlich, buchstäblich, besonders, ziemlich, eher, wirklich, signifikant, einfach, wahrhaft, letztendlich, sehr |
| KI-Floskeln | Ich sollte anmerken, es ist erwähnenswert, es ist wichtig zu erwähnen, wie erwähnt, wie ich anmerkte |
| Hype-Beschreibungen | revolutionär, leistungsstark, robust, nahtlos, innovativ, erstklassig, zukunftsweisend, bahnbrechend, bemerkenswert |
| Leerformeln | Zusammenfassend, abschließend, um zusammenzufassen, insgesamt, zuallererst, nicht zuletzt |
| Unnötige Verknüpfungen | Des Weiteren, darüber hinaus, zusätzlich, jedoch (am Satzanfang), somit, daher, dadurch |
| KI-Verrate | Dies stellt sicher, dass, Dies ermöglicht, Dies hilft, Dies erlaubt, eintauchen, nutzen, einsetzen, fördern |
Wenn etwas vorkommt: Ersetze es durch ein spezifisches Nomen, Verb oder eine Zahl. "Sehr schnell" wird zu "läuft in 12 ms". "Leistungsstarkes Tool" wird zu dem, was es tatsächlich tut.
Prüfung auf Sofort-Lösch-Phrasen: Diese Muster lösen Reddit-Spamfilter oder Moderatorenentfernung aus:
- Jeder Satz, der wie eine Anzeige klingt ("Probieren Sie [Produkt] noch heute", "Jetzt anmelden", "Kostenlos starten")
- Phrasen, die implizieren, dass du nicht der Entwickler bist ("Ich bin auf dieses großartige Tool gestoßen", "Ich habe dieses erstaunliche Produkt gefunden")
- Besitz von Benutzern in der ersten Person ("unsere Benutzer", "unsere Kunden") in Subreddits, in denen du keine Community-Präsenz aufgebaut hast
- "Ich habe X gemacht und du kannst es verwenden, um..." gefolgt von einem Link (werbliche Struktur)
- Superlative ohne Einschränkung ("der beste Weg, um...", "das einzige Tool, das...")
- Externe Links im Beitragstext (nur ersten Kommentar verwenden)
Wenn Sofort-Lösch-Phrasen vorkommen: Überarbeite den gesamten Satz, tausche nicht nur Wörter aus.
Schritt 7: Adversarialische Überprüfung
Bevor du den endgültigen Entwurf präsentierst, führe eine Überprüfung mit 3 Personas durch. Jede Persona liest den Beitrag und findet EIN spezifisches Problem, wobei sie den genauen Text zitiert, der es auslöst.
Persona 1: Der skeptische Praktiker Diese Person ist seit Jahren in r/{SUBREDDIT} aktiv und hat hunderte von als Beiträge getarnten Produkteinführungen gesehen. Ihre Lesart:
- Fühlt sich ein Satz werblich an, auch wenn er nicht explizit verkauft?
- Zeigt der Beitrag echtes Wissen über die Probleme der Community oder spricht er nur über das Produkt?
- Gibt es eine Behauptung, bei der ein Praktiker die Augen verdrehen würde?
Nenne die eine spezifische Zeile, die sie beanstanden würde, und warum.
Persona 2: Der Moderator Diese Person setzt die in Schritt 3 abgerufenen Regeln durch. Ihre Lesart:
- Entspricht der Beitrag technisch den Subreddit-Regeln?
- Ist das Verhältnis von Eigenwerbung zu Community-Beitrag akzeptabel?
- Wurde diese genaue Beitragsstruktur ihrer Meinung nach schon einmal entfernt?
Nenne die eine Regel, die gefährdet ist, oder bestätige, dass alles sauber ist.
Persona 3: Der Ziel-Leser Dies ist ein Community-Mitglied, das kein Entwickler ist und zur Demografie des Subreddits passt. Ihre Lesart:
- Würden sie diesen Beitrag hochwählen, auch wenn sie das Produkt nie nutzen?
- Gibt es eine Erkenntnis, die sie anwenden können, selbst wenn sie den Link im ersten Kommentar überspringen?
- Macht der erste Satz Lust, weiterzulesen?
Nenne die eine Sache, bei der sie aufhören würden zu lesen, oder bestätige, dass der Beitrag ihre Aufmerksamkeit hält.
Nachdem alle drei Personas berichtet haben: Wende ggf. Korrekturen an. Wenn keine Persona ein Problem gefunden hat, gib an: "Adversarialische Überprüfung: sauber."
Schritt 8: Veröffentlichung via Composio (Optional)
Wenn Composio Reddit MCP verbunden ist und der Benutzer bestätigt, dass er posten möchte:
Verwende das reddit-composio MCP-Tool REDDIT_CREATE_REDDIT_POST mit:
- subreddit: {SUBREDDIT_OHNE_r/}
- title: {TITLE}
- kind: "self"
- text: {BODY}
Vor der Veröffentlichung mit dem Benutzer bestätigen: "Bereit zum Posten in r/{SUBREDDIT}. Beitragstitel: '{TITLE}'. Soll ich fortfahren?"
Erst nach expliziter Bestätigung fortfahren.
Nach der Veröffentlichung:
- Notiere die Beitrags-URL aus der Antwort
- Wenn ein erster Kommentar entworfen wurde, poste ihn sofort mit demselben MCP unter Verwendung der zurückgegebenen Beitrags-ID
Wenn das Posten fehlschlägt (403, 429 oder anderer Fehler): Präsentiere den Entwurf für die manuelle Einreichung. Sage dem Benutzer: "Direktes Posten fehlgeschlagen ([Fehlercode]). Hier ist dein Beitrag zur manuellen Einreichung. Kopiere Titel und Text unter reddit.com/r/{SUBREDDIT}/submit."
Schritt 9: Ausgabe präsentieren
## Reddit-Beitrag: r/{SUBREDDIT}
### Titel
{title}
### Text
{body}
### Erster Kommentar (sofort nach Veröffentlichung)
{erster Kommentar, falls zutreffend}
---
### Einreichungshinweise
- Beitragstyp: {self/link}
- Beste Zeit zum Posten: {Hauptzeiten für dieses Subreddit: Werktags morgens US-Zeit für die meisten Tech-Subreddits}
- Nach dem Posten: Antworte auf jeden Kommentar in der ersten Stunde: Frühes Engagement signalisiert dem Algorithmus Qualität
- Karma-Hinweis: {Wenn das Konto neu ist, beachte, dass einige Subreddits ein Mindestkarma vor dem Posten verlangen}
Wenn der Beitrag bereits über Composio eingereicht wurde, ersetze den Ausgabeblock durch:
Beitrag eingereicht: {reddit_post_url}