Mecanismo de Postagem no Reddit
Crie um post no Reddit que se encaixa na cultura do subreddit. Opcionalmente, publique-o via Composio.
Regra crítica: Nunca poste sem confirmar as regras do subreddit. Nunca inclua links de produtos no corpo: coloque-os apenas no primeiro comentário, se apropriado. Siga a regra 90/10: seu post deve agregar valor independentemente de qualquer menção a produto.
Regra antispam: Posts que são principalmente promocionais serão removidos e podem resultar no banimento da conta. O objetivo é contribuir primeiro com a comunidade. Menções a produtos vão no primeiro comentário, e somente se o subreddit permitir autopromoção.
Passo 1: Verificação da Configuração
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
# Verificar se o Composio Reddit MCP está conectado
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP: não conectado"
Se a GEMINI_API_KEY estiver faltando: Pare. Informe ao usuário: "GEMINI_API_KEY é necessária. Obtenha-a em aistudio.google.com. Adicione-a ao seu arquivo .env."
Se o Composio Reddit MCP não estiver conectado: Continue. A skill criará rascunhos, mas pulará a etapa de postagem. Informe o usuário: "Composio Reddit MCP não conectado: vou criar o rascunho do seu post para submissão manual. Para habilitar a postagem direta, veja as instruções de configuração no README.md."
Passo 2: Coletar Contexto
Você precisa:
- Subreddit alvo (ex.: r/devops, r/startups, r/SideProject)
- O que você está compartilhando (projeto, artigo, pergunta, discussão, ferramenta)
- Descrição de uma frase do que ele faz
- Por que é relevante para esta comunidade específica
- Se você quer um post de texto ou de link
Se algum desses itens estiver faltando, pergunte em uma mensagem:
"Para criar seu post no Reddit, preciso de:
- Qual subreddit? (ex.: r/devops, r/startups)
- O que você está compartilhando? (projeto, artigo, ferramenta, pergunta)
- O que ele faz? (uma frase, técnica)
- Por que este subreddit se importa especificamente com isso?"
Passo 3: Buscar Regras e Cultura do Subreddit
Buscar as regras do subreddit:
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'Regra: {r.get(\"short_name\", \"\")}')
print(f'Detalhe: {r.get(\"description\", \"\")[:200]}')
print()
"
Buscar posts recentes populares para entender o tom e o estilo:
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'Pontuação: {pd[\"score\"]} | Título: {pd[\"title\"][:100]}')
"
Observe padrões nos posts populares:
- Os títulos são perguntas ou afirmações?
- Eles começam com a tecnologia ou com o resultado?
- São pessoais ("Eu construí...") ou impessoais ("Ferramenta para...")?
- Qual formato tem maior engajamento neste subreddit?
Verificar a barra lateral do subreddit para regras de postagem:
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('Descrição pública:', data.get('public_description', '')[:300])
print('Inscritos:', data.get('subscribers', 0))
"
Identificar o tipo de subreddit:
| Tipo | Exemplos | Estilo de post |
|---|---|---|
| Praticante técnico | r/devops, r/sysadmin, r/ExperiencedDevs | Especificidades técnicas, sem rodeios, "Fiz X e aprendi Y" |
| Startup/construtor | r/startups, r/SideProject, r/indiehackers | História pessoal, métricas, lições aprendidas |
| Tecnologia geral | r/programming, r/technology | Ângulo de notícia, gancho para discussão, opinião polêmica |
| Carreira | r/cscareerquestions, r/ITCareerQuestions | Formato de pergunta, cenário específico, pedir experiência |
| Ferramenta de nicho | r/vim, r/rust, r/golang | Conteúdo técnico profundo, exemplos de código, benchmarks |
Use as regras e os posts populares obtidos para determinar qual estilo se aplica.
Passo 4: Criar o Rascunho do Post com Gemini
Escreva o conteúdo do post em um arquivo temporário e chame o Gemini:
cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "Você é um desenvolvedor ativo na comunidade {SUBREDDIT}. Escreva um post no Reddit que se encaixe na cultura deste subreddit. Regras: (1) Escreva em primeira pessoa se for um post sobre projeto ou experiência. (2) NÃO inclua nenhum link de produto no corpo: links vão apenas no primeiro comentário. (3) O post deve agregar valor genuíno à comunidade, independentemente de qualquer produto compartilhado. (4) Combine com o tom dos posts populares neste subreddit: {SUBREDDIT_TONE_NOTES}. (5) Título no máximo 300 caracteres. (6) Corpo de 150 a 400 palavras para posts de texto. (7) Sem linguagem de marketing: sem 'revolucionário', 'poderoso', 'robusto', 'contínuo', 'inovador'. (8) Se o post for sobre uma ferramenta que o usuário construiu, use a abertura 'Eu fiz...' ou 'Eu construí...': é o que tem melhor desempenho no Reddit. (9) Saída: título na primeira linha, linha em branco, depois o corpo. Sem rótulos, sem comentários. Não use travessões."
}]
},
"contents": [{
"parts": [{
"text": "DETALHES_DO_POST_AQUI"
}]
}],
"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'])"
Substitua DETALHES_DO_POST_AQUI por:
- Nome e tipo do subreddit
- Padrões observados nos posts populares
- O que está sendo compartilhado e por que é relevante
- Detalhes técnicos principais
- Motivação honesta do construtor
Passo 5: Criar o Primeiro Comentário
Se o usuário tiver um link de produto ou contexto adicional para compartilhar, crie um primeiro comentário para postar imediatamente após o post ir ao ar.
O primeiro comentário serve a dois propósitos:
- Fornecer o link (o que mantém o corpo livre de links e parece menos promocional)
- Adicionar contexto que seria muito promocional no corpo do post
Regras do primeiro comentário:
- Poste isto como a primeira resposta ao seu próprio post, imediatamente após ele ir ao ar
- Mantenha abaixo de 100 palavras
- Exemplo de formato: "Link para quem quiser conferir: [URL]; também estou à disposição para responder perguntas sobre [coisa técnica específica mencionada no post]."
- Inclua o primeiro comentário apenas se o subreddit permitir autopromoção nos comentários
- Se o subreddit tiver uma regra "Sem autopromoção", omita o link completamente
Passo 6: Autoavaliação
Verifique o rascunho antes de apresentá-lo:
Estrutura:
- Título não excede 300 caracteres
- Nenhum link aparece no corpo do post
- Post abre em primeira pessoa (para posts de projeto/experiência)
- Pelo menos um detalhe técnico específico ou número concreto incluído
- Post combina com o tom dos posts populares observados neste subreddit (anotado no Passo 3)
- Regras do subreddit do Passo 3 não são violadas
Detecção de clichês do Claude: verifique estas categorias de vocabulário e remova todas as ocorrências:
| Categoria | Palavras a remover |
|---|---|
| Intensificadores de enchimento | incrivelmente, absolutamente, certamente, definitivamente, essencialmente, fundamentalmente, literalmente, particularmente, bastante, realmente, significativamente, simplesmente, verdadeiramente, finalmente, muito |
| Ressalvas de IA | Devo notar, vale a pena notar, é importante notar, como mencionado, como notei |
| Descritores de hype | revolucionário, poderoso, robusto, contínuo, inovador, melhor da classe, de ponta, inovador, notável |
| Abertura desnecessária | Em conclusão, em resumo, para resumir, no geral, antes de tudo, por último mas não menos importante |
| Conectores desnecessários | Além disso, ademais, no entanto (no início da frase), portanto, por isso, consequentemente |
| Marcas de IA | Isto garante que, Isto permite que, Isto ajuda a, Isto possibilita, mergulhar, utilizar, alavancar, fomentar |
Se algum aparecer: substitua por um substantivo, verbo ou número específico. "Muito rápido" torna-se "executa em 12ms". "Ferramenta poderosa" torna-se o que ela realmente faz.
Verificação de frases de exclusão instantânea: estes padrões disparam filtros de spam do Reddit ou remoção por moderadores:
- Qualquer frase que soe como anúncio ("Experimente [Produto] hoje", "Inscreva-se agora", "Comece grátis")
- Frases que implicam que você não é o construtor ("Encontrei esta ferramenta incrível", "Descobri este produto fantástico")
- Posse em primeira pessoa de usuários ("nossos usuários", "nossos clientes") em subreddits onde você não estabeleceu presença na comunidade
- "Eu fiz X e você pode usar para..." seguido imediatamente por um link (estrutura promocional)
- Superlativos sem qualificação ("a melhor maneira de...", "a única ferramenta que...")
- Links externos no corpo do post (use apenas o primeiro comentário)
Se alguma frase de exclusão instantânea aparecer: revise a frase inteira, não apenas troque palavras.
Passo 7: Revisão Adversarial
Antes de apresentar o rascunho final, execute uma revisão com 3 personas. Cada persona lê o post e encontra UM problema específico, citando o texto exato que o desencadeia.
Persona 1: O Praticante Cético Esta pessoa está no r/{SUBREDDIT} há anos e já viu centenas de lançamentos de produtos disfarçados de posts. Sua leitura:
- Alguma frase parece promocional, mesmo que não esteja vendendo explicitamente?
- O post revela conhecimento genuíno dos problemas da comunidade, ou apenas fala sobre o produto?
- Há alguma afirmação que faria um praticante revirar os olhos?
Indique a linha específica que eles sinalizariam e por quê.
Persona 2: O Moderador Esta pessoa aplica as regras obtidas no Passo 3. Sua leitura:
- O post cumpre tecnicamente as regras do subreddit?
- A proporção entre autopromoção e contribuição para a comunidade é aceitável?
- Eles já teriam visto esta mesma estrutura de post removida antes?
Indique a regra específica que está em risco de violação, ou confirme que está limpo.
Persona 3: O Leitor Alvo Este é um membro da comunidade que não é construtor e corresponde ao perfil demográfico do subreddit. Sua leitura:
- Eles votariam positivamente neste post mesmo que nunca usassem o produto?
- Há algum aprendizado que possam aplicar mesmo se pularem o link no primeiro comentário?
- A frase inicial os faz querer continuar lendo?
Indique a única coisa que os faria parar de ler, ou confirme que o post mantém sua atenção.
Depois que todas as três personas se manifestarem: aplique as correções necessárias. Se nenhuma persona encontrou um problema, indique "Revisão adversarial: limpa."
Passo 8: Postar via Composio (Opcional)
Se o Composio Reddit MCP estiver conectado e o usuário confirmar que deseja postar:
Use a ferramenta MCP reddit-composio REDDIT_CREATE_REDDIT_POST com:
- subreddit: {SUBREDDIT_SEM_r/}
- title: {TITULO}
- kind: "self"
- text: {CORPO}
Antes de postar, confirme com o usuário: "Pronto para postar em r/{SUBREDDIT}. Título do post: '{TITULO}. Posso prosseguir?"
Só prossiga após confirmação explícita.
Após postar:
- Anote a URL do post da resposta
- Se um primeiro comentário foi criado, poste-o imediatamente usando o mesmo MCP com o ID do post retornado
Se a postagem falhar (403, 429 ou outro erro): Apresente o rascunho para submissão manual. Informe ao usuário: "A postagem direta falhou (código de erro [erro]). Aqui está seu post para submissão manual. Copie e cole o título e o corpo em reddit.com/r/{SUBREDDIT}/submit."
Passo 9: Apresentar a Saída
## Post no Reddit: r/{SUBREDDIT}
### Título
{titulo}
### Corpo
{corpo}
### Primeiro Comentário (postar imediatamente depois)
{primeiro comentário, se aplicável}
---
### Notas de Submissão
- Tipo de post: {texto/link}
- Melhor horário para postar: {horários de pico para este subreddit: manhãs de dias úteis no horário dos EUA para a maioria dos subreddits de tecnologia}
- Após postar: Responda a todos os comentários na primeira hora: o engajamento inicial sinaliza qualidade para o algoritmo
- Nota sobre karma: {Se a conta for nova, observe que alguns subreddits exigem karma mínimo antes de postar}
Se o post já foi enviado via Composio, substitua o bloco de saída por:
Post enviado: {url_do_post_no_reddit}