중첩 Spintax
중첩이 평면적인 스피닝을 강력한 템플릿 엔진으로 변환하는 방법 — 그리고 Spintax.Net 접근 방식이 표준인 이유.
중첩 Spintax란?
일반 spintax는 목록에서 무작위로 하나를 선택합니다: {red|blue|green}는 세 가지 색상 중 하나를 생성합니다. 중첩 spintax는 spintax 안에 spintax를 배치합니다 — 마트료시카 인형처럼, 각 층이 내부에 더 많은 변형을 담고 있습니다.
엔진이 중첩 구조를 만나면 가장 안쪽 표현식에서 바깥쪽으로 해결합니다. 내부 중괄호가 먼저 평가되고, 그 결과가 외부 표현식의 일부가 됩니다.
{red|{dark|light} blue} car
Here {dark|light} resolves first (e.g. dark), producing {red|dark blue}. Then the outer enumeration picks one option: red or dark blue.
중첩이 중요한 이유
중첩이 없으면 옵션은 평면적입니다. 각각 세 가지 옵션을 가진 세 개의 열거로 3 + 3 + 3 = 9개의 프래그먼트를 얻습니다. 중첩을 사용하면 동일한 요소가 곱셈적으로 결합됩니다: 3 × 3 × 3 = 하나의 컴팩트한 템플릿에서 27개의 고유한 변형이 생성됩니다.
이 기하급수적 증가가 진정으로 고유한 콘텐츠를 생성하는 핵심입니다. 중첩 열거와 순열을 포함한 적당히 복잡한 템플릿은 신중하게 만든 하나의 소스에서 수천에서 수백만개의 서로 다른 출력을 생성할 수 있습니다.
다른 도구의 일반적인 제한
대부분의 spintax 도구는 기본적인 기능만 처리합니다. 일반적으로 문제가 되는 점은 다음과 같습니다:
- 열거 내 열거만 —
{a|{b|c}}는 지원하지만 그 외에는 지원하지 않습니다. 순열, 변수, 다른 요소 내의 인클루드는 불가능합니다. - 깊이 제한 — 많은 파서가 2–3단계의 중첩 후 오류가 발생하며, 조용히 손상된 출력을 생성합니다.
- 정리 없음 — 중첩 구조를 해결한 후 공백이 무너지고, 구두점이 중복되고, 대문자가 깨집니다. 결과물은 수동 편집이 필요합니다.
- 조합 불가 — 변수와 인클루드 없이는 모든 템플릿이 고립됩니다. 공통 블록을 재사용하려면 복사하여 붙여넣어야 합니다.
Spintax.Net 접근 방식
Spintax.Net은 중첩을 부차적 기능이 아닌 일급 기능으로 구현합니다. 다섯 가지 설계 결정이 이를 가능하게 합니다:
- 임의의 깊이 — 중첩 제한이 없습니다. 10단계 깊이도 2단계와 동일하게 작동합니다.
- 요소 간 중첩 — 순열 내의 열거, 열거 내의 순열, 중첩 구조를 포함하는 변수, 중첩된 전체 템플릿을 임베딩하는 인클루드. 모든 요소를 다른 모든 요소 안에 배치 가능.
- 가장 안쪽 우선 해결 — 엔진은 항상 가장 깊은 레벨에서 바깥쪽으로 해결합니다. 이를 통해 평가가 예측 가능하고 디버깅이 용이합니다.
- 스마트 후처리 — 모든 중첩이 해결된 후, 엔진은 자동으로 대문자를 수정하고, 중복 공백을 축소하고, 구두점 간격을 수정하고, 문장 경계를 처리합니다. 출력은 원시 연결이 아닌 깨끗한 텍스트입니다.
- 안전성 —
#include의 순환 참조 감지가 무한 루프를 방지합니다. 변수 스코프 규칙(런타임 > 로컬 > 글로벌)이 우발적 덮어쓰기를 방지합니다.
간단한 것부터 고급까지
1. Enum inside enum
{{premium|luxury} sedan|{compact|mid-size} SUV}
Inner enumerations resolve first, then the outer one picks a result. Possible outputs: premium sedan, luxury sedan, compact SUV, mid-size SUV.
2. Enum inside permutation
[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]
Each permutation element contains its own enumeration. The engine resolves inner enumerations first, then shuffles and joins. Example output: blue apples, bananas and small oranges.
3. Variables with nested spintax
#set %product% = {{premium|budget} {laptop|tablet}|{smart|classic} phone}
#set %action% = {Buy|Get|Order}
%action% your new %product% today!
Variables store nested spintax and resolve each time they are referenced. Combined with multiple variables, the variant count multiplies rapidly.
4. Includes with nesting
/# main template #/
#include "hero-text"
{Check out|Discover|Explore} our [<, > features|plans|pricing].
The included template can itself contain enumerations, permutations, variables, and even further includes. Circular reference detection keeps everything safe.
AI + 중첩 Spintax
대규모 언어 모델은 복잡한 중첩 템플릿 작성에 탁월합니다. 하나의 프롬프트로 여러 중첩 레벨, 변수를 통한 조건부 블록, 인클루드를 통한 재사용 가능한 섹션이 포함된 템플릿을 생성할 수 있습니다.
워크플로는 간단합니다: AI를 사용하여 템플릿을 한 번 만들고, Spintax를 사용하여 고유한 변형을 영원히 저렴하게 생성하세요. 템플릿 생성에 API 호출 1회. 각 변형 생성에 API 호출 0회. 중첩 spintax가 이를 경제적으로 실현 가능하게 만듭니다 — 중첩이 깊을수록 템플릿당 더 많은 고유 출력을 얻습니다.
시작하기
프로젝트에서 중첩 spintax를 사용할 준비가 되셨나요? 전체 사양은 구문 참조에서 확인하거나, Spintax WordPress 플러그인으로 실제 중첩을 체험해 보세요.