Files
2nd/10_Wiki/Topics/AI_and_ML/소셜 미디어 그래픽 및 마케팅 캠페인 제작.md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

7.4 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-소셜-미디어-그래픽-및-마케팅-캠페인-제작 소셜 미디어 그래픽 및 마케팅 캠페인 제작 10_Wiki/Topics verified self
Social Media Graphic
Marketing Campaign Creation
AI Marketing Asset Pipeline
none A 0.9 applied
ai-image-generation
marketing
social-media
brand-identity
workflow
batch-pipeline
2026-05-10 pending
language framework
python comfyui-and-flux

소셜 미디어 그래픽 및 마케팅 캠페인 제작

매 한 줄

"매 brand-locked aesthetic + multi-aspect-ratio + 매 hundreds of variants in hours". 매 2026 의 marketing team 의 매 standard pipeline: FLUX 1.2 + brand LoRA + automated aspect ratio generation + Recraft text rendering — 매 manual designer 작업 의 80% 자동화, 매 final taste judgment 만 human.

매 핵심

매 Campaign asset 의 종류

  • Hero image (1:1, 16:9, 9:16): Instagram, Facebook, Story/Reel.
  • Thumbnail variants: A/B test 용 다양한 angle/composition.
  • Banner ad (Google Display, Meta): typography-heavy.
  • Carousel (Instagram, LinkedIn): 매 narrative sequence.
  • Animated: Reel, TikTok — Sora 2 / Runway Gen-4.

매 Brand consistency 의 lever

  • Brand LoRA: 매 logo, color palette, mascot 의 LoRA 학습 (50-200 images).
  • Style reference (--sref / IP-Adapter): 매 fixed aesthetic vector.
  • Color palette enforcement: post-processing color quantization.
  • Typography: Recraft v4 / Imagen 4 의 native text rendering, 매 final composite 은 Figma/After Effects.

매 응용

  1. Campaign brief → 100 variants in 2 hours (concept exploration).
  2. Personalization at scale — segment 별 visual variant.
  3. Localization — 매 region 별 typography + cultural cue swap.

💻 패턴

Campaign generator pipeline

from dataclasses import dataclass
from pathlib import Path

@dataclass
class CampaignBrief:
    product: str
    audience: str
    mood: list[str]
    aspect_ratios: list[str]
    variants_per_ratio: int
    brand_lora: str
    style_ref: str | None

def generate_campaign(brief: CampaignBrief, out: Path):
    pipe = load_flux_with_lora(brief.brand_lora)
    if brief.style_ref:
        pipe = attach_ip_adapter(pipe, brief.style_ref)
    for ar in brief.aspect_ratios:
        w, h = aspect_to_dims(ar)
        for i in range(brief.variants_per_ratio):
            prompt = build_prompt(brief, variant_seed=i)
            img = pipe(prompt, width=w, height=h,
                       generator=torch.Generator("cuda").manual_seed(1000 + i)).images[0]
            img.save(out / f"{ar}/{i:03d}.png")

Aspect ratio dispatch

ASPECTS = {
    "1:1":  (1024, 1024),  # IG feed
    "4:5":  (1024, 1280),  # IG portrait
    "9:16": (768, 1344),   # Story / Reel
    "16:9": (1344, 768),   # YT thumb / banner
    "21:9": (1536, 640),   # LinkedIn banner
}

Brand LoRA training (kohya-ss / sd-scripts)

accelerate launch flux_train_network.py \
  --pretrained_model_name_or_path=black-forest-labs/FLUX.1.2-dev \
  --train_data_dir=./brand-imgs \
  --output_dir=./loras/brand-v1 \
  --network_module=networks.lora_flux \
  --network_dim=32 \
  --learning_rate=1e-4 \
  --max_train_steps=2000 \
  --resolution=1024 \
  --train_batch_size=1

Prompt template + variant seed

