بنقرة واحدة
research-sources
Busca em YouTube, web (Brave Search) e Reddit — sem dependências externas, tudo via urllib.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Busca em YouTube, web (Brave Search) e Reddit — sem dependências externas, tudo via urllib.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Arquitetura completa do Hermes Agent — credenciais, plataformas e fluxo de dados
Sistema WhatsApp Bot completo — dual-mode (assistente pessoal + suporte a clientes) com histórico de conversas persistence via SQLite
Consulta os logs em tempo real, status e saúde da integração do WhatsApp através do endpoint /whatsapp/debug do bridge.
Realiza o deploy do plugin whatsapp-manager no servidor Hermes — commit, push, pull e restart do container.
Autoriza acesso ao Gmail via OAuth2 — gera a URL de login para o usuário clicar e salva o token de acesso.
| name | research-sources |
| description | Busca em YouTube, web (Brave Search) e Reddit — sem dependências externas, tudo via urllib. |
| category | research |
Esta skill ensina o agente a buscar informações em fontes externas usando as credenciais já disponíveis na stack.
| Pedido do usuário | Fonte recomendada |
|---|---|
| "tutorial de...", "como fazer...", "vídeo sobre..." | YouTube |
| "pesquisa sobre...", "o que é...", "últimas notícias de..." | Brave Search |
| "opinião sobre...", "experiência com...", "comunidade..." | |
| "lê esse link para mim", "resumo desse artigo..." | Jina Reader |
| Variável | Uso | Obter em |
|---|---|---|
GOOGLE_API_KEY | YouTube Data API v3 | Já está na stack |
BRAVE_API_KEY | Brave Search API | https://api.search.brave.com/app/keys (grátis 2000/mês) |
| (nenhuma) | Reddit + Jina | Não precisa de auth |
python3 - <<'EOF'
import os, urllib.request, urllib.parse, json
api_key = os.getenv("GOOGLE_API_KEY", "")
if not api_key:
print("❌ GOOGLE_API_KEY não configurada.")
exit(1)
# ← Substituir pelo termo de busca
QUERY = "n8n tutorial automação"
params = urllib.parse.urlencode({
"key": api_key,
"q": QUERY,
"part": "snippet",
"type": "video",
"maxResults": 5,
"relevanceLanguage": "pt",
"order": "relevance",
})
url = f"https://www.googleapis.com/youtube/v3/search?{params}"
with urllib.request.urlopen(url) as resp:
data = json.loads(resp.read().decode())
for item in data.get("items", []):
vid = item["id"].get("videoId", "")
title = item["snippet"]["title"]
channel = item["snippet"]["channelTitle"]
print(f"▶ {title}")
print(f" Canal: {channel}")
print(f" URL: https://www.youtube.com/watch?v={vid}")
print()
EOF
python3 - <<'EOF'
import os, urllib.request, urllib.parse, json
api_key = os.getenv("BRAVE_API_KEY", "")
if not api_key:
print("❌ BRAVE_API_KEY não configurada. Cadastre em: https://api.search.brave.com/app/keys")
exit(1)
# ← Substituir pelo termo de busca
QUERY = "n8n automação workflow"
params = urllib.parse.urlencode({
"q": QUERY,
"count": 5,
"country": "BR",
"search_lang": "pt",
"ui_lang": "pt-BR",
})
url = f"https://api.search.brave.com/res/v1/web/search?{params}"
req = urllib.request.Request(url, headers={
"Accept": "application/json",
"Accept-Encoding": "gzip",
"X-Subscription-Token": api_key,
})
with urllib.request.urlopen(req) as resp:
data = json.loads(resp.read().decode())
results = data.get("web", {}).get("results", [])
for r in results:
print(f"🔍 {r.get('title')}")
print(f" {r.get('url')}")
print(f" {r.get('description', '')[:120]}...")
print()
EOF
python3 - <<'EOF'
import urllib.request, urllib.parse, json
# ← Substituir pelo termo e subreddit (deixe subreddit="" para busca global)
QUERY = "n8n automação"
SUBREDDIT = "" # Ex: "n8n", "artificial", "brasil" — ou "" para toda a web
if SUBREDDIT:
url = f"https://www.reddit.com/r/{SUBREDDIT}/search.json"
restrict = "true"
else:
url = "https://www.reddit.com/search.json"
restrict = "false"
params = urllib.parse.urlencode({
"q": QUERY,
"restrict_sr": restrict,
"sort": "relevance",
"limit": 5,
"t": "year",
})
req = urllib.request.Request(
f"{url}?{params}",
headers={"User-Agent": "hermes-research-bot/1.0"}
)
with urllib.request.urlopen(req) as resp:
data = json.loads(resp.read().decode())
posts = data.get("data", {}).get("children", [])
for post in posts:
p = post["data"]
score = p.get("score", 0)
comments = p.get("num_comments", 0)
print(f"📌 {p.get('title')}")
print(f" r/{p.get('subreddit')} | ⬆ {score} | 💬 {comments} comentários")
print(f" https://reddit.com{p.get('permalink')}")
print()
EOF
Útil para o agente ler o artigo/post completo após encontrar nos resultados:
python3 - <<'EOF'
import urllib.request
# ← Substituir pela URL a ser lida
TARGET_URL = "https://www.reddit.com/r/n8n/comments/xxx/"
jina_url = f"https://r.jina.ai/{TARGET_URL}"
req = urllib.request.Request(jina_url, headers={"User-Agent": "hermes/1.0"})
with urllib.request.urlopen(req, timeout=15) as resp:
content = resp.read().decode("utf-8", errors="replace")
# Limitar para os primeiros 3000 caracteres (suficiente para resumo)
print(content[:3000])
EOF
Quando o usuário pede pesquisa, o agente deve: