Sistema de Clips Automaticos con Recompensas 2026 — Channel Points + Clips API

3 de Marzo, 202612 min lecturaClips, Twitch API, Recompensas, Node.js

Combina la Twitch Clips API con Channel Points y Minecraft para crear un sistema donde los viewers guardan clips, los clips destacados dan recompensas al streamer y jugadores, y los mejores se comparten automaticamente en Discord. Un sistema que convierte buenos momentos en engagement real.

Flujo Completo del Sistema

1. Viewer redime "Guardar Momento" (Channel Point, 500 pts)
2. Bot crea clip via Twitch Clips API
3. Si el clip supera X views en 1 hora -> "Clip Destacado"
4. Clip Destacado:
   - Se publica en #clips de Discord automaticamente
   - El viewer que lo creo recibe 1000 pts bonus
   - Si hay jugador vinculado, recibe items en MC (diamantes, etc.)
   - Se propone para shorts en TikTok

Crear Clips via Twitch API

import { ApiClient } from '@twurple/api';
import { AppTokenAuthProvider } from '@twurple/auth';

const authProvider = new AppTokenAuthProvider(CLIENT_ID, CLIENT_SECRET);
const apiClient = new ApiClient({ authProvider });

// Crear clip
async function createClip(broadcasterId) {
  try {
    const clip = await apiClient.clips.createClip({ 
      channel: broadcasterId, 
      hasDelay: false  // sin delay: captura el momento actual
    });
    
    // Twitch devuelve el ID del clip, el URL tarda ~1 min en estar disponible
    console.log('Clip creado, ID:', clip.id);
    return clip;
  } catch (err) {
    console.error('Error creando clip:', err.message);
    return null;
  }
}

// Obtener info del clip (views, titulo, etc.)
async function getClipInfo(clipId) {
  const clip = await apiClient.clips.getClipById(clipId);
  return {
    id: clip.id,
    url: clip.url,
    views: clip.views,
    title: clip.title,
    createdAt: clip.creationDate,
    thumbnail: clip.thumbnailUrl,
  };
}

Monitor de Clips Destacados

// Cada 30 minutos, revisar clips de la ultima hora
// Si superan 50 views -> publicar en Discord
async function checkHighlightedClips() {
  const pending = await db.all(
    'SELECT * FROM saved_clips WHERE created_at > datetime("now", "-1 hour") AND featured = 0'
  );
  
  for (const clip of pending) {
    const info = await getClipInfo(clip.twitch_clip_id);
    
    if (info.views >= 50) {
      // Marcar como destacado
      await db.run('UPDATE saved_clips SET featured = 1 WHERE id = ?', clip.id);
      
      // Publicar en Discord
      const channel = discordClient.channels.cache.get(CLIPS_CHANNEL_ID);
      await channel.send({
        content: Clip destacado de !,
        embeds: [{
          title: info.title,
          url: info.url,
          image: { url: info.thumbnail },
          fields: [{ name: 'Vistas', value: info.views.toString() }]
        }]
      });
      
      // Recompensar al viewer en MC si tiene cuenta vinculada
      const mcName = await getLinkedMCAccount(clip.viewer_discord_id);
      if (mcName) {
        await rcon.send(give  diamond 5);
        await rcon.send(	itle  title {"text":"Tu clip fue destacado!","color":"gold"});
      }
    }
  }
}

setInterval(checkHighlightedClips, 30 * 60 * 1000);

Recompensas por Clips Virales

Sistema de tiers segun vistas:

Integracion con el Servidor Minecraft

Cuando un clip se vuelve viral, crea un momento especial en el servidor:

// Anunciar clip viral a todos los jugadores en linea
await rcon.send(roadcast &6&lCLIP VIRAL: &f capturo un momento epico!);
await rcon.send(roadcast &7Ver clip: &b);

// Dar reward a todos los jugadores en linea como celebracion
await rcon.send('give @a experience_bottle 3');

Implementa tu sistema de clips

Guia de la integracion Twitch completa con codigo de EventSub, RCON y Discord.

Ver Guia Completa