Los equipos de contenido pierden horas todas las mañanas investigando sobre qué escribir. Este tutorial crea un canal automatizado que se ejecuta a diario, busca temas de actualidad y contenido de la competencia en su nicho, identifica lagunas de contenido y produce resúmenes estructurados que sus escritores pueden ejecutar de inmediato. El canal utiliza la API de Scavio para búsquedas a $0,005/consulta, lo que hace que un resumen diario completo con 5 temas cueste alrededor de $0,050.
Requisitos previos
- Python 3.9+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Un nicho de contenido definido y una lista de competidores
Guia paso a paso
Paso 1: Defina su nicho de contenido y consultas iniciales
Configure los temas y competidores para monitorear diariamente. El canal los buscará para encontrar nuevas oportunidades de contenido.
import os, requests, json, time
from datetime import datetime
SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}
URL = 'https://api.scavio.dev/api/v1/search'
NICHE = 'developer tools and APIs'
SEED_QUERIES = [
'developer tools trending 2026',
'new API launches this week',
'developer productivity tools',
]
COMPETITOR_DOMAINS = ['competitor1.com', 'competitor2.com']Paso 2: Búsqueda de contenido de tendencia y ángulos de la competencia
Ejecute las consultas iniciales y las búsquedas de contenido de la competencia. Extraiga títulos, ángulos y datos de People Also Ask como oportunidades de contenido.
def search_trends(queries: list) -> list:
all_results = []
for q in queries:
resp = requests.post(URL, headers=H,
json={'query': q, 'country_code': 'us', 'num_results': 5})
data = resp.json()
results = data.get('organic_results', [])
paa = data.get('people_also_ask', [])
all_results.append({
'query': q,
'results': [{'title': r['title'], 'url': r['link'], 'snippet': r.get('snippet', '')} for r in results],
'people_also_ask': [p.get('question', '') for p in paa],
})
time.sleep(0.3)
return all_results
def check_competitors(domains: list) -> list:
competitor_content = []
for domain in domains:
resp = requests.post(URL, headers=H,
json={'query': f'site:{domain}', 'country_code': 'us', 'num_results': 5})
results = resp.json().get('organic_results', [])
competitor_content.extend([{'domain': domain, 'title': r['title'], 'url': r['link']} for r in results])
time.sleep(0.3)
return competitor_content
trends = search_trends(SEED_QUERIES)
print(f'Trend data: {sum(len(t["results"]) for t in trends)} results from {len(SEED_QUERIES)} queries')Paso 3: Generar resúmenes de contenido estructurado
Analice los datos de búsqueda para identificar las principales oportunidades de contenido y produzca resúmenes estructurados con título, ángulo, palabras clave y esquema.
def generate_briefs(trends: list, num_briefs: int = 5) -> list:
# Collect all titles and PAA questions as potential angles
angles = []
for t in trends:
for r in t['results']:
angles.append({'title': r['title'], 'source': t['query'], 'snippet': r['snippet']})
for q in t['people_also_ask']:
angles.append({'title': q, 'source': f'PAA: {t["query"]}', 'snippet': ''})
# Deduplicate by title similarity (simple approach)
seen_words = set()
unique_angles = []
for a in angles:
words = frozenset(a['title'].lower().split()[:5])
if words not in seen_words:
seen_words.add(words)
unique_angles.append(a)
briefs = []
for a in unique_angles[:num_briefs]:
brief = {
'title': a['title'],
'angle': a['snippet'][:150] if a['snippet'] else 'Based on trending search data',
'source_query': a['source'],
'suggested_format': 'tutorial' if 'how' in a['title'].lower() else 'listicle' if any(w in a['title'].lower() for w in ['top', 'best']) else 'analysis',
}
briefs.append(brief)
print(f'Daily Content Brief - {datetime.now().strftime("%Y-%m-%d")}')
print('=' * 60)
for i, b in enumerate(briefs, 1):
print(f'\n{i}. {b["title"]}')
print(f' Format: {b["suggested_format"]}')
print(f' Angle: {b["angle"][:80]}')
print(f' Source: {b["source_query"]}')
return briefs
briefs = generate_briefs(trends)Ejemplo en Python
import os, requests, time
from datetime import datetime
SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}
def daily_brief(niche, num_topics=5):
queries = [f'{niche} trending 2026', f'{niche} news this week', f'best {niche} tools']
all_titles = []
for q in queries:
resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'query': q, 'country_code': 'us', 'num_results': 5})
for r in resp.json().get('organic_results', []):
all_titles.append(r['title'])
time.sleep(0.3)
print(f'Content Brief - {datetime.now().strftime("%Y-%m-%d")}')
for i, title in enumerate(all_titles[:num_topics], 1):
print(f' {i}. {title[:60]}')
print(f'Cost: ${len(queries) * 0.005:.3f}')
daily_brief('developer tools')Ejemplo en JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;
async function dailyBrief(niche) {
const queries = [`${niche} trending 2026`, `${niche} news`, `best ${niche}`];
const titles = [];
for (const q of queries) {
const resp = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query: q, country_code: 'us', num_results: 5 })
});
const results = (await resp.json()).organic_results || [];
titles.push(...results.map(r => r.title));
}
console.log(`Content Brief - ${new Date().toISOString().slice(0, 10)}`);
titles.slice(0, 5).forEach((t, i) => console.log(` ${i + 1}. ${t.slice(0, 60)}`));
}
dailyBrief('developer tools');Salida esperada
Daily Content Brief - 2026-05-16
============================================================
1. Top 10 Developer Productivity Tools for 2026
Format: listicle
Angle: A roundup of the most impactful developer tools released this year
Source: developer tools trending 2026
2. How to Build AI-Powered API Testing Pipelines
Format: tutorial
Angle: Emerging pattern of using LLMs to generate and run API tests
Source: new API launches this week
3. MCP Ecosystem: The New Standard for Tool Integration
Format: analysis
Angle: Model Context Protocol adoption is accelerating across AI tools
Source: developer tools trending 2026