9148c358d0
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
7.4 KiB
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 |
|
none | A | 0.9 | applied |
|
2026-05-10 | pending |
|
소셜 미디어 그래픽 및 마케팅 캠페인 제작
매 한 줄
"매 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.
매 응용
- Campaign brief → 100 variants in 2 hours (concept exploration).
- Personalization at scale — segment 별 visual variant.
- 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
- 부모: AI 이미지 생성 및 편집 워크플로우 (AI Image Generation & Editing Workflow)
- 변형: Style_Reference_(--sref)
- Adjacent: 버전 및 모델 (Versions and Models)
🤖 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 |