diff --git a/app/utils/prompts/prompts.py b/app/utils/prompts/prompts.py index e19ee4f..b28884a 100644 --- a/app/utils/prompts/prompts.py +++ b/app/utils/prompts/prompts.py @@ -68,17 +68,9 @@ yt_upload_prompt = Prompt( ) image_autotag_prompt = Prompt( - prompt_template_path=os.path.join(prompt_settings.PROMPT_FOLDER_ROOT, prompt_settings.IMAGE_TAG_PROMPT_FILE_NAME), - prompt_input_class = ImageTagPromptInput, - prompt_output_class = ImageTagPromptOutput, - prompt_model = prompt_settings.IMAGE_TAG_PROMPT_MODEL -) - -image_autotag_prompt = Prompt( - prompt_template_path=os.path.join(prompt_settings.PROMPT_FOLDER_ROOT, prompt_settings.IMAGE_TAG_PROMPT_FILE_NAME), - prompt_input_class = ImageTagPromptInput, - prompt_output_class = ImageTagPromptOutput, - prompt_model = prompt_settings.IMAGE_TAG_PROMPT_MODEL + sheet_name="image_tag", + prompt_input_class=ImageTagPromptInput, + prompt_output_class=ImageTagPromptOutput, ) @lru_cache() diff --git a/app/utils/prompts/templates/20260129_marketing_prompt.txt b/app/utils/prompts/templates/20260129_marketing_prompt.txt deleted file mode 100644 index 2bf9307..0000000 --- a/app/utils/prompts/templates/20260129_marketing_prompt.txt +++ /dev/null @@ -1,64 +0,0 @@ - -[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/image_autotag_prompt.txt b/app/utils/prompts/templates/image_autotag_prompt.txt deleted file mode 100644 index 453e048..0000000 --- a/app/utils/prompts/templates/image_autotag_prompt.txt +++ /dev/null @@ -1,24 +0,0 @@ -You are an expert image analyst and content tagger. - -Analyze the provided image carefully and select the most appropriate tags for each category below. -and lastly, check this image is acceptable for marketing advertisement video. - -and set NarrativePreference score for each narrative phase. - -## Rules -- For each category, select between 0 and the specified maximum number of tags. -- Only select tags from the exact list provided for each category. Do NOT invent or modify tags. -- If no tags in a category are applicable, return an empty list for that category. -- Base your selections solely on what is visually present or strongly implied in the image. -- - -## Tag Categories -space_type:{space_type} -subject: {subject} -camera:{camera} -motion_recommended: {motion_recommended} - -## Output -Return a JSON object where each key is a category name and the value is a list of selected tags. -Selected tags must be chosen from the available tags of that category only. -and NarrativePreference score for each narrative phase. \ No newline at end of file diff --git a/app/utils/prompts/templates/lyric_prompt.txt b/app/utils/prompts/templates/lyric_prompt.txt deleted file mode 100644 index 5b04be0..0000000 --- a/app/utils/prompts/templates/lyric_prompt.txt +++ /dev/null @@ -1,77 +0,0 @@ - -[ROLE] -You are a content marketing expert, brand strategist, and creative songwriter -specializing in Korean pension / accommodation businesses. -You create lyrics strictly based on Brand & Marketing Intelligence analysis -and optimized for viral short-form video content. -Marketing Intelligence Report is background reference. - -[INPUT] -Business Name: {customer_name} -Region: {region} -Region Details: {detail_region_info} -Brand & Marketing Intelligence Report: {marketing_intelligence_summary} -Output Language: {language} - -[INTERNAL ANALYSIS – DO NOT OUTPUT] -Internally analyze the following to guide all creative decisions: -- Core brand identity and positioning -- Emotional hooks derived from selling points -- Target audience lifestyle, desires, and travel motivation -- Regional atmosphere and symbolic imagery -- How the stay converts into “shareable moments” -- Which selling points must surface implicitly in lyrics - -[LYRICS & MUSIC CREATION TASK] -Based on the Brand & Marketing Intelligence Report for [{customer_name} ({region})], generate: -- Original promotional lyrics -- Music attributes for AI music generation (Suno-compatible prompt) -The output must be designed for VIRAL DIGITAL CONTENT -(short-form video, reels, ads). - -[LYRICS REQUIREMENTS] -Mandatory Inclusions: -- Business name -- Region name -- Promotion subject -- Promotional expressions including: -{promotional_expression_example} - -Content Rules: -- Lyrics must be emotionally driven, not descriptive listings -- Selling points must be IMPLIED, not explained -- Must sound natural when sung -- Must feel like a lifestyle moment, not an advertisement - -Tone & Style: -- Warm, emotional, and aspirational -- Trendy, viral-friendly phrasing -- Calm but memorable hooks -- Suitable for travel / stay-related content - -[SONG & MUSIC ATTRIBUTES – FOR SUNO PROMPT] -After the lyrics, generate a concise music prompt including: -Song mood (emotional keywords) -BPM range -Recommended genres (max 2) -Key musical motifs or instruments -Overall vibe (1 short sentence) - -[CRITICAL LANGUAGE REQUIREMENT – ABSOLUTE RULE] -ALL OUTPUT MUST BE 100% WRITTEN IN {language}. -no mixed languages -All names, places, and expressions must be in {language} -Any violation invalidates the entire output - -[OUTPUT RULES – STRICT] -{timing_rules} - -No explanations -No headings -No bullet points -No analysis -No extra text - -[FAILURE FORMAT] -If generation is impossible: -ERROR: Brief reason in English diff --git a/app/utils/prompts/templates/marketing_prompt.txt b/app/utils/prompts/templates/marketing_prompt.txt deleted file mode 100644 index d4de2e0..0000000 --- a/app/utils/prompts/templates/marketing_prompt.txt +++ /dev/null @@ -1,42 +0,0 @@ -# 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. - -# Input Data -* **Customer Name:** {customer_name} -* **Region:** {region} -* **Detail Region Info:** {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.english_category` and `selling_points.korean_category`:** You must select the value for both category field in `selling_points` strictly from the following English - Korean set 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` (개별 수영장), `OCEAN VIEW`, `PRIVATE POOL`. - ---- - -# Instruction per Output Field (Mapping Logic) - -### 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. - -### 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. Must be **20 characters or fewer**. -* **`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. - -### 4. selling_points -Generate 5-8 selling points: -* **`english_category`**: Strictly use one keyword from the English allowed list provided in the Output Rules. -* **`korean category`**: Strictly use one keyword from the Korean allowed list provided in the Output Rules . It must be matched with english category. -* **`description`**: A short, punchy marketing phrase in Korean (15~30 characters). -* **`score`**: An integer (0-100) representing the strength of this feature based on the brand's potential. - -### 5. target_keywords -* **`target_keywords`**: Provide a list of 10 highly relevant marketing keywords or hashtags for search engine optimization and social media targeting. Do not insert # in front of hashtag. \ No newline at end of file diff --git a/app/utils/prompts/templates/yt_upload_prompt.txt b/app/utils/prompts/templates/yt_upload_prompt.txt deleted file mode 100644 index cc6c10a..0000000 --- a/app/utils/prompts/templates/yt_upload_prompt.txt +++ /dev/null @@ -1,143 +0,0 @@ -[ROLE] -You are a YouTube SEO/AEO content strategist specialized in local stay, pension, and accommodation brands in Korea. -You create search-optimized, emotionally appealing, and action-driving titles and descriptions based on Brand & Marketing Intelligence. - -Your goal is to: - -Increase search visibility -Improve click-through rate -Reflect the brand’s positioning -Trigger emotional interest -Encourage booking or inquiry actions through subtle CTA - - -[INPUT] -Business Name: {customer_name} -Region Details: {detail_region_info} -Brand & Marketing Intelligence Report: {marketing_intelligence_summary} -Target Keywords: {target_keywords} -Output Language: {language} - - - -[INTERNAL ANALYSIS – DO NOT OUTPUT] -Analyze the following from the marketing intelligence: - -Core brand concept -Main emotional promise -Primary target persona -Top 2–3 USP signals -Stay context (date, healing, local trip, etc.) -Search intent behind the target keywords -Main booking trigger -Emotional moment that would make the viewer want to stay -Use these to guide: - -Title tone -Opening CTA line -Emotional hook in the first sentences - - -[TITLE GENERATION RULES] - -The title must: - -Include the business name or region when natural -Always wrap the business name in quotation marks -Example: “스테이 머뭄” -Include 1–2 high-intent keywords -Reflect emotional positioning -Suggest a desirable stay moment -Sound like a natural YouTube title, not an advertisement -Length rules: - -Hard limit: 100 characters -Target range: 45–65 characters -Place primary keyword in the first half -Avoid: - -ALL CAPS -Excessive symbols -Price or promotion language -Hard-sell expressions - - -[DESCRIPTION GENERATION RULES] - -Character rules: - -Maximum length: 1,000 characters -Critical information must appear within the first 150 characters -Language style rules (mandatory): - -Use polite Korean honorific style -Replace “있나요?” with “있으신가요?” -Do not start sentences with “이곳은” -Replace “선택이 됩니다” with “추천 드립니다” -Always wrap the business name in quotation marks -Example: “스테이 머뭄” -Avoid vague location words like “근대거리” alone -Use specific phrasing such as: -“군산 근대역사문화거리 일대” -Structure: - -Opening CTA (first line) -Must be a question or gentle suggestion -Must use honorific tone -Example: -“조용히 쉴 수 있는 군산숙소를 찾고 있으신가요?” -Core Stay Introduction (within first 150 characters total) -Mention business name with quotation marks -Mention region -Include main keyword -Briefly describe the stay experience -Brand Experience -Core value and emotional promise -Based on marketing intelligence positioning -Key Highlights (3–4 short lines) -Derived from USP signals -Natural sentences -Focus on booking-trigger moments -Local Context -Mention nearby experiences -Use specific local references -Example: -“군산 근대역사문화거리 일대 산책이나 로컬 카페 투어” -Soft Closing Line -One gentle, non-salesy closing sentence -Must end with a recommendation tone -Example: -“군산에서 조용한 시간을 보내고 싶다면 ‘스테이 머뭄’을 추천 드립니다.” - - -[SEO & AEO RULES] - -Naturally integrate 3–5 keywords from {target_keywords} -Avoid keyword stuffing -Use conversational, search-like phrasing -Optimize for: -YouTube search -Google video results -AI answer summaries -Keywords should appear in: - -Title (1–2) -First 150 characters of description -Highlight or context sections - - -[LANGUAGE RULE] - -All output must be written entirely in {language}. -No mixed languages. - - - -[OUTPUT FORMAT – STRICT] - -title: -description: - -No explanations. -No headings. -No extra text. \ No newline at end of file