Briefing Semanal para IA — TheFittClub

Cómo usar este fichero:

  1. Cada lunes copia el bloque “BRIEFING DE ESTA SEMANA” que genera Dataview abajo
  2. Abre Claude Projects — el contexto fijo ya está cargado (Buyer_Persona + Reglas_Copy_Marca)
  3. Pega el briefing y escribe: “Con estos datos, genera el plan de contenido para esta semana”
  4. Claude tiene todo el contexto para darte guiones listos para grabar

Briefing automático — copiar y pegar en Claude

// ── Top posts recientes ──
const recientes = dv.pages('"40_Contenido_Redes/Publicado_IG"')
  .filter(p => p.alcance_total > 0)
  .sort(p => -p.alcance_total)
  .slice(0, 5);
 
// ── Backlog operativo por pipeline (idea/guion) ──
const backlog = dv.pages('"40_Contenido_Redes/Publicado_IG"')
  .filter(p => {
    const estado = (p.estado_pipeline || "idea").toString().toLowerCase();
    return estado === "idea" || estado === "guion";
  })
  .array();
 
// ── Pain flags activos ──
const todasNotas = dv.pages('"40_Contenido_Redes/Publicado_IG"');
const flags = {};
for (const n of todasNotas) {
  const lista = Array.isArray(n.pain_flags) ? n.pain_flags : [n.pain_flags];
  for (const f of lista) {
    const k = (f || "").trim().toLowerCase();
    if (k && k !== "") flags[k] = (flags[k] || 0) + 1;
  }
}
const topFlags = Object.entries(flags).sort((a,b) => b[1]-a[1]).slice(0,5);
 
// ── Qué categoría funciona mejor ──
const porCat = {};
for (const p of dv.pages('"40_Contenido_Redes/Publicado_IG"').filter(x => x.alcance_total > 0 && x.categoria)) {
  if (!porCat[p.categoria]) porCat[p.categoria] = {posts: 0, alcance: 0, comp: 0};
  porCat[p.categoria].posts++;
  porCat[p.categoria].alcance += p.alcance_total || 0;
  porCat[p.categoria].comp += p.compartidos || 0;
}
const topCat = Object.entries(porCat)
  .map(([c,d]) => ({cat: c, med: Math.round(d.alcance/d.posts)}))
  .sort((a,b) => b.med - a.med)[0];
 
// ── Scoring de prioridad semanal ──
// prioridad = dolor_demanda + impacto_negocio + facilidad_produccion
const scoreBacklog = backlog.map(p => {
  const rawFlags = Array.isArray(p.pain_flags) ? p.pain_flags : [p.pain_flags];
  const dolencias = rawFlags
    .map(x => (x || "").toString().trim().toLowerCase())
    .filter(Boolean);
 
  const dolorDemanda = dolencias.reduce((acc, d) => acc + (flags[d] || 0), 0);
  const impacto = Number(p.impacto_negocio_score || 0);
  const facilidad = Number(p.facilidad_produccion_score || 0);
  const prioridad = dolorDemanda + impacto + facilidad;
 
  return {
    titulo: (p.titulo || p.file.name || "").toString(),
    estado: (p.estado_pipeline || "idea").toString(),
    dolorDemanda,
    impacto,
    facilidad,
    prioridad
  };
}).sort((a, b) => b.prioridad - a.prioridad).slice(0, 7);
 
// ── Generar briefing ──
const hoy = dv.date("today").toFormat("dd/MM/yyyy");
let briefing = `---\n`;
briefing += `📋 BRIEFING THEFITTCLUB — ${hoy}\n`;
briefing += `---\n\n`;
briefing += `**CONTEXTO:** Soy Gala Calero, fundadora de TheFittClub. Divulgo sobre recuperación postparto desde un enfoque práctico, claro y responsable (contenido educativo, no clínico). Lanzamiento: 1 sept 2026. Ahora estoy reactivando Instagram (inicio junio 2026).\n\n`;
 
briefing += `**TOP 5 POSTS HISTÓRICOS (para replicar su patrón):**\n`;
for (const p of recientes) {
  briefing += `- "${p.titulo?.slice(0,50)}" → ${p.alcance_total?.toLocaleString()} alcance · ${p.guardados} guardados · ${p.compartidos} compartidos\n`;
}
 
briefing += `\n**CATEGORÍA QUE MÁS ALCANCE GENERA:**\n`;
if (topCat) briefing += `- ${topCat.cat} (${topCat.med.toLocaleString()} alcance medio)\n`;
else briefing += `- (Rellena 'categoria' en las notas para activar este dato)\n`;
 
briefing += `\n**PAIN FLAGS — DOLENCIAS QUE MÁS PREGUNTA MI AUDIENCIA:**\n`;
if (topFlags.length > 0) {
  for (const [f, n] of topFlags) briefing += `- ${f}: ${n} menciones\n`;
} else {
  briefing += `- (Aún sin pain_flags registrados — añádelos en las notas tras leer comentarios)\n`;
}
 
