From fd4d85cf9e199173582282c3dd499a55e1848cee Mon Sep 17 00:00:00 2001 From: jaehwang Date: Thu, 29 Jan 2026 02:24:08 +0000 Subject: [PATCH] =?UTF-8?q?=EB=A7=88=EC=BC=80=ED=8C=85=20=ED=94=84?= =?UTF-8?q?=EB=A1=AC=ED=94=84=ED=8A=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/utils/prompts/schemas/marketing.py | 6 +- .../templates/20260129_marketing_prompt.txt | 64 ++++++++++++++ .../prompts/templates/marketing_prompt.txt | 87 +++++++------------ 3 files changed, 99 insertions(+), 58 deletions(-) create mode 100644 app/utils/prompts/templates/20260129_marketing_prompt.txt diff --git a/app/utils/prompts/schemas/marketing.py b/app/utils/prompts/schemas/marketing.py index c935a32..f9149f8 100644 --- a/app/utils/prompts/schemas/marketing.py +++ b/app/utils/prompts/schemas/marketing.py @@ -10,8 +10,8 @@ class MarketingPromptInput(BaseModel): # Output 정의 class BrandIdentity(BaseModel): - location_feature_analysis: str = Field(..., description="입지 특성 분석") - concept_scalability: str = Field(..., description="컨셉 확장성") + location_feature_analysis: str = Field(..., description="입지 특성 분석 (80자 이상 150자 이하)", min_length = 80, max_length = 150) # min/max constraint는 현재 openai json schema 등에서 작동하지 않는다는 보고가 있음. + concept_scalability: str = Field(..., description="컨셉 확장성 (80자 이상 150자 이하)", min_length = 80, max_length = 150) class MarketPositioning(BaseModel): @@ -33,7 +33,7 @@ class TargetPersona(BaseModel): class SellingPoint(BaseModel): category: str = Field(..., description="셀링포인트 카테고리") description: str = Field(..., description="상세 설명") - score: int = Field(..., ge=0, le=100, description="점수 (100점 만점)") + score: int = Field(..., ge=70, le=99, description="점수 (100점 만점)") class MarketingPromptOutput(BaseModel): brand_identity: BrandIdentity = Field(..., description="브랜드 아이덴티티") diff --git a/app/utils/prompts/templates/20260129_marketing_prompt.txt b/app/utils/prompts/templates/20260129_marketing_prompt.txt new file mode 100644 index 0000000..2bf9307 --- /dev/null +++ b/app/utils/prompts/templates/20260129_marketing_prompt.txt @@ -0,0 +1,64 @@ + +[Role & Objective] +Act as a content marketing expert with strong domain knowledge in the Korean pension / stay-accommodation industry. +Your goal is to produce a Marketing Intelligence Report that will be shown to accommodation owners BEFORE any content is generated. +The report must clearly explain what makes the property sellable, marketable, and scalable through content. + +[INPUT] +- Business Name: {customer_name} +- Region: {region} +- Region Details: {detail_region_info} + +[Core Analysis Requirements] +Analyze the property based on: +Location, concept, and nearby environment +Target customer behavior and reservation decision factors +Include: +- Target customer segments & personas +- Unique Selling Propositions (USPs) +- Competitive landscape (direct & indirect competitors) +- Market positioning + +[Key Selling Point Structuring – UI Optimized] +From the analysis above, extract the main Key Selling Points using the structure below. +Rules: +Focus only on factors that directly influence booking decisions +Each selling point must be concise and visually scannable +Language must be reusable for ads, short-form videos, and listing headlines +Avoid full sentences in descriptions; use short selling phrases +Do not provide in report + +Output format: +[Category] +(Tag keyword – 5~8 words, noun-based, UI oval-style) +One-line selling phrase (not a full sentence) +Limit: +5 to 8 Key Selling Points only +Do not provide in report + +[Content & Automation Readiness Check] +Ensure that: +Each tag keyword can directly map to a content theme +Each selling phrase can be used as: +- Video hook +- Image headline +- Ad copy snippet + + +[Tag Generation Rules] +- Tags must include **only core keywords that can be directly used for viral video song lyrics** +- Each tag should be selected with **search discovery + emotional resonance + reservation conversion** in mind +- The number of tags must be **exactly 5** +- Tags must be **nouns or short keyword phrases**; full sentences are strictly prohibited +- The following categories must be **balanced and all represented**: + 1) **Location / Local context** (region name, neighborhood, travel context) + 2) **Accommodation positioning** (emotional stay, private stay, boutique stay, etc.) + 3) **Emotion / Experience** (healing, rest, one-day escape, memory, etc.) + 4) **SNS / Viral signals** (Instagram vibes, picture-perfect day, aesthetic travel, etc.) + 5) **Travel & booking intent** (travel, getaway, stay, relaxation, etc.) + +- If a brand name exists, **at least one tag must include the brand name or a brand-specific expression** +- Avoid overly generic keywords (e.g., “hotel”, “travel” alone); **prioritize distinctive, differentiating phrases** +- The final output must strictly follow the JSON format below, with no additional text + + "tags": ["Tag1", "Tag2", "Tag3", "Tag4", "Tag5"] diff --git a/app/utils/prompts/templates/marketing_prompt.txt b/app/utils/prompts/templates/marketing_prompt.txt index 2bf9307..c3c116c 100644 --- a/app/utils/prompts/templates/marketing_prompt.txt +++ b/app/utils/prompts/templates/marketing_prompt.txt @@ -1,64 +1,41 @@ +# Role +Act as a Senior Brand Strategist and Marketing Data Analyst. Your goal is to analyze the provided input data and generate a high-level Marketing Intelligence Report based on the defined output structure. -[Role & Objective] -Act as a content marketing expert with strong domain knowledge in the Korean pension / stay-accommodation industry. -Your goal is to produce a Marketing Intelligence Report that will be shown to accommodation owners BEFORE any content is generated. -The report must clearly explain what makes the property sellable, marketable, and scalable through content. +# Input Data +* **Customer Name:** {customer_name} +* **Region:** {region} +* **Detail Region Info:** {detail_region_info} -[INPUT] -- Business Name: {customer_name} -- Region: {region} -- Region Details: {detail_region_info} +# Output Rules +1. **Language:** All descriptive content must be written in **Korean (한국어)**. +2. **Terminology:** Use professional marketing terminology suitable for the hospitality and stay industry. +3. **Strict Selection for `selling_points.category`:** You must select the value for the `category` field in `selling_points` strictly from the following English allowed list to ensure UI compatibility: + * `LOCATION`, `CONCEPT`, `PRIVACY`, `NIGHT MOOD`, `HEALING`, `PHOTO SPOT`, `SHORT GETAWAY`, `HOSPITALITY`, `SWIMMING POOL`, `JACUZZI`, `BBQ PARTY`, `FIRE PIT`, `GARDEN`, `BREAKFAST`, `KIDS FRIENDLY`, `PET FRIENDLY`, `OCEAN VIEW`, `PRIVATE POOL`. -[Core Analysis Requirements] -Analyze the property based on: -Location, concept, and nearby environment -Target customer behavior and reservation decision factors -Include: -- Target customer segments & personas -- Unique Selling Propositions (USPs) -- Competitive landscape (direct & indirect competitors) -- Market positioning +--- -[Key Selling Point Structuring – UI Optimized] -From the analysis above, extract the main Key Selling Points using the structure below. -Rules: -Focus only on factors that directly influence booking decisions -Each selling point must be concise and visually scannable -Language must be reusable for ads, short-form videos, and listing headlines -Avoid full sentences in descriptions; use short selling phrases -Do not provide in report +# Instruction per Output Field (Mapping Logic) -Output format: -[Category] -(Tag keyword – 5~8 words, noun-based, UI oval-style) -One-line selling phrase (not a full sentence) -Limit: -5 to 8 Key Selling Points only -Do not provide in report +### 1. brand_identity +* **`location_feature_analysis`**: Analyze the marketing advantages of the given `{region}` and `{detail_region_info}`. Explain why this specific location is attractive to travelers. summarize in 1-2 sentences. (e.g., proximity to nature, accessibility from Seoul, or unique local atmosphere). +* **`concept_scalability`**: Based on `{customer_name}`, analyze how the brand's core concept can expand into a total customer experience or additional services. summarize in 1-2 sentences. -[Content & Automation Readiness Check] -Ensure that: -Each tag keyword can directly map to a content theme -Each selling phrase can be used as: -- Video hook -- Image headline -- Ad copy snippet +### 2. market_positioning +* **`category_definition`**: Define a sharp, niche market category for this business (e.g., "Private Forest Cabin" or "Luxury Kids Pool Villa"). +* **`core_value`**: Identify the single most compelling emotional or functional value that distinguishes `{customer_name}` from competitors. +### 3. target_persona +Generate a list of personas based on the following: +* **`persona`**: Provide a descriptive name and profile for the target group. +* **`age`**: Set `min_age` and `max_age` (Integer 0-100) that accurately reflects the segment. +* **`favor_target`**: List specific elements or vibes this persona prefers (e.g., "Minimalist interior", "Pet-friendly facilities"). +* **`decision_trigger`**: Identify the specific "Hook" or facility that leads this persona to finalize a booking. -[Tag Generation Rules] -- Tags must include **only core keywords that can be directly used for viral video song lyrics** -- Each tag should be selected with **search discovery + emotional resonance + reservation conversion** in mind -- The number of tags must be **exactly 5** -- Tags must be **nouns or short keyword phrases**; full sentences are strictly prohibited -- The following categories must be **balanced and all represented**: - 1) **Location / Local context** (region name, neighborhood, travel context) - 2) **Accommodation positioning** (emotional stay, private stay, boutique stay, etc.) - 3) **Emotion / Experience** (healing, rest, one-day escape, memory, etc.) - 4) **SNS / Viral signals** (Instagram vibes, picture-perfect day, aesthetic travel, etc.) - 5) **Travel & booking intent** (travel, getaway, stay, relaxation, etc.) +### 4. selling_points +Generate exactly 7 selling points: +* **`category`**: Strictly use one keyword from the English allowed list provided in the Output Rules. +* **`description`**: A short, punchy marketing phrase in Korean (max 20 characters). +* **`score`**: An integer (70-99) representing the strength of this feature based on the brand's potential. -- If a brand name exists, **at least one tag must include the brand name or a brand-specific expression** -- Avoid overly generic keywords (e.g., “hotel”, “travel” alone); **prioritize distinctive, differentiating phrases** -- The final output must strictly follow the JSON format below, with no additional text - - "tags": ["Tag1", "Tag2", "Tag3", "Tag4", "Tag5"] +### 5. target_keywords +* **`target_keywords`**: Provide a list of 10 highly relevant marketing keywords or hashtags for search engine optimization and social media targeting. \ No newline at end of file