Spintax Anidado

Cómo el anidamiento transforma el spinning plano en un potente motor de plantillas — y por qué el enfoque de Spintax.Net es el estándar.

¿Qué es el Spintax Anidado?

El spintax regular elige una opción aleatoria de una lista: {rojo|azul|verde} produce uno de tres colores. El spintax anidado coloca spintax dentro de spintax — como una matrioska, donde cada capa revela más variación en su interior.

Cuando el motor encuentra estructuras anidadas, las resuelve desde la expresión más interna hacia afuera. Las llaves interiores se evalúan primero, y su resultado pasa a formar parte de la expresión exterior.

{red|{dark|light} blue} car

Aquí {dark|light} se resuelve primero (p. ej., dark), produciendo {red|dark blue}. Después la enumeración externa elige una opción: red o dark blue.

Por qué importa el anidamiento

Sin anidamiento, tus opciones son planas. Tres enumeraciones con tres opciones cada una dan 3 + 3 + 3 = 9 fragmentos. Con anidamiento, los mismos elementos se combinan multiplicativamente: 3 × 3 × 3 = 27 variantes únicas a partir de una sola plantilla compacta.

Este crecimiento exponencial es la clave para generar contenido verdaderamente único. Una plantilla moderadamente compleja con enumeraciones y permutaciones anidadas puede producir miles o millones de resultados distintos — todo a partir de una sola fuente cuidadosamente elaborada.

Limitaciones comunes de otras herramientas

La mayoría de las herramientas de spintax solo manejan lo básico. Esto es lo que suele fallar:

  • Solo enumeración dentro de enumeración — soportan {a|{b|c}} pero nada más. Sin permutaciones, sin variables, sin includes dentro de otros elementos.
  • Límites de profundidad — muchos parsers fallan después de 2–3 niveles de anidamiento, produciendo silenciosamente resultados corruptos.
  • Sin limpieza — tras resolver estructuras anidadas, los espacios se colapsan, la puntuación se duplica, las mayúsculas se rompen. El resultado necesita edición manual.
  • Sin composabilidad — sin variables e includes, cada plantilla es una isla. Reutilizar bloques comunes significa copiar y pegar.

El enfoque de Spintax.Net

Spintax.Net implementa el anidamiento como una característica de primera clase, no como un añadido. Cinco decisiones de diseño lo hacen funcionar:

  1. Profundidad arbitraria — no hay límite de anidamiento. Diez niveles de profundidad funcionan igual que dos.
  2. Anidamiento entre elementos — enumeraciones dentro de permutaciones, permutaciones dentro de enumeraciones, variables con estructuras anidadas, includes que incorporan plantillas anidadas completas. Cualquier elemento dentro de cualquier otro.
  3. Resolución de adentro hacia afuera — el motor siempre resuelve desde el nivel más profundo hacia afuera. Esto hace que la evaluación sea predecible y depurable.
  4. Post-procesamiento inteligente — después de resolver todo el anidamiento, el motor corrige automáticamente las mayúsculas, elimina espacios duplicados, corrige el espaciado de puntuación y maneja los límites de oración. El resultado es texto limpio, no una concatenación en bruto.
  5. Seguridad — la detección de referencias circulares para #include previene bucles infinitos. Las reglas de ámbito de variables (runtime > local > global) previenen sobreescrituras accidentales.

De lo simple a lo avanzado

1. Enumeración dentro de enumeración

{{premium|luxury} sedan|{compact|mid-size} SUV}

Las enumeraciones internas se resuelven primero; luego la externa elige el resultado. Salidas posibles: premium sedan, luxury sedan, compact SUV, mid-size SUV.

2. Enumeración dentro de permutación

[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]

Cada elemento de la permutación contiene su propia enumeración. El motor resuelve primero las enumeraciones internas y después baraja y une. Ejemplo de salida: blue apples, bananas and small oranges.

3. Variables #set con spintax anidado

#set %product% = {{premium|budget} {laptop|tablet}|{smart|classic} phone}
#set %action% = {Buy|Get|Order}

%action% your new %product% today!

#set es una macro: guarda el spintax anidado sin resolver y lo vuelve a sortear en cada referencia, así que dos menciones de %product% pueden producir dos productos distintos. Combinado con varias variables, el número de variantes se multiplica rápidamente.

4. #def — se sortea una vez, vale en todas partes

#def %brand% = {{Nord|Prime} Tools|Acme {Labs|Works}}

%brand% ships today. Order %brand% now!

#def resuelve su spintax anidado una vez por render y mantiene ese resultado en todas las referencias: aquí ambas menciones nombran la misma marca. Usa #def cuando las referencias repetidas deben coincidir (marcas, contadores); usa #set cuando cada referencia debe variar por su cuenta.

5. Condicionales alrededor de bloques anidados

{?PLAN?{Upgrade to|Unlock} {Pro|Premium} features|{Try|Start with} the free tier}

El pre-pass {?VAR?then|else} elige la rama según si %PLAN% tiene valor — antes de cualquier elección aleatoria. La rama descartada se elimina entera: nada en su interior se evalúa ni se sortea.

6. Plurales con contador anidado

#def %n% = {2|5|21}

Renders %n% {plural %n%: variant|variants} per click.

El contador es a su vez spintax — y su variable debe ser #def, no #set: la forma se elige después de resolver el contador, y una macro en ese momento seguiría siendo spintax sin resolver. Cuántas formas se indican lo decide el locale del render: dos en español o inglés, tres en ruso o ucraniano.

7. Includes con anidamiento

/#  main template  #/
#include "hero-text"

{Check out|Discover|Explore} our [<, > features|plans|pricing].

La plantilla incluida puede contener a su vez enumeraciones, permutaciones, variables e incluso más includes. La detección de referencias circulares lo mantiene todo a salvo.

IA + Spintax Anidado

Los grandes modelos de lenguaje son excelentes escribiendo plantillas anidadas complejas. Un solo prompt puede producir una plantilla con múltiples niveles de anidamiento, bloques condicionales por valor ({?VAR?…}), plurales según el locale y secciones reutilizables mediante includes.

El flujo de trabajo es simple: usa IA para crear la plantilla una vez, luego usa Spintax para generar variantes únicas de forma económica para siempre. Una llamada API para crear la plantilla. Cero llamadas API para generar cada variante. El spintax anidado es lo que hace esto económicamente viable — cuanto más profundo el anidamiento, más resultados únicos por plantilla.

Primeros pasos

¿Listo para usar spintax anidado en tus proyectos? Pruébalo en vivo en el playground — pega cualquier ejemplo de arriba y mira cómo se resuelve. La referencia de sintaxis tiene la especificación completa, y para producción elige uno de los cuatro motores open source — o el plugin de WordPress si ese es tu runtime.