briefing += `\n**BACKLOG PRIORIZADO (pipeline + score):**\n`;
if (scoreBacklog.length > 0) {
  for (const item of scoreBacklog) {
    briefing += `- [${item.estado}] ${item.titulo.slice(0, 60)} → prioridad ${item.prioridad} (dolor:${item.dolorDemanda} + negocio:${item.impacto} + facilidad:${item.facilidad})\n`;
  }
} else {
  briefing += `- (No hay piezas en estado idea/guion. Crea nuevas piezas o actualiza estado_pipeline)\n`;
}
 
briefing += `\n**SEMANA EN CURSO:**\n`;
briefing += `- Fase: [rellenar: dev / edición / reactivación IG / beta / post-lanzamiento]\n`;
briefing += `- Posts publicados esta semana: [N]\n`;
briefing += `- Engagement rate actual: [X]%\n`;
briefing += `- Objetivo semanal de contenido: [N posts]\n`;
 
briefing += `\n---\n`;
briefing += `**TAREA PARA LA IA:**\n`;
briefing += `Con este contexto y los patrones de mis top posts, genera [ELIGE: 3 guiones de reel / 1 carrusel de 6 slides / plan de contenido semanal] sobre [TEMA O PAIN FLAG].\n`;
briefing += `Sigue estrictamente las Reglas de Copy (tono Gala, vocabulario legal, estructura probada).\n`;
briefing += `Prioriza SIEMPRE las 3 piezas con mayor prioridad_score semanal y su siguiente acción de pipeline.\n`;
briefing += `---`;
 
dv.paragraph("```\n" + briefing + "\n```");

Cómo cargar el contexto fijo en Claude Projects

Una sola vez (no repetir cada sesión):

  1. Ve a claude.ai/projects → “New Project”
  2. Nómbralo: TheFittClub — Gala
  3. En “Project Instructions” pega el contenido de 10_Contexto_Raiz/IDENTIDAD_DISCLAIMERS_MASTER.md + Buyer_Persona.md + Reglas_Copy_Marca.md
  4. En “Project Files” sube (o pega) estos ficheros:
    • 10_Contexto_Raiz/IDENTIDAD_DISCLAIMERS_MASTER.md
    • 10_Contexto_Raiz/Buyer_Persona.md
    • 10_Contexto_Raiz/Reglas_Copy_Marca.md
    • TheFittClub-Plan-Estrategico.md

Cada semana:

  • Abre el proyecto → pega el briefing generado arriba → pide lo que necesitas

Prompts de alto valor para usar con el briefing

Generar 5 ideas de reel basadas en tus datos:

[PEGA EL BRIEFING]

Con estos datos, dame 5 ideas de reel para esta semana.
Para cada idea: hook (primeras 3 palabras que se ven/escuchan), categoría (rutina/explicacion/gancho_estetico), pain flag que resuelve, CTA sugerido.
Prioriza los pain flags más mencionados y los patrones de mis top posts.

Escribir guión completo de un reel:

[PEGA EL BRIEFING]

Escribe el guión completo de un reel sobre [TEMA].
Hook tipo: [dato_sorprendente / dolor_identificado / transformacion_visual]
Duración objetivo: 45 segundos.
Estructura: hook 3s / problema 15s / explicación biomecánica 20s / solución práctica 7s / CTA guardar.
Incluye las palabras exactas que digo, no solo la descripción.

Crear el plan de contenido del mes:

[PEGA EL BRIEFING]

Crea el calendario de contenido para [MES].
Frecuencia: [N] posts/semana.
Distribución: 40% gancho_estetico, 30% explicacion, 20% detras_camaras, 10% testimonial.
Cada post: fecha, categoría, tema, hook sugerido, pain flag que trabaja, producto objetivo (capsula_cero / ritual_trimestral).
Prioriza los temas con más pain flags y los ángulos con mayor alcance histórico.

Analizar por qué un post no funcionó:

[PEGA EL BRIEFING]

Este post tuvo mal rendimiento:
- Tema: [tema]
- Alcance: [N] (cuando mi media es [M])
- Guardados: [N]
- Hook usado: [hook]

¿Qué falló según mis patrones históricos? ¿Cómo lo reformularías?

Prompt: Transcripción → Blog post con voz Gala

[PEGA EL BRIEFING]

Contexto de estilo:
- Usa mi voz según 10_Contexto_Raiz/Estilo_Escritura.md
- Mantén tono cercano pero técnico, en primera persona
- No uses promesas absolutas ni lenguaje clínico de "cura/elimina"

Transcripción base del contenido:
[PEGA AQUI EL .srt LIMPIO O TEXTO TRANSCRITO]

Tarea:
Convierte esta transcripción en un artículo de blog para TheFittClub listo para publicar.

Formato obligatorio de salida:
1) Título SEO claro (sin clickbait)
2) Respuesta corta al inicio (2-4 líneas)
3) Desarrollo en H2/H3 (explicación + ejemplos prácticos)
4) Bloque "Qué hacer desde hoy" con pasos accionables
5) Cierre con CTA suave (guardar/compartir/programa)
6) Meta description (140-155 caracteres)

Si faltan datos para afirmar algo, dilo con honestidad y sugiere una siguiente acción.