新增 Pinterest 参考模式:独立于 Google Trends 的完整链路(12国种子词池 / LLM搜索词json_schema+防重复+已用词限100 / 并发爬图 / 多模态分析→原创简报 / 生图带爬取图参考图生图 / UI流程选择)
This commit is contained in:
@@ -145,3 +145,46 @@ class MockBackend:
|
||||
"style_seeds": _dedup_limit(style, max_style),
|
||||
"related_seeds": _dedup_limit(related, max_related),
|
||||
}
|
||||
|
||||
def generate_pinterest_terms(self, context: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"""规则生成 Pinterest 搜索词(零 API 成本):从种子词池随机取 + 两两组合增加多样性。"""
|
||||
import random
|
||||
seeds = [str(s).strip() for s in (context.get("seeds") or []) if str(s).strip()]
|
||||
used = {str(u).strip().lower() for u in (context.get("used_terms") or [])}
|
||||
count = int(context.get("count", 10))
|
||||
pool = [s for s in seeds if s.lower() not in used]
|
||||
random.shuffle(pool)
|
||||
terms = pool[:count]
|
||||
# 不足时用「种子词 + 风格词」组合补足(视觉导向,避免与已用重复)
|
||||
style_tail = ["aesthetic", "style", "inspiration", "design", "vibe", "art"]
|
||||
i = 0
|
||||
while len(terms) < count and pool:
|
||||
combo = f"{pool[i % len(pool)]} {style_tail[(i // len(pool)) % len(style_tail)]}"
|
||||
if combo.lower() not in used and combo not in terms:
|
||||
terms.append(combo)
|
||||
i += 1
|
||||
return {"search_terms": terms}
|
||||
|
||||
def analyze_pinterest_images(self, image_paths, term="", country=""):
|
||||
"""规则生成设计简报(零 API 成本):按搜索词启发式推导风格/配色/构图。"""
|
||||
from ..classify import classify, prompt_suggestion
|
||||
cat = classify(term)
|
||||
art_style, palette = derive_style_palette(term, country, category=cat)
|
||||
motif = prompt_suggestion(term, cat).split(" --no ")[0].split(",")[0].strip()
|
||||
composition = derive_composition(term, cat)
|
||||
negative = ("no real people, no likeness of any person, no copyrighted characters, "
|
||||
"no brand logos, no trademarks, no celebrity, no readable text unless safe")
|
||||
n = max(1, len(image_paths or []))
|
||||
paths = list(image_paths or [])
|
||||
return [{
|
||||
"topic": term,
|
||||
"concept": f"(启发式兜底)围绕「{term}」做原创{art_style}风格印花",
|
||||
"motif": motif,
|
||||
"art_style": art_style,
|
||||
"color_palette": palette,
|
||||
"composition": composition,
|
||||
"negative_prompt": negative,
|
||||
# 生图参考:每条简报对应其来源爬取图(mock 按图逐张产出简报,顺序一一对应)
|
||||
"ref_images": [str(paths[i])] if i < len(paths) else [],
|
||||
"source": "pinterest",
|
||||
} for i in range(n)]
|
||||
|
||||
Reference in New Issue
Block a user