def build_prompt(b: CampaignBrief, variant_seed: int) -> str:
    angles = ["overhead flat lay", "three-quarter hero", "macro close-up"]
    moods = b.mood
    angle = angles[variant_seed % len(angles)]
    mood = moods[variant_seed % len(moods)]
    return (
        f"{b.product}, {angle}, {mood}, "
        f"clean studio lighting, brand_v1 aesthetic, "
        f"target audience: {b.audience}, professional commercial photography"
    )

Post-process — palette enforcement

from PIL import Image
import numpy as np
from sklearn.cluster import KMeans

BRAND_PALETTE = np.array([[27, 38, 59], [65, 90, 119], [224, 225, 221], [119, 141, 169]])

def snap_to_palette(img: Image.Image, palette=BRAND_PALETTE) -> Image.Image:
    arr = np.array(img).reshape(-1, 3)
    dists = np.linalg.norm(arr[:, None] - palette[None], axis=2)
    snapped = palette[dists.argmin(axis=1)]
    return Image.fromarray(snapped.reshape(img.size[1], img.size[0], 3).astype(np.uint8))

Text overlay (Pillow → Figma export)

from PIL import ImageDraw, ImageFont

def add_headline(img: Image.Image, text: str, font_path: str) -> Image.Image:
    draw = ImageDraw.Draw(img)
    font = ImageFont.truetype(font_path, size=72)
    box = draw.textbbox((0, 0), text, font=font)
    x = (img.width - (box[2] - box[0])) // 2
    y = img.height - (box[3] - box[1]) - 80
    draw.rectangle([x - 20, y - 20, x + box[2] + 20, y + box[3] + 20], fill=(0, 0, 0, 180))
    draw.text((x, y), text, font=font, fill="white")
    return img

A/B variant export with metadata

import json
def export_variant(img, variant_id, brief, out):
    img.save(out / f"{variant_id}.png")
    with open(out / f"{variant_id}.json", "w") as f:
        json.dump({
            "id": variant_id,
            "model": "flux-1.2-dev",
            "lora": brief.brand_lora,
            "prompt": ...,
            "seed": ...,
            "created": datetime.utcnow().isoformat(),
        }, f, indent=2)

Animated extension (Sora 2 / Kling)

# image-to-video
video = sora_client.create_video(
    image=hero_image_url,
    prompt="subtle camera push-in, gentle product rotation",
    duration=4,
    resolution="1080p",
)

매 결정 기준

자산 종류 권장 도구 (2026)
Hero photoreal FLUX 1.2 + brand LoRA
Typography-heavy banner Imagen 4 / Recraft v4
Vector / icon Recraft v4
Animated reel Sora 2 / Kling 2 / Runway Gen-4
Localization variants LLM prompt translate + Imagen 4 (text)
Final composite Figma / Photoshop generative fill

기본값: FLUX 1.2 + brand LoRA + IP-Adapter style ref + Pillow text overlay (or Figma final composite). 매 batch 100+ 변형 의 cost ~$5-20.

🔗 Graph

🤖 LLM 활용

언제: campaign brief → prompt template, headline/CTA copy 의 variant generation, brief → asset checklist. 언제 X: 매 final aesthetic taste — 매 brand director 의 review 필수. LLM 의 visual judgment hallucination.

안티패턴

  • No brand LoRA, free-floating prompts: 매 inconsistent style — 매 brand erosion.
  • Single seed batch: 매 variant 의 의미 없음. Seed sweep 필수.
  • Text rendering in FLUX direct: 매 still error-prone (2026). Imagen 4 / Recraft / final overlay 권장.
  • No metadata trail: 매 후속 reproduction / audit 불가.
  • Skipping color palette enforcement: brand color 의 drift.

🧪 검증 / 중복

  • Verified (Black Forest Labs FLUX 1.2 docs, Recraft v4 docs, kohya-ss flux training, Meta/Google ad spec sheets 2026).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — campaign pipeline, brand LoRA, multi-aspect, Sora 2 extension