ssboost commited on
Commit
1775df5
ยท
verified ยท
1 Parent(s): 07558d5

Create product_review_blog.py

Browse files
Files changed (1) hide show
  1. product_review_blog.py +1085 -0
product_review_blog.py ADDED
@@ -0,0 +1,1085 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import random
3
+ import re
4
+ import requests
5
+ import logging
6
+ import tempfile
7
+ from bs4 import BeautifulSoup
8
+ from datetime import datetime
9
+ from zoneinfo import ZoneInfo
10
+ import html
11
+ from PIL import Image
12
+ from urllib.request import urlopen
13
+ import markdown2
14
+ import gradio as gr
15
+
16
+ # ๋กœ๊น… ์„ค์ • (INFO ๋ ˆ๋ฒจ)
17
+ logging.basicConfig(level=logging.INFO)
18
+
19
+ # ์ƒ์ˆ˜ ์ •์˜
20
+ TARGET_CHAR_LENGTH = 4000
21
+ MIN_SECTION_LENGTH = 600
22
+ MAX_TOKENS = 15000
23
+ TEMPERATURE = 0.75
24
+ TOP_P = 0.95
25
+
26
+ # API ๊ด€๋ จ ์„ค์ •
27
+ gemini_api_key = os.getenv("GEMINI_API_KEY")
28
+
29
+ # --- Google Gemini SDK ์ดˆ๊ธฐํ™” ---
30
+ from google import genai
31
+ from google.genai import types
32
+ client = genai.Client(api_key=gemini_api_key)
33
+
34
+ # -------------------------------
35
+ # ๊ธฐ๋ณธ ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๋“ค
36
+ # -------------------------------
37
+
38
+ def remove_unwanted_phrases(text):
39
+ """๋ถˆํ•„์š”ํ•œ ํ‘œํ˜„ ์ œ๊ฑฐ ํ•จ์ˆ˜"""
40
+ unwanted_phrases = [
41
+ '์—ฌ๋Ÿฌ๋ถ„', '์ตœ๊ทผ', '๋งˆ์ง€๋ง‰์œผ๋กœ', '๊ฒฐ๋ก ์ ์œผ๋กœ', '๊ฒฐ๊ตญ',
42
+ '์ข…ํ•ฉ์ ์œผ๋กœ', '๋”ฐ๋ผ์„œ', '๋งˆ๋ฌด๋ฆฌ', '๋์œผ๋กœ', '์š”์•ฝ',
43
+ 'ํ•œ ์ค„ ์š”์•ฝ', '์ •๋ฆฌํ•˜์ž๋ฉด', '์ด์ •๋ฆฌ', '๊ธ€์„ ๋งˆ์น˜๋ฉฐ',
44
+ '์ด์ƒ์œผ๋กœ', '์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค', '์ฐธ๊ณ ํ•˜์„ธ์š”', '๋„์›€์ด ๋˜์…จ๊ธธ',
45
+ '์ข‹์€ ํ•˜๋ฃจ ๋˜์„ธ์š”', '๋‹ค์Œ ๊ธ€์—์„œ', '๋„์›€์ด ๋˜์—ˆ๊ธธ',
46
+ '์ฆ๊ฑฐ์šด ํ•˜๋ฃจ ๋˜์„ธ์š”', '๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค'
47
+ ]
48
+
49
+ # ๋ฌธ๋‹จ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌ
50
+ lines = text.split('\n')
51
+ result_lines = []
52
+
53
+ for line in lines:
54
+ if "๋‹ค์Œ ์„น์…˜์—์„œ๋Š”" in line:
55
+ parts = line.split("๋‹ค์Œ ์„น์…˜์—์„œ๋Š”")
56
+ if parts[0].strip():
57
+ result_lines.append(parts[0].strip())
58
+ else:
59
+ # ๋ถˆํ•„์š”ํ•œ ํ‘œํ˜„ ์ œ๊ฑฐ (๊ตฌ๋‘์  ํฌํ•จ)
60
+ for phrase in unwanted_phrases:
61
+ # ๋ถˆํ•„์š”ํ•œ ํ‘œํ˜„ ์•ž๋’ค์˜ ๊ตฌ๋‘์ ๊ณผ ๊ณต๋ฐฑ๊นŒ์ง€ ํฌํ•จํ•˜์—ฌ ์ œ๊ฑฐ
62
+ pattern = rf'(\b{re.escape(phrase)}\b[\s,.!?]*)|([,.!?]*\b{re.escape(phrase)}\b)'
63
+ line = re.sub(pattern, '', line)
64
+
65
+ # ๋ฌธ์žฅ ๋‚ด ์ž”์—ฌ ๊ณต๋ฐฑ ๋ฐ ๊ตฌ๋‘์  ์ •๋ฆฌ
66
+ line = re.sub(r'\s{2,}', ' ', line) # ์—ฐ์† ๊ณต๋ฐฑ ์ œ๊ฑฐ
67
+ line = line.strip() # ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
68
+ result_lines.append(line)
69
+
70
+ return '\n'.join(result_lines)
71
+
72
+ def convert_to_html(text):
73
+ """๋งˆํฌ๋‹ค์šด ํ˜•์‹์„ HTML๋กœ ๋ณ€ํ™˜"""
74
+ text = re.sub(r'^\s*[-*]\s+', '', text, flags=re.MULTILINE)
75
+ text = re.sub(r'^\s*\d+\.\s+', '', text, flags=re.MULTILINE)
76
+ text = re.sub(r'^\s*#{1,6}\s+', '', text, flags=re.MULTILINE)
77
+ return markdown2.markdown(text)
78
+
79
+ def format_blog_post(blog_post, query="", with_title=False):
80
+ """๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ํฌ๋งทํŒ… ํ•จ์ˆ˜ - ์†Œ์ œ๋ชฉ ๊ฐ•ํ™” ๋ฒ„์ „"""
81
+ blog_post = re.sub(r'^#+\s+', '', blog_post, flags=re.MULTILINE)
82
+ blog_post = re.sub(r'^\d+\.\s+', '', blog_post, flags=re.MULTILINE)
83
+ blog_post = re.sub(r'^[\*\-]\s+', '', blog_post, flags=re.MULTILINE)
84
+
85
+ # ์ฒซ ์ค„(์›๋ณธ ์ œ๋ชฉ)๊ณผ ๋น„์Šทํ•œ ํŒจํ„ด์ด ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐ
86
+ lines = blog_post.split('\n')
87
+ if lines and len(lines) > 0:
88
+ first_line = lines[0].strip()
89
+ # ์ฒซ ์ค„์ด ์ œ๋ชฉ์ธ ๊ฒฝ์šฐ, ๋น„์Šทํ•œ ๋‚ด์šฉ์˜ ๋ผ์ธ์„ ๋ชจ๋‘ ์ œ๊ฑฐ
90
+ if first_line and len(first_line) > 5:
91
+ # ์ฒซ ์ค„๊ณผ ์œ ์‚ฌํ•œ ๋‚ด์šฉ์„ ๊ฐ€์ง„ ๋ผ์ธ ์ฐพ์•„ ์ œ๊ฑฐ
92
+ filtered_lines = []
93
+ for line in lines:
94
+ # ์ฒซ ์ค„๊ณผ ์œ ์‚ฌํ•˜๋ฉด ์ œ๊ฑฐ
95
+ if line.strip() and (first_line in line or line in first_line):
96
+ continue
97
+ filtered_lines.append(line)
98
+ lines = filtered_lines
99
+
100
+ # ๋„์ž…๋ถ€, ๊ฒฐ๋ก  ์†Œ์ œ๋ชฉ ํŒจํ„ด
101
+ intro_pattern = r'(?i)๋„์ž…๋ถ€\s*[:]?\s*(.*?)$'
102
+ conclusion_pattern = r'(?i)๊ฒฐ๋ก \s*[:]?\s*(.*?)$'
103
+
104
+ # ๋„์ž…๋ถ€, ๊ฒฐ๋ก  ์†Œ์ œ๋ชฉ ์ œ๊ฑฐ
105
+ filtered_lines = []
106
+ for line in lines:
107
+ if re.match(intro_pattern, line) or re.match(conclusion_pattern, line):
108
+ continue
109
+ filtered_lines.append(line)
110
+ lines = filtered_lines
111
+
112
+ # ๋ณธ๋ก  ์†Œ์ œ๋ชฉ ํŒจํ„ด ๊ฐ•ํ™”
113
+ section_patterns = [
114
+ r'^๋ณธ๋ก \d+\s*[:]?\s*(.*?)$', # ๋ณธ๋ก 1: ๋‚ด์šฉ ํŒจํ„ด
115
+ r'^.{5,50}์˜ [๊ฐ€-ํžฃ\s]+$', # ~์˜ ~ ํŒจํ„ด
116
+ r'^[๊ฐ€-ํžฃ\s]{5,30}(์ด๋ž€|์ด๋ž€\?|์ด๋ž€\s๋ฌด์—‡์ธ๊ฐ€|์ด๋ž€\s๋ฌด์—‡์ผ๊นŒ)[\?\s]*$', # ~์ด๋ž€? ํŒจํ„ด
117
+ r'^[๊ฐ€-ํžฃ\s]{5,50}\s[-โ€“]\s.{5,30}$', # ๊ฐ•์กฐ ํ‘œํ˜„ ํŒจํ„ด (์˜ˆ: ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ• - ์‹ค์ฒœํ•˜๊ธฐ)
118
+ r'^[๊ฐ€-ํžฃA-Za-z\s]{10,50}[\.!\?]$', # ๊ธด ๋ฌธ์žฅ์œผ๋กœ ๋œ ์†Œ์ œ๋ชฉ ํŒจํ„ด
119
+ ]
120
+
121
+ formatted_lines = []
122
+ in_paragraph = False
123
+
124
+ # ๋ณธ๋ก  ์„น์…˜ ๋ฒˆํ˜ธ ์ถ”์ 
125
+ section_number = 1
126
+
127
+ for i, line in enumerate(lines):
128
+ line = line.strip()
129
+ if not line:
130
+ if in_paragraph:
131
+ formatted_lines.append("</p>")
132
+ in_paragraph = False
133
+ formatted_lines.append("<br>")
134
+ continue
135
+
136
+ # ๋‹ค์Œ ์ค„๊ณผ ์ด์ „ ๏ฟฝ๏ฟฝ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ
137
+ prev_empty = i == 0 or not lines[i-1].strip()
138
+ next_empty = i == len(lines) - 1 or not lines[i+1].strip()
139
+
140
+ # ์†Œ์ œ๋ชฉ์ธ์ง€ ์ฒดํฌ
141
+ is_subtitle = False
142
+ clean_subtitle = line
143
+
144
+ # ํŒจํ„ด ๋งค์นญ์œผ๋กœ ์†Œ์ œ๋ชฉ ํ™•์ธ
145
+ for pattern in section_patterns:
146
+ if re.match(pattern, line):
147
+ is_subtitle = True
148
+ # ๋ณธ๋ก X: ํŒจํ„ด์ธ ๊ฒฝ์šฐ ์ •๋ฆฌ
149
+ if "๋ณธ๋ก " in line:
150
+ clean_subtitle = re.sub(r'^๋ณธ๋ก \d+\s*[:]?\s*', '', line)
151
+ break
152
+
153
+ # ํŒจํ„ด์— ๋งค์นญ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋‹ค์Œ ๊ทœ์น™์œผ๋กœ ์†Œ์ œ๋ชฉ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
154
+ if not is_subtitle:
155
+ # ์•ž๋’ค ์ค„์ด ๋น„์–ด์žˆ๊ณ , ๊ธธ์ด๊ฐ€ ์งง์€(5-50์ž) ๋ฌธ์žฅ์€ ์†Œ์ œ๋ชฉ์œผ๋กœ ์ฒ˜๋ฆฌ
156
+ if prev_empty and next_empty and 5 <= len(line) <= 50:
157
+ is_subtitle = True
158
+ # ์ด์ „์— ์žˆ๋˜ ์†Œ์ œ๋ชฉ๋“ค๊ณผ ๋น„์Šทํ•œ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ๋„ ์†Œ์ œ๋ชฉ์œผ๋กœ ๊ฐ„์ฃผ
159
+ elif section_number > 1 and prev_empty and 5 <= len(line) <= 50:
160
+ is_subtitle = True
161
+
162
+ if is_subtitle and clean_subtitle.strip():
163
+ if in_paragraph:
164
+ formatted_lines.append("</p>")
165
+ in_paragraph = False
166
+
167
+ # ์†Œ์ œ๋ชฉ์ด ์—†๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ์งง์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์†Œ์ œ๋ชฉ ์‚ฌ์šฉ
168
+ if not clean_subtitle.strip() or len(clean_subtitle.strip()) < 2:
169
+ clean_subtitle = f"์ฃผ์š” ํฌ์ธํŠธ {section_number}"
170
+
171
+ # ์†Œ์ œ๋ชฉ ํ˜•์‹ ๊ฐ•ํ™” - ํ•ญ์ƒ ๋ณผ๋“œ์ฒ˜๋ฆฌ์™€ ์Šคํƒ€์ผ๋ง ์ ์šฉ
172
+ formatted_lines.append(
173
+ f'<h2 style="font-size: 1.4em; margin-top: 30px; margin-bottom: 15px; font-weight: bold; color: #333; border-bottom: 1px solid #eee; padding-bottom: 8px;">{html.escape(clean_subtitle)}</h2>'
174
+ )
175
+ section_number += 1
176
+ else:
177
+ # ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ
178
+ if not in_paragraph:
179
+ formatted_lines.append("<p>")
180
+ in_paragraph = True
181
+ content = html.escape(line)
182
+ bold_content = re.sub(r'\*\*(.*?)\*\*', r'<strong>\1</strong>', content)
183
+ formatted_lines.append(bold_content)
184
+
185
+ if in_paragraph:
186
+ formatted_lines.append("</p>")
187
+
188
+ return '\n'.join(formatted_lines)
189
+
190
+ # -------------------------------
191
+ # ์Šคํƒ€์ผ ๋ฐ ํ”„๋กฌํ”„ํŠธ ๊ฐ€์ด๋“œ ํ•จ์ˆ˜
192
+ # -------------------------------
193
+
194
+ def get_style_prompt(style="์นœ๊ทผํ•œ"):
195
+ """๋ธ”๋กœ๊ทธ ๊ธ€์˜ ์Šคํƒ€์ผ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ˜ํ™˜"""
196
+ prompts = {
197
+ "์นœ๊ทผํ•œ": """
198
+ [์นœ๊ทผํ•œ ์ƒํ’ˆ๋ฆฌ๋ทฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ]
199
+ 1. ํ†ค๊ณผ ์–ด์กฐ
200
+ - ๋Œ€ํ™”ํ•˜๋“ฏ ํŽธ์•ˆํ•˜๊ณ  ์นœ๊ทผํ•œ ๋งํˆฌ ์‚ฌ์šฉ
201
+ - ์ƒํ’ˆ์— ๋Œ€ํ•œ ๊ด€์‹ฌ๊ณผ ํ˜ธ๊ธฐ์‹ฌ์„ ๋‹ด์€ ํ‘œํ˜„ ์‚ฌ์šฉ
202
+ - ์‹ค์ œ ์‚ฌ์šฉํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ƒ์ƒํ•œ ๋ฌ˜์‚ฌ
203
+ 2. ๋ฌธ์žฅ ๋ฐ ์–ดํˆฌ
204
+ - ๋ฐ˜๋“œ์‹œ 'ํ•ด์š”์ฒด'๋กœ ์ž‘์„ฑ, ์ ˆ๋Œ€ '์Šต๋‹ˆ๋‹ค'์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ
205
+ - '~์š”'๋กœ ๋๋‚˜๋„๋ก ์ž‘์„ฑ, '~๋‹ค'๋กœ ๋๋‚˜์ง€ ์•Š๊ฒŒ ํ•˜๋ผ
206
+ - ๊ตฌ์–ด์ฒด ํ‘œํ˜„ ์‚ฌ์šฉ (์˜ˆ: "~ํ–ˆ์–ด์š”", "~์ธ ๊ฒƒ ๊ฐ™์•„์š”")
207
+ - ์ ์ ˆํ•œ ๊ฐ์ • ํ‘œํ˜„๊ณผ ๊ณต๊ฐ๋Œ€ ํ˜•์„ฑ
208
+ 3. ์šฉ์–ด ๋ฐ ์„ค๋ช… ๋ฐฉ์‹
209
+ - ์ƒํ’ˆ ๊ด€๋ จ ์ „๋ฌธ ์šฉ์–ด๋Š” ์‰ฌ์šด ๋‹จ์–ด๋กœ ํ’€์–ด์„œ ์„ค๋ช…
210
+ - ๋น„์œ ๋‚˜ ์€์œ ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒํ’ˆ ํŠน์„ฑ๊ณผ ๊ฒฝํ—˜ ๋ฌ˜์‚ฌ
211
+ - ์ˆ˜์‚ฌ์˜๋ฌธ๋ฌธ ํ™œ์šฉํ•˜์—ฌ ๋…์ž์™€ ์†Œํ†ตํ•˜๋Š” ๋А๋‚Œ ์ฃผ๊ธฐ (์˜ˆ: "์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?", "์ด๋Ÿฐ ๊ฒฝํ—˜ ์žˆ์œผ์‹ ๊ฐ€์š”?")
212
+ - ๊ตฌ์ฒด์  ์‚ฌ๋ก€์™€ ์‹ค์ œ ๊ฒฝํ—˜์— ๊ธฐ๋ฐ˜ํ•œ ํŒ ์ œ๊ณต
213
+ 4. ์ •๋ณด ์ „๋‹ฌ ๋ฐฉ์‹
214
+ - ๊ฐœ์ธ์ ์ธ ๊ด€์ ์— ๋…น์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ •๋ณด ์ „๋‹ฌ
215
+ - ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ์‹œ์„ ์œผ๋กœ ์ƒํ’ˆ ๋ฌ˜์‚ฌ
216
+ - ๋…์ž๊ฐ€ ์‹ค์ œ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์šฉ์  ์ •๋ณด ์ œ๊ณต (๊ฐ€๊ฒฉ, ๊ตฌ๋งค์ฒ˜, ์‚ฌ์šฉ๋ฒ•, ํŒ ๋“ฑ)
217
+ 5. ๋…์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ
218
+ - ๋…์ž์˜ ์˜๊ฒฌ์„ ๋ฌผ์–ด๋ณด๋Š” ์งˆ๋ฌธ ํฌํ•จ
219
+ - ์‹ค์ œ ํ™œ์šฉ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒ์ด๋‚˜ ์กฐ์–ธ ์ œ๊ณต
220
+ ์ฃผ์˜์‚ฌํ•ญ: ์ž์—ฐ์Šค๋Ÿฌ์šด ๋Œ€ํ™”์ฒด๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ •๋ณด์˜ ์งˆ๊ณผ ๋‚ด์šฉ์˜ ๊นŠ์ด๋ฅผ ์žƒ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค
221
+ """,
222
+ "์ผ๋ฐ˜": """
223
+ [์ผ๋ฐ˜์ ์ธ ์ƒํ’ˆ๋ฆฌ๋ทฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ]
224
+ 1. ํ†ค๊ณผ ์–ด์กฐ
225
+ - ์ค‘๋ฆฝ์ ์ด๊ณ  ๊ฐ๊ด€์ ์ธ ํ†ค ์œ ์ง€
226
+ - ์ ์ ˆํ•œ ์กด๋Œ“๋ง ์‚ฌ์šฉ (์˜ˆ: "~ํ•ฉ๋‹ˆ๋‹ค", "~์ž…๋‹ˆ๋‹ค")
227
+ - ์ƒํ’ˆ ์ •๋ณด ์ „๋‹ฌ ์ค‘์‹ฌ์˜ ๋ช…ํ™•ํ•œ ์–ดํˆฌ
228
+ 2. ๋‚ด์šฉ ๊ตฌ์กฐ ๋ฐ ์ „๊ฐœ
229
+ - ๋ช…ํ™•ํ•œ ์ƒํ’ˆ ์†Œ๊ฐœ๋กœ ์‹œ์ž‘
230
+ - ๋…ผ๋ฆฌ์ ์ธ ์ˆœ์„œ๋กœ ์ •๋ณด ์ „๊ฐœ (๊ฐœ์š” โ†’ ๋””์ž์ธ โ†’ ๊ธฐ๋Šฅ โ†’ ์„ฑ๋Šฅ โ†’ ๊ฐ€๊ฒฉ ๋“ฑ)
231
+ - ํ•ต์‹ฌ ํฌ์ธํŠธ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ์†Œ์ œ๋ชฉ ํ™œ์šฉ
232
+ - ์ ์ ˆํ•œ ๊ธธ์ด์˜ ๋‹จ๋ฝ์œผ๋กœ ๊ตฌ์„ฑ
233
+ 3. ์šฉ์–ด ๋ฐ ์„ค๋ช… ๋ฐฉ์‹
234
+ - ์ผ๋ฐ˜์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์šฉ์–ด ์„ ํƒ
235
+ - ํ•„์š”์‹œ ์ „๋ฌธ ์šฉ์–ด์— ๊ฐ„๋‹จํ•œ ์„ค๋ช… ์ถ”๊ฐ€
236
+ - ๊ฐ๊ด€์ ์ธ ์ƒํ’ˆ ์ •๋ณด ์ œ๊ณต์— ์ค‘์ 
237
+ - ๊ท ํ˜• ์žกํžŒ ์‹œ๊ฐ์—์„œ ์ƒํ’ˆ์˜ ์žฅ๋‹จ์  ์ œ์‹œ
238
+ 4. ์ •๋ณด ์ „๋‹ฌ ๋ฐฉ์‹
239
+ - ์ƒํ’ˆ์˜ ๊ธฐ๋ณธ ์ •๋ณด์™€ ํŠน์ง• ๋ช…ํ™•ํ•˜๊ฒŒ ์ œ๊ณต
240
+ - ๊ตฌ์ฒด์ ์ธ ์˜ˆ์‹œ์™€ ํ™œ์šฉ๋ฒ• ํฌํ•จ
241
+ - ์ตœ์‹  ์ƒํ’ˆ ์ •๋ณด์™€ ๋™ํ–ฅ ์ฐธ๊ณ 
242
+ 5. ๋…์ž ์ƒํ˜ธ์ž‘์šฉ
243
+ - ์ ์ ˆํžˆ ๋…์ž์˜ ์ƒ๊ฐ์„ ๋ฌป๋Š” ์งˆ๋ฌธ ํฌํ•จ
244
+ - ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ ์ œ์‹œ
245
+ - ์‹ค์šฉ์ ์ธ ๊ตฌ๋งค ๋ฐ ์‚ฌ์šฉ ํŒ ์ œ๊ณต
246
+
247
+ ์ฃผ์˜์‚ฌํ•ญ: ๊ฐ๊ด€์  ์ •๋ณด ์ œ๊ณต์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋˜, ๋…์ž์˜ ๊ตฌ๋งค ๊ฒฐ์ •๊ณผ ํ™œ์šฉ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋งฅ๋ฝ๊ณผ ์„ค๋ช…์„ ์ถฉ๋ถ„ํžˆ ์ œ๊ณตํ•œ๋‹ค
248
+ """,
249
+ "์ „๋ฌธ์ ์ธ": """
250
+ [์ „๋ฌธ์ ์ธ ์ƒํ’ˆ๋ฆฌ๋ทฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ]
251
+ 1. ํ†ค๊ณผ ๊ตฌ์กฐ
252
+ - ๊ณต์‹์ ์ด๊ณ  ์ „๋ฌธ์ ์ธ ํ†ค ์‚ฌ์šฉ
253
+ - ๊ฐ๊ด€์ ์ด๊ณ  ๋ถ„์„์ ์ธ ์ ‘๊ทผ ์œ ์ง€
254
+ - ๋ช…ํ™•ํ•œ ์„œ๋ก (์ƒํ’ˆ ๊ฐœ์š”), ๋ณธ๋ก (์ƒ์„ธ ๋ถ„์„), ๊ฒฐ๋ก (์ข…ํ•ฉ ํ‰๊ฐ€) ๊ตฌ์กฐ
255
+ - ์ฒด๊ณ„์ ์ธ ์ƒํ’ˆ ์ •๋ณด ์ „๊ฐœ
256
+ - ์„ธ๋ถ€ ์„น์…˜์„ ์œ„ํ•œ ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ ์‚ฌ์šฉ
257
+ 2. ๋‚ด์šฉ ๊ตฌ์„ฑ ๋ฐ ์ „๊ฐœ
258
+ - ์ƒํ’ˆ์˜ ๊ธฐ์ˆ ์  ๋ฐฐ๊ฒฝ, ์ œ์กฐ์‚ฌ ์ •๋ณด, ๊ฐœ๋ฐœ ๋™ํ–ฅ ๋“ฑ ์‹ฌ์ธต์  ์ •๋ณด ํฌํ•จ
259
+ - ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์ „ํ™˜์–ด ํ™œ์šฉ
260
+ - ์ƒํ’ˆ ๊ด€๋ จ ์ „๋ฌธ ์šฉ์–ด ์ ์ ˆํžˆ ํ™œ์šฉ (ํ•„์š”์‹œ ๊ฐ„๋žตํ•œ ์„ค๋ช… ์ œ๊ณต)
261
+ - ์‹ฌ์ธต์ ์ธ ๋ถ„์„๊ณผ ๋น„ํŒ์  ํ‰๊ฐ€ ์ œ๊ณต
262
+ - ๋‹ค์–‘ํ•œ ๊ด€์ ์—์„œ ์ƒํ’ˆ ๋ถ„์„
263
+ 3. ๋ฐ์ดํ„ฐ ๋ฐ ๊ทผ๊ฑฐ ํ™œ์šฉ
264
+ - ํ†ต๊ณ„, ์‚ฌ์–‘ ์ •๋ณด, ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ ๋“ฑ ๊ฐ๊ด€์  ๋ฐ์ดํ„ฐ ํ™œ์šฉ
265
+ - ์ƒํ’ˆ ๋ถ„์„์„ ์œ„ํ•œ ์ฒด๊ณ„์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ ์ œ์‹œ
266
+ - ๊ฐ๊ด€์  ์ •๋ณด์™€ ์ „๋ฌธ๊ฐ€ ๊ด€์ ์˜ ๊ท ํ˜•
267
+ 4. ์ „๋ฌธ์  ์ •๋ณด ์ œ๊ณต
268
+ - ์ตœ์‹  ๊ธฐ์ˆ  ๋™ํ–ฅ ๋ฐ ํ˜์‹  ๋ถ„์„
269
+ - ๊ธฐ์ˆ ์ , ์‹ค์šฉ์  ๋งฅ๋ฝ์—์„œ์˜ ์ƒํ’ˆ ๋ถ„์„
270
+ - ์ƒํ’ˆ ๊ด€๋ จ ์Ÿ์ ๊ณผ ๊ณ ๋ ค์‚ฌํ•ญ ์†Œ๊ฐœ
271
+ - ์ฒด๊ณ„์ ์ธ ๊ตฌ๋งค ์˜์‚ฌ๊ฒฐ์ • ์ ‘๊ทผ๋ฒ• ์ œ์‹œ
272
+ ์ฃผ์˜์‚ฌํ•ญ: ์ „๋ฌธ์„ฑ๊ณผ ๊นŠ์ด๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์ดํ•ด ๊ฐ€๋Šฅํ•œ ์šฉ์–ด์™€ ์„ค๋ช…์„ ํ†ตํ•ด ์ ‘๊ทผ์„ฑ์„ ๋†’์ธ๋‹ค
273
+ """
274
+ }
275
+ return prompts.get(style, prompts["์นœ๊ทผํ•œ"])
276
+
277
+ def get_category_outline_prompt(category="์ผ๋ฐ˜"):
278
+ """์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์•„์›ƒ๋ผ์ธ ์ƒ์„ฑ ํ”„๋กฌํ”„ํŠธ"""
279
+ prompts = {
280
+ "์ผ๋ฐ˜": """
281
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ์†Œ์ฃผ์ œ(Outline) ์ƒ์„ฑ ๊ทœ์น™]
282
+ [์‹œ์Šคํ…œ ์—ญํ• ]
283
+ ๋‹น์‹ ์€ ์ˆ˜๋…„๊ฐ„์˜ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์ „๋ฌธ ์ƒํ’ˆ ๋ฆฌ๋ทฐ ๋ธ”๋กœ๊ฑฐ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ œํ’ˆ์„ ๊ฐ๊ด€์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์ •์งํ•œ ํ‰๊ฐ€๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋งŽ์€ ๋…์ž๋“ค์˜ ์‹ ๋ขฐ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
284
+
285
+ [๋ถ„์„ ๋‹จ๊ณ„]
286
+ 1. ์ฐธ๊ณ  ์ž๋ฃŒ 3๊ฐœ๋ฅผ ์ฒ ์ €ํžˆ ๋ถ„์„ํ•˜์—ฌ ๋ฆฌ๋ทฐ ์ œํ’ˆ์˜ ํ•ต์‹ฌ ํŠน์ง•๊ณผ ์ค‘์š” ์ •๋ณด ํŒŒ์•…
287
+ 2. ์ œํ’ˆ์˜ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ํŠน์„ฑ ์‹๋ณ„ (์ „์ž๊ธฐ๊ธฐ, ๊ฐ€์ „์ œํ’ˆ, ๋ทฐํ‹ฐ, ํŒจ์…˜, ์‹ํ’ˆ, ์œก์•„์šฉํ’ˆ, ์ธํ…Œ๋ฆฌ์–ด ๋“ฑ)
288
+ 3. ๋ฆฌ๋ทฐ์˜ ํ•ต์‹ฌ์ด ๋  5๊ฐ€์ง€ ์ฃผ์š” ์š”์†Œ ํŒŒ์•… (๋””์ž์ธ, ์„ฑ๋Šฅ, ๊ฐ€์„ฑ๋น„, ์‚ฌ์šฉ์„ฑ, ๋‚ด๊ตฌ์„ฑ ๋“ฑ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž๊ฒŒ ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉ)
289
+
290
+ [์•„์›ƒ๋ผ์ธ ๊ตฌ์„ฑ ์›์น™]
291
+ 1. ๋„์ž…๋ถ€(1๊ฐœ) - ์ œํ’ˆ์˜ ์ฃผ์š” ํŠน์ง•๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์ ์„ ๋‹ด์€ ํฅ๋ฏธ๋กœ์šด ์ œ๋ชฉ์œผ๋กœ ์‹œ์ž‘
292
+ 2. ๋ณธ๋ก (4-5๊ฐœ) - ์ฐธ๊ณ  ์ž๋ฃŒ ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ์ œํ’ˆ์˜ ํ•ต์‹ฌ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ ์„ ๋‹ด์€ ์†Œ์ œ๋ชฉ
293
+ - ์ œํ’ˆ ๊ธฐ๋ณธ ์ •๋ณด ๋ฐ ์ŠคํŽ™
294
+ - ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ•ต์‹ฌ ์„ฑ๋Šฅ/ํŠน์ง• ํ‰๊ฐ€ (์ „์ž์ œํ’ˆ์ด๋ฉด ์„ฑ๋Šฅ, ํ™”์žฅํ’ˆ์ด๋ฉด ํšจ๊ณผ, ์˜๋ฅ˜๋ฉด ์ฐฉ์šฉ๊ฐ ๋“ฑ)
295
+ - ์‹ค์ œ ์‚ฌ์šฉ ๊ฒฝํ—˜๊ณผ ์ฒด๊ฐ ํ’ˆ์งˆ
296
+ - ๋น„์Šทํ•œ ์ œํ’ˆ๊ณผ์˜ ๋น„๊ต ๋ถ„์„
297
+ - ๊ฐ€๊ฒฉ ๋Œ€๋น„ ๊ฐ€์น˜ ํ‰๊ฐ€
298
+ - (์œ„ ํ•ญ๋ชฉ๋“ค์€ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ •)
299
+ - ๊ฒฐ๋ก (1๊ฐœ) - ์ „์ฒด ํ‰๊ฐ€๋ฅผ ์š”์•ฝํ•˜๊ณ  ๊ตฌ๋งค ์ถ”์ฒœ๋„๋ฅผ ๋‹ด์€ ์ œ๋ชฉ
300
+
301
+ [ํ•ต์‹ฌ ์ง€์นจ]
302
+ 1. ์™„์ „ํžˆ ํ•œ๊ตญ์–ด๋กœ๋งŒ ์ž‘์„ฑํ•  ๊ฒƒ
303
+ 2. ์†Œ์ œ๋ชฉ์€ ์ตœ๋Œ€ 30์ž ์ด๋‚ด๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ
304
+ 3. ๋…์ž์˜ ๊ตฌ๋งค ๊ฒฐ์ •์— ๋„์›€์„ ์ฃผ๋Š” ์‹ค์šฉ์ ์ธ ํ‘œํ˜„ ์‚ฌ์šฉ (์˜ˆ: "๋†€๋ผ์šด ๋ฐฐํ„ฐ๋ฆฌ ์„ฑ๋Šฅ", "์˜ˆ์ƒ ๋ฐ–์˜ ๋‹จ์ ", "์•Œ์•„๋‘๋ฉด ์ข‹์€ ํ™œ์šฉ๋ฒ•")
305
+ 4. ์ œํ’ˆ์˜ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž๋Š” ํ•ต์‹ฌ ํ‰๊ฐ€ ์š”์†Œ๊ฐ€ ์†Œ์ œ๋ชฉ์— ๋ฐ˜์˜๋˜๋„๋ก ๊ตฌ์„ฑ
306
+ 5. ํ‚ค์›Œ๋“œ๋Š” ์†Œ์ œ๋ชฉ ๊ฒฐ์ •์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ (๋ณธ๋ฌธ ์ž‘์„ฑ ์‹œ ์ฐธ๊ณ ์‚ฌํ•ญ์œผ๋กœ๋งŒ ํ™œ์šฉ)
307
+ 6. ์ „์ฒด ์•„์›ƒ๋ผ์ธ์€ ๋„์ž…๋ถ€(1) + ๋ณธ๋ก (์ตœ๋Œ€ 5๊ฐœ) + ๊ฒฐ๋ก (1)์œผ๋กœ ๊ตฌ์„ฑ
308
+ 7. ๋‹ค์–‘ํ•œ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์— ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ
309
+
310
+ [์ถœ๋ ฅ ํ˜•์‹]
311
+ 1. ์ฐธ๊ณ  ์ž๋ฃŒ ๋ถ„์„์„ ํ†ตํ•ด ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž๋Š” ํ•ต์‹ฌ ํŠน์ง•๊ณผ ํ‰๊ฐ€ ์š”์†Œ๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ์ž์œ ๋กญ๊ฒŒ ์•„์›ƒ๋ผ์ธ ๊ตฌ์„ฑ
312
+ 2. ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๋‹ค์Œ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ:(๊ฐ ํ•ญ๋ชฉ๋‹น 1๋ฒˆ ์—”ํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ๋นˆ์นธ์ด ๋‚˜์˜ค์ง€ ์•Š๋„๋กํ•˜๋ผ.)
313
+ 3. ๋„์ž…๋ถ€: 1๊ฐœ (์ œํ’ˆ ํŠน์ง•๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์ ์„ ๋‹ด์€ ํฅ๋ฏธ๋กœ์šด ์ œ๋ชฉ)
314
+ 4. ๋ณธ๋ก : 4-5๊ฐœ (์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž๋Š” ํ•ต์‹ฌ ํ‰๊ฐ€ ์š”์†Œ๋ฅผ ๋ฐ˜์˜ํ•œ ์ œ๋ชฉ)
315
+ 5. ๊ฒฐ๋ก : 1๊ฐœ (์ „์ฒด ํ‰๊ฐ€ ์š”์•ฝ ๋ฐ ๊ตฌ๋งค ์ถ”์ฒœ ์ œ๋ชฉ)
316
+ 6. ์†Œ์ œ๋ชฉ์€ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ํŠน์„ฑ์— ๋งž๊ฒŒ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์„ฑ
317
+ 7. ํ‚ค์›Œ๋“œ์— ๋งž์ถ”์ง€ ๋ง๊ณ , ์ฐธ๊ณ  ์ž๋ฃŒ ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ํ•ต์‹ฌ ํŠน์ง•๊ณผ ํ‰๊ฐ€ ์š”์†Œ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ
318
+ 8. ์˜ˆ์‹œ ํ˜•์‹ (์ฐธ๊ณ ์šฉ์ผ ๋ฟ, ๋‚ด์šฉ์€ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ์ฐธ๊ณ  ์ž๋ฃŒ์— ๋”ฐ๋ผ ์™„์ „ํžˆ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ):
319
+ - ๋„์ž…๋ถ€: [์ œํ’ˆ ํŠน์ง•๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์  ์†Œ๊ฐœ ์ œ๋ชฉ]
320
+ - ๋ณธ๋ก 1: [์ œํ’ˆ ๊ธฐ๋ณธ ์ •๋ณด/์ŠคํŽ™ ๊ด€๋ จ ์ œ๋ชฉ]
321
+ - ๋ณธ๋ก 2: [ํ•ต์‹ฌ ์„ฑ๋Šฅ/ํŠน์ง• ํ‰๊ฐ€ ๊ด€๋ จ ์ œ๋ชฉ]
322
+ - ๋ณธ๋ก 3: [์‹ค์ œ ์‚ฌ์šฉ ๊ฒฝํ—˜/์ฒด๊ฐ ํ’ˆ์งˆ ๊ด€๋ จ ์ œ๋ชฉ]
323
+ - ๋ณธ๋ก 4: [๊ฒฝ์Ÿ ์ œํ’ˆ๊ณผ์˜ ๋น„๊ต ๊ด€๋ จ ์ œ๋ชฉ]
324
+ - ๋ณธ๋ก 5: [๊ฐ€๊ฒฉ ๋Œ€๋น„ ๊ฐ€์น˜ ํ‰๊ฐ€ ๊ด€๋ จ ์ œ๋ชฉ] (ํ•„์š”์‹œ)
325
+ - ๊ฒฐ๋ก : [์ข…ํ•ฉ ํ‰๊ฐ€ ๋ฐ ๊ตฌ๋งค ์ถ”์ฒœ ์ œ๋ชฉ]
326
+ """,
327
+ "๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•": """
328
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ์†Œ์ฃผ์ œ(Outline) ์ƒ์„ฑ ๊ทœ์น™ - ๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•]
329
+ [์‹œ์Šคํ…œ ์—ญํ• ]
330
+ ๋‹น์‹ ์€ ์ˆ˜๋…„๊ฐ„์˜ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์ „๋ฌธ ์ƒํ’ˆ ๊ธฐ๋Šฅ ๋ถ„์„๊ฐ€์ž…๋‹ˆ๋‹ค. ์ œํ’ˆ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ์„ ์‹ฌ์ธต์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์ž์„ธํžˆ ๋ถ„์„ํ•˜์—ฌ ๋งŽ์€ ๋…์ž๋“ค์˜ ์‹ ๋ขฐ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
331
+
332
+ [๋ถ„์„ ๋‹จ๊ณ„]
333
+ 1. ์ฐธ๊ณ  ์ž๋ฃŒ 3๊ฐœ๋ฅผ ์ฒ ์ €ํžˆ ๋ถ„์„ํ•˜์—ฌ ์ œํ’ˆ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ํŒŒ์•…
334
+ 2. ์ œํ’ˆ์˜ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ์ฃผ์š” ๊ธฐ๋Šฅ ํŠน์„ฑ ์‹๋ณ„ (๊ธฐ์ˆ ์  ํŠน์ง•, ํ˜์‹ ์  ๊ธฐ๋Šฅ, ์ฐจ๋ณ„ํ™” ์š”์†Œ ๋“ฑ)
335
+ 3. ๋ฆฌ๋ทฐ์˜ ํ•ต์‹ฌ์ด ๋  5๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ ์š”์†Œ ํŒŒ์•… (ํ•ต์‹ฌ ์„ฑ๋Šฅ, ์ฃผ์š” ๊ธฐ๋Šฅ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๊ธฐ์ˆ ์  ํ•œ๊ณ„, ํŠน์ˆ˜ ๊ธฐ๋Šฅ ๋“ฑ)
336
+
337
+ [์•„์›ƒ๋ผ์ธ ๊ตฌ์„ฑ ์›์น™]
338
+ 1. ๋„์ž…๋ถ€(1๊ฐœ) - ์ œํ’ˆ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์  ํŠน์ง•๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์ ์„ ๋‹ด์€ ์ œ๋ชฉ์œผ๋กœ ์‹œ์ž‘
339
+ 2. ๋ณธ๋ก (4-5๊ฐœ) - ์ฐธ๊ณ  ์ž๋ฃŒ ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ์ œํ’ˆ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ์„ ๋‹ด์€ ์†Œ์ œ๋ชฉ
340
+ - ํ•ต์‹ฌ ๊ธฐ๋Šฅ์˜ ์ž‘๋™ ์›๋ฆฌ์™€ ๊ธฐ์ˆ ์  ํŠน์ง•
341
+ - ์‹ค์ œ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์™€ ์„ฑ๋Šฅ ์ธก์ • ๋ฐ์ดํ„ฐ
342
+ - ์ผ์ƒ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ๊ธฐ๋Šฅ ํšจ์œจ์„ฑ
343
+ - ๊ธฐ๋Šฅ์  ํ•œ๊ณ„์ ๊ณผ ๊ฐœ์„  ๊ฐ€๋Šฅ์„ฑ
344
+ - ๊ฒฝ์Ÿ ์ œํ’ˆ๊ณผ์˜ ๊ธฐ๋Šฅ์  ์ฐจ๋ณ„์ 
345
+ - (์œ„ ํ•ญ๋ชฉ๋“ค์€ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ •)
346
+ 3. ๊ฒฐ๋ก (1๊ฐœ) - ๊ธฐ๋Šฅ ์ค‘์‹ฌ์˜ ์ „์ฒด ํ‰๊ฐ€๋ฅผ ์š”์•ฝํ•˜๊ณ  ํ™œ์šฉ ๊ฐ€์น˜๋ฅผ ๋‹ด์€ ์ œ๋ชฉ
347
+
348
+ [ํ•ต์‹ฌ ์ง€์นจ]
349
+ 1. ์™„์ „ํžˆ ํ•œ๊ตญ์–ด๋กœ๋งŒ ์ž‘์„ฑํ•  ๊ฒƒ
350
+ 2. ์†Œ์ œ๋ชฉ์€ ์ตœ๋Œ€ 30์ž ์ด๋‚ด๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ
351
+ 3. ๊ธฐ๋Šฅ์˜ ์‹ค์งˆ์  ๊ฐ€์น˜์™€ ์„ฑ๋Šฅ์„ ๊ฐ•์กฐํ•˜๋Š” ํ‘œํ˜„ ์‚ฌ์šฉ (์˜ˆ: "๋†€๋ผ์šด ์ฒ˜๋ฆฌ ์†๋„์˜ ๋น„๋ฐ€", "์ˆจ๊ฒจ์ง„ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ์™„์ „ ๋ถ„์„", "์‹ค์ธก ํ…Œ์ŠคํŠธ๋กœ ๋ณธ ์„ฑ๋Šฅ ํ•œ๊ณ„")
352
+ 4. ๊ธฐ์ˆ ์  ์ •ํ™•์„ฑ๊ณผ ๊ฐ๊ด€์  ์„ฑ๋Šฅ ํ‰๊ฐ€๊ฐ€ ์†Œ์ œ๋ชฉ์— ๋ฐ˜์˜๋˜๋„๋ก ๊ตฌ์„ฑ
353
+ 5. ํ‚ค์›Œ๋“œ๋Š” ์†Œ์ œ๋ชฉ ๊ฒฐ์ •์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ (๋ณธ๋ฌธ ์ž‘์„ฑ ์‹œ ์ฐธ๊ณ ์‚ฌํ•ญ์œผ๋กœ๋งŒ ํ™œ์šฉ)
354
+ 6. ์ „์ฒด ์•„์›ƒ๋ผ์ธ์€ ๋„์ž…๋ถ€(1) + ๋ณธ๋ก (์ตœ๋Œ€ 5๊ฐœ) + ๊ฒฐ๋ก (1)์œผ๋กœ ๊ตฌ์„ฑ
355
+ 7. ๋‹ค์–‘ํ•œ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธฐ๋Šฅ ํ‰๊ฐ€์— ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ
356
+
357
+ [์ถœ๋ ฅ ํ˜•์‹]
358
+ 1. ์ฐธ๊ณ  ์ž๋ฃŒ ๋ถ„์„์„ ํ†ตํ•ด ์ œํ’ˆ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ ์š”์†Œ๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ์ž์œ ๋กญ๊ฒŒ ์•„์›ƒ๋ผ์ธ ๊ตฌ์„ฑ
359
+ 2. ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๋‹ค์Œ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ:(๊ฐ ํ•ญ๋ชฉ๋‹น 1๋ฒˆ ์—”ํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ๋นˆ์นธ์ด ๋‚˜์˜ค์ง€ ์•Š๋„๋กํ•˜๋ผ.)
360
+ 3. ๋„์ž…๋ถ€: 1๊ฐœ (์ œํ’ˆ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์  ํŠน์ง•๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์ ์„ ๋‹ด์€ ์ œ๋ชฉ)
361
+ 4. ๋ณธ๋ก : 4-5๊ฐœ (ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ ํ‰๊ฐ€ ์š”์†Œ๋ฅผ ๋ฐ˜์˜ํ•œ ์ œ๋ชฉ)
362
+ 5. ๊ฒฐ๋ก : 1๊ฐœ (๊ธฐ๋Šฅ ์ค‘์‹ฌ ํ‰๊ฐ€ ์š”์•ฝ ๋ฐ ํ™œ์šฉ ๊ฐ€์น˜ ์ œ๋ชฉ)
363
+ 6. ์†Œ์ œ๋ชฉ์€ ์ œํ’ˆ์˜ ๊ธฐ๋Šฅ์  ํŠน์ง•๊ณผ ์„ฑ๋Šฅ์— ๋งž๊ฒŒ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์„ฑ
364
+ 7. ํ‚ค์›Œ๋“œ์— ๋งž์ถ”์ง€ ๋ง๊ณ , ์ฐธ๊ณ  ์ž๋ฃŒ ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ
365
+ 8. ์˜ˆ์‹œ ํ˜•์‹ (์ฐธ๊ณ ์šฉ์ผ ๋ฟ, ๋‚ด์šฉ์€ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ์ฐธ๊ณ  ์ž๋ฃŒ์— ๋”ฐ๋ผ ์™„์ „ํžˆ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ):
366
+ - ๋„์ž…๋ถ€: [ํ•ต์‹ฌ ๊ธฐ๋Šฅ ํŠน์ง•๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์  ์†Œ๊ฐœ ์ œ๋ชฉ]
367
+ - ๋ณธ๋ก 1: [์ฃผ์š” ๊ธฐ๋Šฅ ์ž‘๋™ ์›๋ฆฌ/๊ธฐ์ˆ  ์†Œ๊ฐœ ๊ด€๋ จ ์ œ๋ชฉ]
368
+ - ๋ณธ๋ก 2: [์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ/๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ด€๋ จ ์ œ๋ชฉ]
369
+ - ๋ณธ๋ก 3: [์‹ค์ œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋Šฅ ํšจ์œจ์„ฑ ๊ด€๋ จ ์ œ๋ชฉ]
370
+ - ๋ณธ๋ก 4: [๊ธฐ๋Šฅ์  ํ•œ๊ณ„/๊ฐœ์„ ์  ๊ด€๋ จ ์ œ๋ชฉ]
371
+ - ๋ณธ๋ก 5: [๊ฒฝ์Ÿ ์ œํ’ˆ๊ณผ์˜ ๊ธฐ๋Šฅ ๋น„๊ต ๊ด€๋ จ ์ œ๋ชฉ] (ํ•„์š”์‹œ)
372
+ - ๊ฒฐ๋ก : [๊ธฐ๋Šฅ ์ค‘์‹ฌ ์ข…ํ•ฉ ํ‰๊ฐ€ ๋ฐ ํ™œ์šฉ ๊ฐ€์น˜ ์ œ๋ชฉ]
373
+ """,
374
+ "๊ณ ๊ฐ๋ฐ˜์‘ํ˜•": """
375
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ์†Œ์ฃผ์ œ(Outline) ์ƒ์„ฑ ๊ทœ์น™ - ๊ณ ๊ฐ๋ฐ˜์‘ํ˜•]
376
+ [์‹œ์Šคํ…œ ์—ญํ• ]
377
+ ๋‹น์‹ ์€ ์ˆ˜๋…„๊ฐ„์˜ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ๊ณ ๊ฐ ๋ฐ˜์‘ ๋ถ„์„ ์ „๋ฌธ ๋ฆฌ๋ทฐ ๋ธ”๋กœ๊ฑฐ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ์ž๋“ค์˜ ๋‹ค์–‘ํ•œ ํ‰๊ฐ€๋ฅผ ์ˆ˜์ง‘ยท๋ถ„์„ํ•˜์—ฌ ์ œํ’ˆ์˜ ์ง„์ •ํ•œ ๊ฐ€์น˜์™€ ํ•œ๊ณ„์ ์„ ๊ฐ๊ด€์ ์œผ๋กœ ์ „๋‹ฌํ•จ์œผ๋กœ์จ ๋งŽ์€ ๋…์ž๋“ค์˜ ์‹ ๋ขฐ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
378
+
379
+ [๋ถ„์„ ๋‹จ๊ณ„]
380
+ 1. ์ฐธ๊ณ  ์ž๋ฃŒ์™€ ์‹ค์ œ ๊ณ ๊ฐ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ ์ €ํžˆ ๋ถ„์„ํ•˜์—ฌ ์ œํ’ˆ์— ๋Œ€ํ•œ ์ฃผ์š” ํ‰๊ฐ€ ๊ฒฝํ–ฅ์„ฑ ํŒŒ์•…
381
+ 2. ์ œํ’ˆ์˜ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ํŠน์„ฑ์— ๋งž๋Š” ๊ณ ๊ฐ ๋ฐ˜์‘ ํŒจํ„ด ์‹๋ณ„ (๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ค‘์š” ํ‰๊ฐ€ ์š”์†Œ)
382
+ 3. ๋ฆฌ๋ทฐ์˜ ํ•ต์‹ฌ์ด ๋  5๊ฐ€์ง€ ์ฃผ์š” ์š”์†Œ ํŒŒ์•…:
383
+ - ๊ณ ๊ฐ๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์–ธ๊ธ‰ํ•œ ์žฅ์ 
384
+ - ๋ฐ˜๋ณต์ ์œผ๋กœ ์ง€์ ๋˜๋Š” ๋‹จ์ 
385
+ - ์˜ˆ์ƒ์„ ๋›ฐ์–ด๋„˜๋Š” ํŠน์ด์ (๊ธ์ •/๋ถ€์ •)
386
+ - ๊ตฌ๋งค์ž ์œ ํ˜•๋ณ„ ๋งŒ์กฑ๋„ ์ฐจ์ด
387
+ - ๊ฒฝ์Ÿ ์ œํ’ˆ๊ณผ ๋น„๊ตํ•œ ๊ณ ๊ฐ ์ธ์‹
388
+
389
+ [์•„์›ƒ๋ผ์ธ ๊ตฌ์„ฑ ์›์น™]
390
+ 1. ๋„์ž…๋ถ€(1๊ฐœ) - ๊ณ ๊ฐ ๋ฐ˜์‘ ์ „์ฒด ๊ฒฝํ–ฅ์„ฑ๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์ ์„ ๋‹ด์€ ์ œ๋ชฉ์œผ๋กœ ์‹œ์ž‘
391
+ 2. ๋ณธ๋ก (4-5๊ฐœ) - ๊ณ ๊ฐ ๋ฆฌ๋ทฐ ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ํ•ต์‹ฌ ํ‰๊ฐ€ ์š”์†Œ์™€ ๊ฒฝํ–ฅ์„ฑ์„ ๋‹ด์€ ์†Œ์ œ๋ชฉ
392
+ - ๊ณ ๊ฐ๋“ค์ด ๊ฐ€์žฅ ๋†’์ด ํ‰๊ฐ€ํ•˜๋Š” ์ œํ’ˆ์˜ ํ•ต์‹ฌ ๊ฐ€์น˜
393
+ - ์‚ฌ์šฉ์ž๋“ค์ด ๊ณตํ†ต์ ์œผ๋กœ ์ง€์ ํ•˜๋Š” ์•„์‰ฌ์šด ์ 
394
+ - ์‹ค์ œ ์‚ฌ์šฉ ๊ฒฝํ—˜์—์„œ ๋‚˜ํƒ€๋‚œ ์˜ˆ์ƒ ์™ธ ํŠน์ด์ 
395
+ - ์‚ฌ์šฉ์ž ์œ ํ˜•/๋ชฉ์ ์— ๋”ฐ๋ฅธ ๋งŒ์กฑ๋„ ์ฐจ์ด ๋ถ„์„
396
+ - ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ํ‰๊ฐ€ ๋ณ€ํ™” ๋˜๋Š” ๋‚ด๊ตฌ์„ฑ ์ด์Šˆ
397
+ - (์œ„ ํ•ญ๋ชฉ๋“ค์€ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ๊ณ ๊ฐ ๋ฐ˜์‘ ํŒจํ„ด์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ •)
398
+ 3. ๊ฒฐ๋ก (1๊ฐœ) - ๊ณ ๊ฐ ํ‰๊ฐ€ ๊ฒฝํ–ฅ์„ฑ์„ ์ข…ํ•ฉํ•˜๊ณ  ๊ตฌ๋งค ์ ํ•ฉ์„ฑ์„ ์ œ์‹œํ•˜๋Š” ์ œ๋ชฉ
399
+
400
+ [ํ•ต์‹ฌ ์ง€์นจ]
401
+ 1. ์™„์ „ํžˆ ํ•œ๊ตญ์–ด๋กœ๋งŒ ์ž‘์„ฑํ•  ๊ฒƒ
402
+ 2. ์†Œ์ œ๋ชฉ์€ ์ตœ๋Œ€ 30์ž ์ด๋‚ด๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ
403
+ 3. ์‹ค์ œ ๊ณ ๊ฐ ๋ฐ˜์‘์„ ๊ฐ๊ด€์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ํ‘œํ˜„ ์‚ฌ์šฉ (์˜ˆ: "90%์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ •ํ•œ", "์˜์™ธ๋กœ ๋งŽ์€ ๋ถˆ๋งŒ์ด ๋‚˜์˜จ", "์žฅ๊ธฐ ์‚ฌ์šฉ์ž๋“ค์ด ๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ์ ")
404
+ 4. ๊ณ ๊ฐ ํ‰๊ฐ€์˜ ์ฃผ์š” ๊ฒฝํ–ฅ์„ฑ๊ณผ ํŠน์ด์ ์ด ์†Œ์ œ๋ชฉ์— ๋ฐ˜์˜๋˜๋„๋ก ๊ตฌ์„ฑ
405
+ 5. ํ‚ค์›Œ๋“œ๋Š” ์†Œ์ œ๋ชฉ ๊ฒฐ์ •์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ (๋ณธ๋ฌธ ์ž‘์„ฑ ์‹œ ์ฐธ๊ณ ์‚ฌํ•ญ์œผ๋กœ๋งŒ ํ™œ์šฉ)
406
+ 6. ์ „์ฒด ์•„์›ƒ๋ผ์ธ์€ ๋„์ž…๋ถ€(1) + ๋ณธ๋ก (์ตœ๋Œ€ 5๊ฐœ) + ๊ฒฐ๋ก (1)์œผ๋กœ ๊ตฌ์„ฑ
407
+ 7. ๋‹ค์–‘ํ•œ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ณ ๊ฐ ๋ฐ˜์‘ ํŒจํ„ด์— ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ
408
+
409
+ [์ถœ๋ ฅ ํ˜•์‹]
410
+ 1. ๊ณ ๊ฐ ๋ฆฌ๋ทฐ ๋ถ„์„์„ ํ†ตํ•ด ์ œํ’ˆ์— ๋Œ€ํ•œ ์ฃผ์š” ํ‰๊ฐ€ ๊ฒฝํ–ฅ์„ฑ๊ณผ ํŠน์ด์ ์„ ํŒŒ์•…ํ•˜์—ฌ ์ž์œ ๋กญ๊ฒŒ ์•„์›ƒ๋ผ์ธ ๊ตฌ์„ฑ
411
+ 2. ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๋‹ค์Œ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ:(๊ฐ ํ•ญ๋ชฉ๋‹น 1๋ฒˆ ์—”ํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ๋นˆ์นธ์ด ๋‚˜์˜ค์ง€ ์•Š๋„๋กํ•˜๋ผ.)
412
+ 3. ๋„์ž…๋ถ€: 1๊ฐœ (๊ณ ๊ฐ ๋ฐ˜์‘ ์ „์ฒด ๊ฒฝํ–ฅ์„ฑ๊ณผ ๋ฆฌ๋ทฐ ๋ชฉ์ ์„ ๋‹ด์€ ์ œ๋ชฉ)
413
+ 4. ๋ณธ๋ก : 4-5๊ฐœ (๊ณ ๊ฐ ํ‰๊ฐ€์˜ ์ฃผ์š” ํŒจํ„ด๊ณผ ํŠน์ด์ ์„ ๋ฐ˜์˜ํ•œ ์ œ๋ชฉ)
414
+ 5. ๊ฒฐ๋ก : 1๊ฐœ (๊ณ ๊ฐ ํ‰๊ฐ€ ์ข…ํ•ฉ ๋ฐ ๊ตฌ๋งค ์ ํ•ฉ์„ฑ ์ œ์‹œ ์ œ๋ชฉ)
415
+ 6. ์†Œ์ œ๋ชฉ์€ ๊ณ ๊ฐ ๋ฐ˜์‘ ํŒจํ„ด๊ณผ ์ œํ’ˆ ํŠน์„ฑ์— ๋งž๊ฒŒ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์„ฑ
416
+ 7. ํ‚ค์›Œ๋“œ์— ๋งž์ถ”์ง€ ๋ง๊ณ , ์‹ค์ œ ๊ณ ๊ฐ ํ‰๊ฐ€ ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ํ•ต์‹ฌ ๊ฒฝํ–ฅ์„ฑ๊ณผ ํŠน์ด์  ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ
417
+ 8. ์˜ˆ์‹œ ํ˜•์‹ (์ฐธ๊ณ ์šฉ์ผ ๋ฟ, ๋‚ด์šฉ์€ ์ œํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ๊ณ ๊ฐ ๋ฐ˜์‘ ํŒจํ„ด์— ๋”ฐ๋ผ ์™„์ „ํžˆ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ):
418
+ - ๋„์ž…๋ถ€: [๊ณ ๊ฐ ๋ฐ˜์‘ ์ „์ฒด ๊ฒฝํ–ฅ์„ฑ ์†Œ๊ฐœ ์ œ๋ชฉ]
419
+ - ๋ณธ๋ก 1: [๊ฐ€์žฅ ๋งŽ์ด ์–ธ๊ธ‰๋œ ์žฅ์  ๊ด€๋ จ ์ œ๋ชฉ]
420
+ - ๋ณธ๋ก 2: [๊ณตํ†ต์ ์œผ๋กœ ์ง€์ ๋œ ๋‹จ์  ๊ด€๋ จ ์ œ๋ชฉ]
421
+ - ๋ณธ๋ก 3: [์˜ˆ์ƒ ์™ธ ํŠน์ด์ /๋†€๋ผ์šด ๋ฐœ๊ฒฌ ๊ด€๋ จ ์ œ๋ชฉ]
422
+ - ๋ณธ๋ก 4: [์‚ฌ์šฉ์ž ์œ ํ˜•๋ณ„ ๋งŒ์กฑ๋„ ์ฐจ์ด ๊ด€๋ จ ์ œ๋ชฉ]
423
+ - ๋ณธ๋ก 5: [์žฅ๊ธฐ ์‚ฌ์šฉ ํ‰๊ฐ€/๋‚ด๊ตฌ์„ฑ ๊ด€๋ จ ์ œ๋ชฉ] (ํ•„์š”์‹œ)
424
+ - ๊ฒฐ๋ก : [๊ณ ๊ฐ ํ‰๊ฐ€ ์ข…ํ•ฉ ๋ฐ ๊ตฌ๋งค ์ ํ•ฉ์„ฑ ์ œ์‹œ ์ œ๋ชฉ]
425
+ """
426
+ }
427
+ return prompts.get(category, prompts["์ผ๋ฐ˜"])
428
+
429
+ def get_category_blog_prompt(category="์ผ๋ฐ˜"):
430
+ """์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ ํ”„๋กฌํ”„ํŠธ"""
431
+ prompts = {
432
+ "์ผ๋ฐ˜": """
433
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ๊ทœ์น™]
434
+ [๊ธฐ๋ณธ๊ทœ์น™]
435
+ 1. ๋ฐ˜๋“œ์‹œ ํ•œ๊ตญ์–ด(ํ•œ๊ธ€)๋กœ ์ž‘์„ฑํ•˜๋ผ
436
+ 2. ๋„ˆ๋Š” ์ „๋ฌธ์ ์ธ ์ƒํ’ˆ๋ฆฌ๋ทฐ ์ฝ˜ํ…์ธ  ์ž‘๊ฐ€์ด๋‹ค. ์ฃผ์–ด์ง„ ์ฃผ์ œ์— ๋Œ€ํ•ด ํ’๋ถ€ํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋ผ
437
+ 3. ๋ฐ˜๋“œ์‹œ {TARGET_CHAR_LENGTH}์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋ผ
438
+ 4. ๊ฐ ์„น์…˜์€ ์ตœ์†Œ {MIN_SECTION_LENGTH}์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋ผ
439
+ 5. ์ƒํ’ˆ์˜ ํŠน์žฅ์ , ๊ฐ์ข… ์ •๋ณด, ํŒ๋“ฑ์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋ผ
440
+ 6. ๋ฐ˜๋“œ์‹œ ๋‚ด๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜๊ณผ ๊ด€์ ์—์„œ ์ž‘์„ฑํ•˜๋ผ
441
+ [ํ…์ŠคํŠธ ์ž‘์„ฑ ๊ทœ์น™]
442
+ 1. ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅ๋œ ์†Œ์ฃผ์ œ(์•„์›ƒ๋ผ์ธ)์— ๋งž๊ฒŒ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ผ
443
+ 2. ์ฐธ๊ณ ๊ธ€์˜ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์ƒˆ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•˜๋˜, ๋‹ค์Œ์„ ๋ฐ˜๋“œ์‹œ ์ค€์ˆ˜ํ•˜๋ผ:
444
+ - ์ฐธ๊ณ ๊ธ€์— ์–ธ๊ธ‰๋œ ๋‹‰๋„ค์ž„, ์ด๋ฆ„, ํšŒ์‚ฌ๋ช…, ๋ธŒ๋žœ๋“œ๋ช… ๋“ฑ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ
445
+ - ์ฟ ํŒกํŒŒํŠธ๋„ˆ์Šค, ๊ด‘๊ณ , ์ œํ’ˆ ํ˜‘์ฐฌ, ์†Œ์ •์˜ ๊ธˆ์•ก์ด๋‚˜ ์‚ฌ์€ํ’ˆ์„ ๋ฐ›์•˜๋‹ค๋Š” ๋‚ด์šฉ ์ œ์™ธํ•  ๊ฒƒ
446
+ - ์ฐธ๊ณ ๊ธ€ ์ž‘์„ฑ์ž์˜ ๊ฒฝํ—˜์ด ์•„๋‹Œ ๋‚˜์˜ ์ง์ ‘ ๊ฒฝํ—˜์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•  ๊ฒƒ
447
+ 3. ์ „์ฒด ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์žฅ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ผ
448
+ 4. ์‰ฝ๊ฒŒ ์ฝํž ์ˆ˜ ์žˆ๋„๋ก ์‰ฌ์šด ์–ดํœ˜๋กœ ์ž‘์„ฑ
449
+ 5. ์‹œ๊ฐ์ (๋””์ž์ธ, ์™ธ๊ด€ ๋“ฑ)์ธ ๋ถ€๋ถ„, ์ŠคํŽ™, ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ, ์‚ฌ์šฉ๊ฒฝํ—˜, ์žฅ๋‹จ์ , ๊ฐ€๊ฒฉ ๋Œ€๋น„ ์„ฑ๋Šฅ(๊ฐ€์„ฑ๋น„), ์ถ”๊ฐ€๋น„์šฉ๋“ฑ์„ ๊ณ ๋ ค
450
+ 6. ๋‹ค๋ฅธ ์ œํ’ˆ๊ณผ์˜ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋ฐ˜์˜ํ•˜๋ผ(์ˆ˜์น˜, ๋ฐ์ดํ„ฐ ํฌํ•จ)
451
+ 7. ๊ตฌ์ฒด์ ์œผ๋กœ ์ƒํ’ˆ์ด ์ฃผ๋Š” ์œ ์ต(์ผ์ƒ์ƒํ™œ, ์—…๋ฌด ๋“ฑ์—์„œ)์— ๋Œ€ํ•œ ๋ถ„์„, ํ‰๊ฐ€, ์ „ํ›„ ๋น„๊ต, ๊ฒฝํ—˜, ์ถ”์ฒœ๋“ฑ์„ ํฌํ•จ
452
+ 8. ์ƒํ’ˆ์˜ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•, ์‚ฌ์šฉ ํŒ ๋“ฑ์„ ๊ณต์œ ํ•˜๋ผ
453
+ 9. ๋งˆํฌ๋‹ค์šด ํ˜•์‹(#, *, -, 1., 2. ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ž‘์„ฑํ•˜๋ผ
454
+ 10. ์†Œ์ œ๋ชฉ๊ณผ ๊ฒฐ๋ก ์€ ๋ฒˆํ˜ธ ์—†์ด ์ผ๋ฐ˜ ๋ฌธ์žฅ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ผ
455
+ 11. ๋ชฉ๋ก์€ ๋ถˆ๋ฆฟ์ด๋‚˜ ๋ฒˆํ˜ธ ๋Œ€์‹  ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฌธ์žฅ์œผ๋กœ ์„œ์ˆ ํ•˜๋ผ
456
+ 12. "์ฐธ๊ณ ๊ธ€", "์ฐธ๊ณ ๊ธ€์— ๋”ฐ๋ฅด๋ฉด", "~์— ์˜ํ•˜๋ฉด" ๋“ฑ์˜ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ
457
+ 13. "์—ฌ๋Ÿฌ๋ถ„", "๋…์ž ์—ฌ๋Ÿฌ๋ถ„" ๋“ฑ์˜ ์ง์ ‘์ ์ธ ํ˜ธ์นญ์„ ์ง€์–‘ํ•˜๋ผ
458
+ 14. ๊ณผ์žฅ๋œ ํ‘œํ˜„์ด๋‚˜ ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๋ผ
459
+ 15. ์ˆ˜์ตํ˜• ๋ธ”๋กœ๊ทธ๋‚˜ ์ œํœด๋งˆ์ผ€ํŒ… ๊ด€๋ จ ํ‘œํ˜„์„ ์ผ์ฒด ๋ฐฐ์ œํ•˜๋ผ
460
+ 16. ํ•ญ์ƒ ์ง์ ‘ ์‚ฌ์šฉํ•œ ๊ฒƒ์ฒ˜๋Ÿผ 1์ธ์นญ ๊ด€์ ์—์„œ ์ž‘์„ฑํ•˜๋ผ
461
+ """,
462
+ "๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•": """
463
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ๊ทœ์น™ - ๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•]
464
+ [๊ธฐ๋ณธ๊ทœ์น™]
465
+ 1. ๋ฐ˜๋“œ์‹œ ํ•œ๊ตญ์–ด(ํ•œ๊ธ€)๋กœ ์ž‘์„ฑํ•˜๋ผ
466
+ 2. ๋„ˆ๋Š” ๊ธฐ์ˆ  ์ „๋ฌธ๊ฐ€์ด์ž ์ƒํ’ˆ์˜ ๊ธฐ๋Šฅ์  ์ธก๋ฉด์— ํŠนํ™”๋œ ์ฝ˜ํ…์ธ  ์ž‘๊ฐ€์ด๋‹ค
467
+ 3. ๋ฐ˜๋“œ๏ฟฝ๏ฟฝ {TARGET_CHAR_LENGTH}์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋ผ
468
+ 4. ๊ฐ ์„น์…˜์€ ์ตœ์†Œ {MIN_SECTION_LENGTH}์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋ผ
469
+ 5. ๋ฐ˜๋“œ์‹œ ์ƒํ’ˆ์˜ ๊ธฐ์ˆ ์  ์ธก๋ฉด๊ณผ ๊ธฐ๋Šฅ์  ์š”์†Œ์—๋งŒ ์ง‘์ค‘ํ•˜์—ฌ ์ž‘์„ฑํ•˜๋ผ
470
+ 6. ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‹ฌ์ธต์ ์ด๊ณ  ๊ฐ๊ด€์ ์ธ ๋ถ„์„, ๋ฐ์ดํ„ฐ, ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•˜๋ผ
471
+ 7. ํ•ญ์ƒ ์ง์ ‘ ์‚ฌ์šฉํ•œ ๊ฒƒ์ฒ˜๋Ÿผ 1์ธ์นญ ๊ด€์ ์—์„œ ์ž‘์„ฑํ•˜์ง€๋งŒ, ๊ฐ๊ด€์ ์ธ ๊ธฐ์ˆ  ๋ถ„์„์— ์ค‘์ ์„ ๋‘๋ผ
472
+ [ํ…์ŠคํŠธ ์ž‘์„ฑ ๊ทœ์น™]
473
+ 1. ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅ๋œ ์†Œ์ฃผ์ œ(์•„์›ƒ๋ผ์ธ)์— ๋งž๊ฒŒ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ผ
474
+ 2. ์ฐธ๊ณ ๊ธ€์˜ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์ƒˆ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•˜๋˜, ๋‹ค์Œ์„ ๋ฐ˜๋“œ์‹œ ์ค€์ˆ˜ํ•˜๋ผ:
475
+ - ์ฐธ๊ณ ๊ธ€์— ์–ธ๊ธ‰๋œ ๋‹‰๋„ค์ž„, ์ด๋ฆ„, ํšŒ์‚ฌ๋ช…, ๋ธŒ๋žœ๋“œ๋ช… ๋“ฑ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ
476
+ - ์ฟ ํŒกํŒŒํŠธ๋„ˆ์Šค, ๊ด‘๊ณ , ์ œํ’ˆ ํ˜‘์ฐฌ, ์†Œ์ •์˜ ๊ธˆ์•ก์ด๋‚˜ ์‚ฌ์€ํ’ˆ์„ ๋ฐ›์•˜๋‹ค๋Š” ๋‚ด์šฉ ์ œ์™ธํ•  ๊ฒƒ
477
+ - ์ฐธ๊ณ ๊ธ€ ์ž‘์„ฑ์ž์˜ ๊ฒฝํ—˜์ด ์•„๋‹Œ ๊ธฐ์ˆ  ๊ฒ€์ฆ ๊ณผ์ •๊ณผ ๋ถ„์„ ๊ฒฐ๊ณผ๋กœ ์žฌ๊ตฌ์„ฑํ•  ๊ฒƒ
478
+ 3. ์ „์ฒด ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์žฅ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ผ
479
+ 4. ๋‹ค์Œ ์š”์†Œ๋“ค์„ ๋ฐ˜๋“œ์‹œ ํฌํ•จ์‹œ์ผœ๋ผ:
480
+ - ์ •ํ™•ํ•œ ๊ธฐ์ˆ  ์‚ฌ์–‘ ๋ฐ ์ŠคํŽ™ ๋ฐ์ดํ„ฐ (CPU, GPU, ๋ฉ”๋ชจ๋ฆฌ, ์ €์žฅ ๊ณต๊ฐ„ ๋“ฑ)
481
+ - ์ƒ์„ธํ•œ ๊ธฐ๋Šฅ ์„ค๋ช… ๋ฐ ์ž‘๋™ ์›๋ฆฌ (๊ฐ ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ธฐ์ˆ ์ ์œผ๋กœ ์„ค๋ช…)
482
+ - ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ ๋ฐ ์„ฑ๋Šฅ ์ธก์ • ๊ฒฐ๊ณผ (๊ตฌ์ฒด์ ์ธ ์ˆ˜์น˜๋กœ ์ œ์‹œ)
483
+ - ์ด์ „ ๋ชจ๋ธ ๋˜๋Š” ๊ฒฝ์Ÿ ์ œํ’ˆ๊ณผ์˜ ์„ฑ๋Šฅ ๋น„๊ต (ํ‘œ๋‚˜ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ์„ค๋ช…)
484
+ - ์‚ฌ์šฉ์ž ์„ค์ • ๋ฐ ์ตœ์ ํ™” ๋ฐฉ๋ฒ• (๊ธฐ๋Šฅ์„ ์ตœ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ • ๋ฐฉ๋ฒ•)
485
+ - ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ๋ฐ ์ˆจ๊ฒจ์ง„ ์„ค์ •์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…
486
+ - ๊ธฐ์ˆ ์  ํ•œ๊ณ„์™€ ๊ฐœ์„  ๊ฐ€๋Šฅ์„ฑ
487
+ 5. ๊ฐ์„ฑ์ ์ธ ํ‘œํ˜„์ด๋‚˜ ์ฃผ๊ด€์ ์ธ ์˜๊ฒฌ๋ณด๋‹ค๋Š” ๊ธฐ์ˆ ์  ์‚ฌ์‹ค๊ณผ ๊ฐ๊ด€์ ์ธ ๋ฐ์ดํ„ฐ์— ์ค‘์ ์„ ๋‘๋ผ
488
+ 6. ๊ธฐ์ˆ  ์ „๋ฌธ ์šฉ์–ด๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋˜, ํ•„์š”์‹œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ๋ง๋ถ™์—ฌ๋ผ
489
+ 7. ๋งˆํฌ๋‹ค์šด ํ˜•์‹(#, *, -, 1., 2. ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ž‘์„ฑํ•˜๋ผ
490
+ 8. ์†Œ์ œ๋ชฉ๊ณผ ๊ฒฐ๋ก ์€ ๋ฒˆํ˜ธ ์—†์ด ์ผ๋ฐ˜ ๋ฌธ์žฅ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ผ
491
+ 9. ๋ชฉ๋ก์€ ๋ถˆ๋ฆฟ์ด๋‚˜ ๋ฒˆํ˜ธ ๋Œ€์‹  ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฌธ์žฅ์œผ๋กœ ์„œ์ˆ ํ•˜๋ผ
492
+ 10. "์ฐธ๊ณ ๊ธ€", "์ฐธ๊ณ ๊ธ€์— ๋”ฐ๋ฅด๋ฉด", "~์— ์˜ํ•˜๋ฉด" ๋“ฑ์˜ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ
493
+ 11. "์—ฌ๋Ÿฌ๋ถ„", "๋…์ž ์—ฌ๋Ÿฌ๋ถ„" ๋“ฑ์˜ ์ง์ ‘์ ์ธ ํ˜ธ์นญ์„ ์ง€์–‘ํ•˜๋ผ
494
+ 12. ๊ณผ์žฅ๋œ ํ‘œํ˜„์ด๋‚˜ ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๋ผ
495
+ 13. ์ˆ˜์ตํ˜• ๋ธ”๋กœ๊ทธ๋‚˜ ์ œํœด๋งˆ์ผ€ํŒ… ๊ด€๋ จ ํ‘œํ˜„์„ ์ผ์ฒด ๋ฐฐ์ œํ•˜๋ผ
496
+ """,
497
+ "๊ณ ๊ฐ๋ฐ˜์‘ํ˜•": """
498
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ๊ทœ์น™ - ๊ณ ๊ฐ๋ฐ˜์‘ํ˜•]
499
+ [๊ธฐ๋ณธ๊ทœ์น™]
500
+ 1. ๋ฐ˜๋“œ์‹œ ํ•œ๊ตญ์–ด(ํ•œ๊ธ€)๋กœ ์ž‘์„ฑํ•˜๋ผ
501
+ 2. ๋„ˆ๋Š” ๋‹ค์–‘ํ•œ ๊ณ ๊ฐ ์˜๊ฒฌ์„ ์ข…ํ•ฉํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ์ „๋ฌธ ๋ฆฌ๋ทฐ์–ด์ด๋‹ค
502
+ 3. ๋ฐ˜๋“œ์‹œ {TARGET_CHAR_LENGTH}์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋ผ
503
+ 4. ๊ฐ ์„น์…˜์€ ์ตœ์†Œ {MIN_SECTION_LENGTH}์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋ผ
504
+ 5. ๋ฐ˜๋“œ์‹œ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž๋“ค์˜ ์‹ค์ œ ๊ฒฝํ—˜๊ณผ ์˜๊ฒฌ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ข…ํ•ฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ผ
505
+ 6. ๋‹ค์ˆ˜์˜ ์˜๊ฒฌ์„ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜๋˜, ์†Œ์ˆ˜์˜ ์ค‘์š”ํ•œ ์˜๊ฒฌ๋„ ์ ์ ˆํžˆ ํฌํ•จํ•˜๋ผ
506
+ 7. ๋ชจ๋“  ์„น์…˜์„ ๋™์ผํ•œ ํ˜•์‹์ด๋‚˜ ํŒจํ„ด์œผ๋กœ ์ž‘์„ฑํ•˜์ง€ ๋ง๊ณ , ๋‹ค์–‘ํ•œ ํ‘œํ˜„ ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜๋ผ
507
+
508
+ [ํ…์ŠคํŠธ ์ž‘์„ฑ ๊ทœ์น™]
509
+ 1. ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅ๋œ ์†Œ์ฃผ์ œ(์•„์›ƒ๋ผ์ธ)์— ๋งž๊ฒŒ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ผ
510
+ 2. ์ฐธ๊ณ ๊ธ€์˜ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์ƒˆ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•˜๋˜, ๋‹ค์Œ์„ ๋ฐ˜๋“œ์‹œ ์ค€์ˆ˜ํ•˜๋ผ:
511
+ - ์ฐธ๊ณ ๊ธ€์— ์–ธ๊ธ‰๋œ ๋‹‰๋„ค์ž„, ์ด๋ฆ„, ํšŒ์‚ฌ๋ช…, ๋ธŒ๋žœ๋“œ๋ช… ๋“ฑ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ
512
+ - ์ฟ ํŒกํŒŒํŠธ๋„ˆ์Šค, ๊ด‘๊ณ , ์ œํ’ˆ ํ˜‘์ฐฌ, ์†Œ์ •์˜ ๊ธˆ์•ก์ด๋‚˜ ์‚ฌ์€ํ’ˆ์„ ๋ฐ›์•˜๋‹ค๋Š” ๋‚ด์šฉ ์ œ์™ธํ•  ๊ฒƒ
513
+ - ์ฐธ๊ณ ๊ธ€ ์ž‘์„ฑ์ž์˜ ๊ฒฝํ—˜์„ ํฌํ•จํ•ด ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž๋“ค์˜ ๊ฒฝํ—˜์„ ์ข…ํ•ฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ์žฌ๊ตฌ์„ฑํ•  ๊ฒƒ
514
+ 3. ์ „์ฒด ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์žฅ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ผ
515
+ 4. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ‘œํ˜„ ๋ฐฉ์‹์„ ์„ž์–ด์„œ ์‚ฌ์šฉํ•˜๋ผ:
516
+ - ํ†ต๊ณ„์™€ ์ˆ˜์น˜๋ฅผ ํ™œ์šฉํ•œ ์ข…ํ•ฉ์  ์˜๊ฒฌ ์ œ์‹œ: "์‚ฌ์šฉ์ž์˜ ์•ฝ 75%๊ฐ€ ๋””์ž์ธ์— ๋งŒ์กฑํ–ˆ์œผ๋ฉฐ..."
517
+ - ์‚ฌ์šฉ์ž ์ง‘๋‹จ๋ณ„ ์˜๊ฒฌ ๋น„๊ต: "๋””์ž์ธ ์ „๊ณต์ž๋“ค์€ ๋ฏธ๋‹ˆ๋ฉ€ํ•œ ๋””์ž์ธ์„ ๋†’์ด ํ‰๊ฐ€ํ•œ ๋ฐ˜๋ฉด, ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋“ค์€..."
518
+ - ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ๊ฒฝํ—˜ ๋ณ€ํ™”: "๊ตฌ๋งค ์งํ›„์—๋Š” ๋†’์€ ๋งŒ์กฑ๋„๋ฅผ ๋ณด์˜€์œผ๋‚˜, 3๊ฐœ์›” ์‚ฌ์šฉ ํ›„์—๋Š”..."
519
+ - ์‹ค์ œ ์‚ฌ์šฉ ํ™˜๊ฒฝ๋ณ„ ํ‰๊ฐ€: "์‚ฌ๋ฌด์‹ค ํ™˜๊ฒฝ์—์„œ๋Š” ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚ฌ์ง€๋งŒ, ์•ผ์™ธ ํ™œ๋™ ์ค‘์—๋Š”..."
520
+ - ์˜จ๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ํŠธ๋ Œ๋“œ: "SNS์—์„œ๋Š” ์นด๋ฉ”๋ผ ๊ธฐ๋Šฅ์ด ํ™”์ œ๋ฅผ ๋ชจ์•˜์œผ๋ฉฐ..."
521
+ - ์ „๋ฌธ๊ฐ€ ์˜๊ฒฌ ์ธ์šฉ: "IT ์ „๋ฌธ ๋งค์ฒด๋“ค์€ ์ฃผ๋กœ ํ”„๋กœ์„ธ์„œ ์„ฑ๋Šฅ์„ ๋†’๊ฒŒ ํ‰๊ฐ€ํ–ˆ์ง€๋งŒ..."
522
+ 5. ๋ฌธ์ œ์ ์ด๋‚˜ ๋‹จ์ ์„ ์–ธ๊ธ‰ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜๋ผ:
523
+ - ์ผ๊ด€๋œ ๋ฌธ์ œ์ : "๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ ์ง€์ ํ•œ ๋ฌธ์ œ๋Š”..."
524
+ - ์†Œ์ˆ˜ ์˜๊ฒฌ ์† ์ค‘์š”ํ•œ ์ง€์ : "์†Œ์ˆ˜์˜ ์˜๊ฒฌ์ด์ง€๋งŒ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์ง€์ ์€..."
525
+ - ์ƒํ™ฉ๋ณ„ ๋‹จ์ : "ํŠน์ • ์ƒํ™ฉ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ œ์ ์œผ๋กœ๋Š”..."
526
+ - ๊ฐœ์„  ๊ฐ€๋Šฅ์„ฑ ์–ธ๊ธ‰: "์‚ฌ์šฉ์ž๋“ค์ด ์ง€์ ํ•œ ์ด ๋ฌธ์ œ๋Š” ํ–ฅํ›„ ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ๋กœ ๊ฐœ์„ ๋  ๊ฐ€๋Šฅ๏ฟฝ๏ฟฝ์ด..."
527
+ 6. ์ •ํ˜•ํ™”๋œ "A vs B" ๊ตฌ์กฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ , ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฌธ์žฅ ํ๋ฆ„ ์†์—์„œ ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์„ ํ‘œํ˜„ํ•˜๋ผ
528
+ 7. ๋งˆํฌ๋‹ค์šด ํ˜•์‹์€ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ž‘์„ฑํ•˜๋ผ
529
+ 8. "์ฐธ๊ณ ๊ธ€", "์ฐธ๊ณ ๊ธ€์— ๋”ฐ๋ฅด๋ฉด", "~์— ์˜ํ•˜๋ฉด" ๋“ฑ์˜ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ
530
+ 9. "์—ฌ๋Ÿฌ๋ถ„", "๋…์ž ์—ฌ๋Ÿฌ๋ถ„" ๋“ฑ์˜ ์ง์ ‘์ ์ธ ํ˜ธ์นญ์„ ์ง€์–‘ํ•˜๋ผ
531
+ 10. ๊ณผ์žฅ๋œ ํ‘œํ˜„์ด๋‚˜ ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๋ผ
532
+ 11. ์ˆ˜์ตํ˜• ๋ธ”๋กœ๊ทธ๋‚˜ ์ œํœด๋งˆ์ผ€ํŒ… ๊ด€๋ จ ํ‘œํ˜„์„ ์ผ์ฒด ๋ฐฐ์ œํ•˜๋ผ
533
+ 12. ๊ฐ ์„น์…˜๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ด€์ ์ด๋‚˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜์—ฌ ๋‚ด์šฉ์˜ ๋‹ค์–‘์„ฑ์„ ํ™•๋ณดํ•˜๋ผ
534
+ """
535
+ }
536
+ return prompts.get(category, prompts["์ผ๋ฐ˜"])
537
+
538
+
539
+ def generate_blog_post(category, style, outline_input, references1, references2, references3):
540
+ """ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ๋กœ ์ „์ฒด ๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ ํ•จ์ˆ˜ (ํ‡ด๊ณ  ๋ฐ ํ™•์žฅ ๊ธฐ๋Šฅ ํฌํ•จ)"""
541
+ try:
542
+ # ์ฐธ๊ณ ๊ธ€ ์ค€๋น„
543
+ references = [
544
+ references1.strip() if references1.strip() else "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ",
545
+ references2.strip() if references2.strip() else "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ",
546
+ references3.strip() if references3.strip() else "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ"
547
+ ]
548
+
549
+ # ์˜๋ฏธ ์žˆ๋Š” ์ฐธ๊ณ ๊ธ€๋งŒ ํ•„ํ„ฐ๋ง
550
+ references = [ref for ref in references if ref != "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ"]
551
+
552
+ if not references:
553
+ return "<p>์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.</p>", 0
554
+
555
+ if not outline_input.strip():
556
+ return "<p>์•„์›ƒ๋ผ์ธ์ด ์—†์Šต๋‹ˆ๋‹ค. ์•„์›ƒ๋ผ์ธ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.</p>", 0
557
+
558
+ # ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ ์Šคํƒ€์ผ ํ”„๋กฌํ”„ํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
559
+ category_prompt = get_category_blog_prompt(category)
560
+ style_prompt = get_style_prompt(style)
561
+
562
+ # Phase 1: ์ดˆ๊ธฐ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ
563
+ blog_prompt = f"""
564
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ž‘์„ฑ ์š”์ฒญ]
565
+ ์นดํ…Œ๊ณ ๋ฆฌ: {category}
566
+ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ: {style}
567
+ ์•„์›ƒ๋ผ์ธ:
568
+ {outline_input}
569
+ ์ฐธ๊ณ ๊ธ€:
570
+ {references[0]}
571
+ {references[1] if len(references) > 1 else ""}
572
+ {references[2] if len(references) > 2 else ""}
573
+ {category_prompt}
574
+ {style_prompt}
575
+ [์†Œ์ œ๋ชฉ ์ž‘์„ฑ ๊ฐ€์ด๋“œ]
576
+ 1. ๋ณธ๋ก ์˜ ๊ฐ ๋ถ€๋ถ„๋งˆ๋‹ค ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
577
+ 2. ์†Œ์ œ๋ชฉ์€ 10~20์ž ๋‚ด์™ธ๋กœ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์„ธ์š”.
578
+ 3. ์†Œ์ œ๋ชฉ์€ ๋…๋ฆฝ๋œ ์ค„์— ์œ„์น˜ํ•˜๊ณ  ์•ž๋’ค์— ๋นˆ ์ค„์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
579
+ 4. ์†Œ์ œ๋ชฉ ์˜ˆ์‹œ: '์ƒํ’ˆ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ', '๊ฐ€๊ฒฉ ๋Œ€๋น„ ์„ฑ๋Šฅ ๋ถ„์„', '์‚ฌ์šฉ์ž ๋งŒ์กฑ๋„ ๋ฐ ํ‰๊ฐ€'
580
+ [์ค‘์š” ์ž‘์„ฑ ๊ทœ์น™]
581
+ 1. ๋ฐ˜๋“œ์‹œ ์œ„์˜ ์•„์›ƒ๋ผ์ธ ์ˆœ์„œ์™€ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์ž‘์„ฑํ•˜๋ผ.
582
+ 2. ๊ฐ ์„น์…˜์€ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์„น์…˜ ์ œ๋ชฉ์„ ํฌํ•จํ•˜๋ผ.
583
+ 3. ๋„์ž…๋ถ€๋Š” ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋Œ๊ณ  ์ƒํ’ˆ์„ ๋งค๋ ฅ์ ์œผ๋กœ ์†Œ๊ฐœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ.
584
+ 4. ๋ณธ๋ก  ๊ฐ ๋ถ€๋ถ„์€ ์ƒํ’ˆ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ธก๋ฉด(๋””์ž์ธ, ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ, ๊ฐ€๊ฒฉ ๋“ฑ)์„ ๋‹ค๋ฃจ๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ์ •๋ณด์™€ ์˜ˆ์‹œ๋ฅผ ํฌํ•จํ•˜๋ผ.
585
+ 5. ๊ฒฐ๋ก ์€ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์ตœ์ข… ์ถ”์ฒœ์ด๋‚˜ ํ†ต์ฐฐ์„ ์ œ๊ณตํ•˜๋ผ.
586
+ 6. ์ „์ฒด ๊ธ€์˜ ๊ธธ์ด๋Š” ์ตœ์†Œ {TARGET_CHAR_LENGTH}์ž๊ฐ€ ๋˜๋„๋ก ์ž‘์„ฑํ•˜๋ผ.
587
+ 7. ๊ฐ ์„น์…˜์€ ์ตœ์†Œ {MIN_SECTION_LENGTH}์ž ์ด์ƒ์˜ ์ถฉ๋ถ„ํ•œ ๋‚ด์šฉ์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ.
588
+ 8. ๋งˆํฌ๋‹ค์šด ํ˜•์‹(#, *, -, 1., 2. ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ž‘์„ฑํ•˜๋ผ.
589
+ 9. ์†Œ์ œ๋ชฉ๊ณผ ๊ฒฐ๋ก ์€ ๋ฒˆํ˜ธ ์—†์ด ์ผ๋ฐ˜ ๋ฌธ์žฅ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ผ.
590
+ 10. ๋ชฉ๋ก์€ ๋ถˆ๋ฆฟ์ด๋‚˜ ๋ฒˆํ˜ธ ๋Œ€์‹  ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฌธ์žฅ์œผ๋กœ ์„œ์ˆ ํ•˜๋ผ.
591
+ 11. "์ฐธ๊ณ ๊ธ€", "์ฐธ๊ณ ๊ธ€์— ๋”ฐ๋ฅด๋ฉด" ๋“ฑ์˜ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ.
592
+ 12. "์—ฌ๋Ÿฌ๋ถ„", "๋…์ž ์—ฌ๋Ÿฌ๋ถ„" ๋“ฑ์˜ ์ง์ ‘์ ์ธ ํ˜ธ์นญ์„ ์ง€์–‘ํ•˜๋ผ.
593
+ 13. ๊ณผ์žฅ๋œ ํ‘œํ˜„์ด๋‚˜ ๋ถˆํ•„์š”ํ•œ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๋ผ.
594
+ 14. ๊ฐ ์„น์…˜ ์‚ฌ์ด์— ์ž์—ฐ์Šค๋Ÿฌ์šด ์—ฐ๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋ผ.
595
+ 15. ๊ธ€์˜ ์ฒ˜์Œ์— ์ „์ฒด ๊ธ€์˜ ๋งค๋ ฅ์ ์ธ ์ œ๋ชฉ์„ ๋ฐ˜๋“œ์‹œ ์ถ”๊ฐ€ํ•˜๋ผ.
596
+ 16. ๋ฐ˜๋“œ์‹œ ๊ตฌ์ฒด์ ์ธ ์ƒํ’ˆ ์ •๋ณด(๊ธฐ๋Šฅ, ์‚ฌ์–‘, ๊ฐ€๊ฒฉ, ์‚ฌ์šฉ๋ฒ•, ๊ตฌ๋งคํŒ ๋“ฑ)๋ฅผ ํฌํ•จํ•˜๋ผ.
597
+ """
598
+
599
+ # ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํŠน๋ณ„ ์ง€์นจ ์ถ”๊ฐ€
600
+ if category == "๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•":
601
+ blog_prompt += """
602
+ [๊ธฐ๋Šฅ์ง‘์ค‘ํ˜• ํŠน๋ณ„ ์ง€์นจ]
603
+ 1. ๋ฐ˜๋“œ์‹œ ๊ธฐ์ˆ  ์‚ฌ์–‘๊ณผ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐ๊ด€์ ์ธ ๋ฐ์ดํ„ฐ์™€ ์ˆ˜์น˜๋ฅผ ์ œ๊ณตํ•˜๋ผ.
604
+ 2. ๊ฐ ๊ธฐ๋Šฅ์˜ ์ž‘๋™ ์›๋ฆฌ์™€ ์‹ค์ œ ์„ฑ๋Šฅ์„ ๊ธฐ์ˆ ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋ผ.
605
+ 3. ๊ธฐ๋Šฅ๋ณ„๋กœ ์‚ฌ์šฉ๋ฒ•, ์„ค์ • ๋ฐฉ๋ฒ•, ์ตœ์ ํ™” ํŒ์„ ์ƒ์„ธํžˆ ์ œ๊ณตํ•˜๋ผ.
606
+ 4. ๊ฒฝ์Ÿ ์ œํ’ˆ ๋˜๋Š” ์ด์ „ ๋ชจ๋ธ๊ณผ์˜ ๊ธฐ๋Šฅ ๋น„๊ต๋ฅผ ๊ตฌ์ฒด์ ์ธ ์ˆ˜์น˜์™€ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋ผ.
607
+ 5. ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ๊ณ„์ ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋ผ.
608
+ 6. ์ „๋ฌธ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋ผ.
609
+ """
610
+ elif category == "๊ณ ๊ฐ๋ฐ˜์‘ํ˜•":
611
+ blog_prompt += """
612
+ [๊ณ ๊ฐ๋ฐ˜์‘ํ˜• ํŠน๋ณ„ ์ง€์นจ]
613
+ 1. ๋ฐ˜๋“œ์‹œ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ์ง‘๋‹จ(์—ฐ๋ น, ์„ฑ๋ณ„, ์‚ฌ์šฉ ๋ชฉ์  ๋“ฑ)์˜ ์˜๊ฒฌ์„ ํฌํ•จํ•˜๋ผ.
614
+ 2. "์ผ๋ถ€ ์‚ฌ์šฉ์ž๋“ค์€...", "๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด...", "20๋Œ€ ์‚ฌ์šฉ์ž๋“ค์€...๋ฐ˜๋ฉด 40๋Œ€ ์‚ฌ์šฉ์ž๋“ค์€..." ๋“ฑ์˜ ํ‘œํ˜„์œผ๋กœ ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์„ ๋Œ€๋น„ํ•˜๋ผ.
615
+ 3. ๊ธ์ •์  ํ”ผ๋“œ๋ฐฑ๊ณผ ๋ถ€์ •์  ํ”ผ๋“œ๋ฐฑ์„ ๊ท ํ˜• ์žˆ๊ฒŒ ํฌํ•จํ•˜๋ผ.
616
+ 4. ์˜จ๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ, SNS, ๋ฆฌ๋ทฐ ์‚ฌ์ดํŠธ ๋“ฑ ๋‹ค์–‘ํ•œ ์ถœ์ฒ˜์˜ ์˜๊ฒฌ์„ ์ธ์šฉํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ.
617
+ 5. ์ „๋ฌธ๊ฐ€ ์˜๊ฒฌ๊ณผ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์˜๊ฒฌ์„ ๋น„๊ตํ•˜์—ฌ ์ œ์‹œํ•˜๋ผ.
618
+ 6. ์‹ค์ œ ์‚ฌ๋ก€์™€ ๊ฒฝํ—˜๋‹ด์„ ํ†ตํ•ด ์ œํ’ˆ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์‹œ๊ฐ์„ ๋ณด์—ฌ์ฃผ๋ผ.
619
+ """
620
+
621
+ # Gemini API ํ˜ธ์ถœ (ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ๋กœ ์ „์ฒด ๊ธ€ ์ƒ์„ฑ)
622
+ logging.info("์ „์ฒด ๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ ์‹œ์ž‘")
623
+ blog_content = call_gemini_api(blog_prompt, temperature=0.7)
624
+ logging.info(f"์ƒ์„ฑ๋œ ์›๋ณธ ๊ธ€ ๊ธธ์ด: {len(blog_content)}")
625
+
626
+ # ํ›„์ฒ˜๋ฆฌ
627
+ processed_content = post_process_blog(blog_content, style, category)
628
+
629
+ # HTML ๋ณ€ํ™˜ํ•˜์—ฌ ๊ธ€์ž ์ˆ˜ ์ฒดํฌ
630
+ temp_html = format_blog_post(processed_content)
631
+ soup = BeautifulSoup(temp_html, 'html.parser')
632
+ char_count = len(soup.get_text())
633
+ logging.info(f"์ดˆ๊ธฐ ๋ธ”๋กœ๊ทธ ๊ธ€ ๊ธ€์ž ์ˆ˜: {char_count}")
634
+
635
+ # Phase 2: ๊ธ€์ž ์ˆ˜๊ฐ€ ๋ชฉํ‘œ์— ๋ฏธ๋‹ฌํ•˜๋ฉด ํ‡ด๊ณ  ๋ฐ ํ™•์žฅ
636
+ if char_count < TARGET_CHAR_LENGTH * 0.8: # ๋ชฉํ‘œ์˜ 80% ๋ฏธ๋งŒ์ด๋ฉด ํ™•์žฅ
637
+ logging.info(f"๊ธ€์ž ์ˆ˜ ๋ถ€์กฑ ({char_count} < {TARGET_CHAR_LENGTH * 0.8}), ํ™•์žฅ ์‹œ๋„")
638
+
639
+ # ๊ฐ€์žฅ ๊ธด ์ฐธ๊ณ ๊ธ€ ์„ ํƒ
640
+ longest_ref = max(references, key=len)
641
+
642
+ expansion_prompt = f"""
643
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ๋ธ”๋กœ๊ทธ ๊ธ€ ํ™•์žฅ ์š”์ฒญ]
644
+ ์นดํ…Œ๊ณ ๋ฆฌ: {category}
645
+ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ: {style}
646
+ ์›๋ณธ ๊ธ€:
647
+ {processed_content}
648
+ ์ฐธ๊ณ ๊ธ€:
649
+ {longest_ref}
650
+ ๋ฌธ์ œ์ :
651
+ ์ด ๊ธ€์€ ๋ชฉํ‘œ ๊ธ€์ž์ˆ˜์ธ {TARGET_CHAR_LENGTH}์ž์— ๋ฏธ์น˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ธ€์ž์ˆ˜๋Š” ์•ฝ {char_count}์ž์ž…๋‹ˆ๋‹ค.
652
+ ๋‚ด์šฉ์ด ๋ถ€์‹คํ•˜์—ฌ ํ™•์žฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
653
+ {style_prompt}
654
+ [ํ™•์žฅ ์š”๊ตฌ์‚ฌํ•ญ]
655
+ 1. ์›๋ณธ ๊ธ€์˜ ๊ตฌ์กฐ์™€ ์•„์›ƒ๋ผ์ธ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฐ ์„น์…˜์˜ ๋‚ด์šฉ์„ ๋Œ€ํญ ํ™•์žฅํ•˜๋ผ.
656
+ 2. ๊ฐ ์„น์…˜์— ๋” ๊ตฌ์ฒด์ ์ธ ์ •๋ณด, ์˜ˆ์‹œ, ์‚ฌ๋ก€, ํ†ต๊ณ„ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜๋ผ.
657
+ """
658
+
659
+ # ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ™•์žฅ ์ง€์นจ ์ถ”๊ฐ€
660
+ if category == "๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•":
661
+ expansion_prompt += """
662
+ 3. ํŠนํžˆ ๋‹ค์Œ ์š”์†Œ๋“ค์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ธฐ๋Šฅ์  ์ธก๋ฉด์„ ๊ฐ•ํ™”ํ•˜๋ผ:
663
+ - ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ธฐ์ˆ ์  ์ž‘๋™ ์›๋ฆฌ์— ๋Œ€ํ•œ ๋” ์ƒ์„ธํ•œ ์„ค๋ช…
664
+ - ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์™€ ๊ตฌ์ฒด์ ์ธ ์„ฑ๋Šฅ ์ˆ˜์น˜
665
+ - ๊ธฐ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ์„ค์ • ๋ฐฉ๋ฒ•
666
+ - ๊ฒฝ์Ÿ ์ œํ’ˆ๊ณผ์˜ ๊ธฐ๋Šฅ๋ณ„ ์ƒ์„ธ ๋น„๊ต
667
+ - ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ˆจ๊ฒจ์ง„ ์„ค์ •๊ณผ ๊ธฐ๋Šฅ
668
+ """
669
+ elif category == "๊ณ ๊ฐ๋ฐ˜์‘ํ˜•":
670
+ expansion_prompt += """
671
+ 3. ํŠนํžˆ ๋‹ค์Œ ์š”์†Œ๋“ค์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ณ ๊ฐ ๋ฐ˜์‘์„ ๊ฐ•ํ™”ํ•˜๋ผ:
672
+ - ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน(ํ•™์ƒ, ์ง์žฅ์ธ, ํฌ๋ฆฌ์—์ดํ„ฐ ๋“ฑ)์˜ ๋‹ค์–‘ํ•œ ์˜๊ฒฌ
673
+ - ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ณ„ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๋‹ด
674
+ - ์ƒ๋ฐ˜๋œ ์˜๊ฒฌ๋“ค ๊ฐ„์˜ ๋” ๋ช…ํ™•ํ•œ ๋Œ€๋น„
675
+ - ์ธ์šฉ ํ˜•์‹์˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ๊ณผ ๋ฐ˜์‘
676
+ - ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ์‚ฌ์šฉ์ž ๋งŒ์กฑ๋„ ๋ณ€ํ™”
677
+ """
678
+ else:
679
+ expansion_prompt += """
680
+ 3. ํŠนํžˆ ๋‹ค์Œ ์š”์†Œ๋“ค์„ ์ถ”๊ฐ€ํ•˜๋ผ:
681
+ - ์ƒํ’ˆ ์ŠคํŽ™, ๊ธฐ๋Šฅ, ๊ฐ€๊ฒฉ, ๊ตฌ๋งค์ฒ˜, ์‚ฌ์šฉ๋ฒ• ๋“ฑ ์‹ค์šฉ์  ์ •๋ณด ์ถ”๊ฐ€
682
+ - ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค, ํ™œ์šฉ ํŒ, ์ฃผ์˜์‚ฌํ•ญ ๋“ฑ ์ถ”๊ฐ€
683
+ - ์œ ์‚ฌ ์ œํ’ˆ๊ณผ์˜ ๋น„๊ต ์ •๋ณด, ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์ •๋ณด ๋“ฑ ์ถ”๊ฐ€
684
+ """
685
+
686
+ expansion_prompt += f"""
687
+ 4. ์ „์ฒด ๊ธ€์ž ์ˆ˜๋ฅผ ์ตœ์†Œ {TARGET_CHAR_LENGTH}์ž ์ด์ƒ ๋‹ฌ์„ฑํ•˜๋ผ.
688
+ 5. ์Šคํƒ€์ผ๊ณผ ์–ด์กฐ๋Š” ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ผ.
689
+ 6. ๋งˆํฌ๋‹ค์šด ํ˜•์‹(#, *, -, 1., 2. ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ž‘์„ฑํ•˜๋ผ.
690
+ 7. ์†Œ์ œ๋ชฉ๊ณผ ๊ฒฐ๋ก ์€ ๋ฒˆํ˜ธ ์—†์ด ์ผ๋ฐ˜ ๋ฌธ์žฅ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ผ.
691
+ 8. ๋ชฉ๋ก์€ ๋ถˆ๋ฆฟ์ด๋‚˜ ๋ฒˆํ˜ธ ๋Œ€์‹  ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฌธ์žฅ์œผ๋กœ ์„œ์ˆ ํ•˜๋ผ.
692
+ 9. "์ฐธ๊ณ ๊ธ€" ๊ด€๋ จ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ.
693
+ 10. ๋ถ€์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฐ˜๋ณต์ด๋‚˜ ๊ณผ์žฅ๋œ ํ‘œํ˜„์„ ํ”ผํ•˜๋ผ.
694
+ """
695
+
696
+ # ํ™•์žฅ ์‹œ๋„
697
+ expanded_content = call_gemini_api(expansion_prompt, temperature=0.75)
698
+ processed_content = post_process_blog(expanded_content, style, category)
699
+
700
+ # ๋‹ค์‹œ ๊ธ€์ž ์ˆ˜ ์ฒดํฌ
701
+ temp_html = format_blog_post(processed_content)
702
+ soup = BeautifulSoup(temp_html, 'html.parser')
703
+ char_count = len(soup.get_text())
704
+ logging.info(f"ํ™•์žฅ ํ›„ ๋ธ”๋กœ๊ทธ ๊ธ€ ๊ธ€์ž ์ˆ˜: {char_count}")
705
+
706
+ # Phase 3: ์—ฌ์ „ํžˆ ๋ถ€์กฑํ•˜๋ฉด ์ถ”๊ฐ€ ํ™•์žฅ ์‹œ๋„
707
+ if char_count < TARGET_CHAR_LENGTH * 0.9: # ๋ชฉํ‘œ์˜ 90% ๋ฏธ๋งŒ์ด๋ฉด ์ถ”๊ฐ€ ํ™•์žฅ
708
+ logging.info(f"์—ฌ์ „ํžˆ ๊ธ€์ž ์ˆ˜ ๋ถ€์กฑ ({char_count} < {TARGET_CHAR_LENGTH * 0.9}), ์ถ”๊ฐ€ ํ™•์žฅ ์‹œ๋„")
709
+
710
+ additional_expansion_prompt = f"""
711
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ถ”๊ฐ€ ํ™•์žฅ ์š”์ฒญ]
712
+ ์นดํ…Œ๊ณ ๋ฆฌ: {category}
713
+ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ: {style}
714
+ ์›๋ณธ ๊ธ€:
715
+ {processed_content}
716
+ ๋ฌธ์ œ์ :
717
+ ์ด ๊ธ€์€ ์—ฌ์ „ํžˆ ๋ชฉํ‘œ ๊ธ€์ž์ˆ˜์ธ {TARGET_CHAR_LENGTH}์ž์— ๋ฏธ์น˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ธ€์ž์ˆ˜๋Š” ์•ฝ {char_count}์ž์ž…๋‹ˆ๋‹ค.
718
+ [์ถ”๊ฐ€ ํ™•์žฅ ์š”๊ตฌ์‚ฌํ•ญ]
719
+ 1. ๋ณธ๋ก  ๋ถ€๋ถ„์„ ์ค‘์‹ฌ์œผ๋กœ ์„ธ๋ถ€ ๋‚ด์šฉ์„ ํฌ๊ฒŒ ํ™•์žฅํ•˜๋ผ.
720
+ """
721
+
722
+ # ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ถ”๊ฐ€ ํ™•์žฅ ์ง€์นจ
723
+ if category == "๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•":
724
+ additional_expansion_prompt += """
725
+ 2. ๊ธฐ์ˆ ์  ์ธก๋ฉด์—์„œ ๋‹ค์Œ ๋‚ด์šฉ์„ ๋” ์ถ”๊ฐ€ํ•˜๋ผ:
726
+ - ๊ฐ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์˜ ์„ธ๋ถ€ ์ž‘๋™ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ์„ค๋ช…
727
+ - ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ํ™˜๊ฒฝ์—์„œ์˜ ์„ฑ๋Šฅ ์ธก์ • ๋ฐ์ดํ„ฐ
728
+ - ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ์ตœ์ ํ™” ๋ฐฉ์‹
729
+ - ์ˆจ๊ฒจ์ง„ ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ๋‚˜ ๊ณ ๊ธ‰ ์„ค์ • ์˜ต์…˜
730
+ - ๊ธฐ๋Šฅ ์—…๋ฐ์ดํŠธ ์˜ˆ์ • ์‚ฌํ•ญ๊ณผ ํ–ฅํ›„ ๊ฐ€๋Šฅ์„ฑ
731
+ """
732
+ elif category == "๊ณ ๊ฐ๋ฐ˜์‘ํ˜•":
733
+ additional_expansion_prompt += """
734
+ 2. ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ๋ฐ˜์‘ ์ธก๋ฉด์—์„œ ๋‹ค์Œ ๋‚ด์šฉ์„ ๋” ์ถ”๊ฐ€ํ•˜๋ผ:
735
+ - ๋‹ค์–‘ํ•œ ๊ตญ๊ฐ€์™€ ๋ฌธํ™”๊ถŒ์˜ ์‚ฌ์šฉ์ž ๋ฐ˜์‘ ์ฐจ์ด
736
+ - ๊ตฌ๋งค ํ›„ ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ๋งŒ์กฑ๋„ ๋ณ€ํ™” ์ถ”์ด
737
+ - ํŠน์ˆ˜ํ•œ ์‚ฌ์šฉ ํ™˜๊ฒฝ(๊ทนํ•œ ๊ธฐํ›„, ํŠน์ˆ˜ ์ง์—… ๋“ฑ)์—์„œ์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜
738
+ - ์ œํ’ˆ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ํฌ๋Ÿผ์—์„œ์˜ ์ฃผ์š” ๋…ผ์Ÿ์ 
739
+ - ๊ณต์‹ ์ง€์›ํŒ€์˜ ํ”ผ๋“œ๋ฐฑ ๋Œ€์‘์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ํ‰๊ฐ€
740
+ """
741
+ else:
742
+ additional_expansion_prompt += """
743
+ 2. ๋‹ค์Œ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋” ๊นŠ์€ ์„ค๋ช…๊ณผ ์‹ค์šฉ์ ์ธ ์ ์šฉ ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•˜๋ผ:
744
+ - ์ƒํ’ˆ์˜ ํŠน์ˆ˜ํ•œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋‚˜ ํ™œ์šฉ ์‚ฌ๋ก€
745
+ - ์ „๋ฌธ๊ฐ€๋“ค์ด ๋งํ•˜๋Š” ์ˆจ๊ฒจ์ง„ ๊ธฐ๋Šฅ์ด๋‚˜ ํŒ
746
+ - ์ƒํ’ˆ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ์ด๋‚˜ ์œ ์ง€๊ด€๋ฆฌ ๋ฐฉ๋ฒ•
747
+ - ๊ตฌ๋งค ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ถ”๊ฐ€ ์š”์†Œ๋‚˜ ๋น„์šฉ
748
+ - ๊ตฌ์ฒด์ ์ธ ์ƒํ’ˆ ์ŠคํŽ™, ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ, ๊ฐ€๊ฒฉ ์ •๋ณด
749
+ """
750
+
751
+ additional_expansion_prompt += f"""
752
+ 3. ์†Œ๋น„์ž์—๊ฒŒ ์œ ์šฉํ•œ ํ•ต์‹ฌ ์ •๋ณด์™€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋” ํ’๋ถ€ํ•˜๊ฒŒ ์ œ๊ณตํ•˜๋ผ.
753
+ 4. ์ „์ฒด ๊ธ€์ž ์ˆ˜๋ฅผ ์ตœ์†Œ {TARGET_CHAR_LENGTH}์ž ์ด์ƒ์œผ๋กœ ํ™•์žฅํ•˜๋ผ.
754
+ 5. ์Šคํƒ€์ผ๊ณผ ์–ด์กฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ผ.
755
+ 6. ๋ฐ˜๋ณต๋˜๋Š” ๋‚ด์šฉ์ด๋‚˜ ์ค‘๋ณต์€ ํ”ผํ•˜๋ผ.
756
+ """
757
+
758
+ # ์ถ”๊ฐ€ ํ™•์žฅ ์‹œ๋„ (์ด ๋ถ€๋ถ„์˜ ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ์ˆ˜์ •๋˜์–ด์•ผ ํ•จ)
759
+ further_expanded_content = call_gemini_api(additional_expansion_prompt, temperature=0.8)
760
+ processed_content = post_process_blog(further_expanded_content, style, category)
761
+
762
+ # ์ตœ์ข… HTML ๋ณ€ํ™˜
763
+ final_html = format_blog_post(processed_content)
764
+
765
+ # ์ตœ์ข… ๊ธ€์ž ์ˆ˜ ๊ณ„์‚ฐ
766
+ soup = BeautifulSoup(final_html, 'html.parser')
767
+ final_char_count = len(soup.get_text())
768
+ logging.info(f"์ตœ์ข… ๋ธ”๋กœ๊ทธ ๊ธ€ ๊ธ€์ž ์ˆ˜: {final_char_count}")
769
+
770
+ return final_html, final_char_count
771
+
772
+ except Exception as e:
773
+ logging.error(f"๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}")
774
+ return f"<p>๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}</p>", 0
775
+
776
+
777
+ def post_process_blog(blog_content, style="์นœ๊ทผํ•œ", category="์ผ๋ฐ˜"):
778
+ """๋ธ”๋กœ๊ทธ ์ปจํ…์ธ  ํ›„์ฒ˜๋ฆฌ ํ•จ์ˆ˜ - ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํŠนํ™” ์ฒ˜๋ฆฌ ์ถ”๊ฐ€"""
779
+ try:
780
+ # ๋ฒˆํ˜ธ ๋ชฉ๋ก, ๋ถˆ๋ฆฟ, ํ—ค๋”ฉ ๋“ฑ ์ œ๊ฑฐ
781
+ blog_content = re.sub(r'^\d+\.\s+', '', blog_content, flags=re.MULTILINE)
782
+ blog_content = re.sub(r'^[\*\-\โ€ข]\s+', '', blog_content, flags=re.MULTILINE)
783
+ blog_content = re.sub(r'^#+\s+', '', blog_content, flags=re.MULTILINE)
784
+
785
+ # ์Šคํƒ€์ผ์— ๋”ฐ๋ฅธ ์–ดํˆฌ ์กฐ์ •
786
+ if style == "์นœ๊ทผํ•œ":
787
+ blog_content = re.sub(r'([๊ฐ€-ํžฃ]+)๊ณ ์š”', r'\1๊ตฌ์š”', blog_content)
788
+ blog_content = re.sub(r'๋‹ต๋‹ˆ๋‹ค', '์–ด์š”', blog_content)
789
+ blog_content = re.sub(r'์˜€๋‹ต๋‹ˆ๋‹ค', '์˜€์–ด์š”', blog_content)
790
+ blog_content = re.sub(r'ํ–ˆ๋‹ต๋‹ˆ๋‹ค', 'ํ–ˆ์–ด์š”', blog_content)
791
+ blog_content = re.sub(r'์Šต๋‹ˆ๋‹ค', '์š”', blog_content)
792
+ blog_content = re.sub(r'ํ•ฉ๋‹ˆ๋‹ค', 'ํ•ด์š”', blog_content)
793
+ blog_content = re.sub(r'๋ฉ๋‹ˆ๋‹ค', '๋ผ์š”', blog_content)
794
+ blog_content = re.sub(r'์ž…๋‹ˆ๋‹ค', '์ด์—์š”', blog_content)
795
+
796
+ # ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํŠนํ™” ์ฒ˜๋ฆฌ
797
+ if category == "๊ธฐ๋Šฅ์ง‘์ค‘ํ˜•":
798
+ # ๊ธฐ์ˆ  ์šฉ์–ด ๊ฐ•ํ™” ๋ฐ ๊ตฌ์ฒด์  ์ˆ˜์น˜ ๊ฐ•์กฐ
799
+ tech_terms = [
800
+ (r'์„ฑ๋Šฅ', r'๊ธฐ์ˆ ์  ์„ฑ๋Šฅ'),
801
+ (r'์†๋„', r'์ฒ˜๋ฆฌ ์†๋„'),
802
+ (r'ํ™”๋ฉด', r'๋””์Šคํ”Œ๋ ˆ์ด'),
803
+ (r'์นด๋ฉ”๋ผ', r'์ด๋ฏธ์ง€ ์„ผ์„œ ์‹œ์Šคํ…œ'),
804
+ (r'๋ฐฐํ„ฐ๋ฆฌ', r'์ „๋ ฅ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ'),
805
+ (r'์‚ฌ์šฉ', r'์šด์šฉ'),
806
+ (r'์ข‹๋‹ค', r'ํšจ์œจ์ ์ด๋‹ค'),
807
+ (r'๋น ๋ฅด๋‹ค', r'๊ณ ์„ฑ๋Šฅ์ด๋‹ค')
808
+ ]
809
+ for pattern, replacement in tech_terms:
810
+ blog_content = re.sub(r'\b' + pattern + r'\b', replacement, blog_content)
811
+
812
+ # ๊ฐ๊ด€์  ๋ถ„์„ ๊ฐ•ํ™”
813
+ blog_content = re.sub(r'์ œ ์ƒ๊ฐ์—๋Š”', r'๋ถ„์„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅด๋ฉด', blog_content)
814
+ blog_content = re.sub(r'์ œ๊ฐ€ ๋ดค์„ ๋•Œ', r'๊ธฐ์ˆ ์  ๊ด€์ ์—์„œ', blog_content)
815
+ blog_content = re.sub(r'๋А๋‚Œ์ด ๋“ค์–ด์š”', r'์ธก์ •๋ฉ๋‹ˆ๋‹ค', blog_content)
816
+
817
+ # ์ˆซ์ž์™€ ๋‹จ์œ„ ์‚ฌ์ด์— ๊ณต๋ฐฑ ์ถ”๊ฐ€
818
+ blog_content = re.sub(r'(\d+)([๊ฐ€-ํžฃ]+)', r'\1 \2', blog_content)
819
+
820
+ elif category == "๊ณ ๊ฐ๋ฐ˜์‘ํ˜•":
821
+ # 1. ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ์ง‘๋‹จ ํ‘œํ˜„ ์‚ฌ์šฉ (๋‹จ์ˆœ "์‚ฌ์šฉ์ž๋“ค"๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ์ง‘๋‹จ์œผ๋กœ)
822
+ user_group_patterns = [
823
+ # ์ค‘๋ณต ํŒจํ„ด ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ถฉ๋ถ„ํžˆ ๊ธด ๋ฌธ๋งฅ๊ณผ ํ•จ๊ป˜ ํŒจํ„ด ์ •์˜
824
+ (r'(๋งŽ์€|๋Œ€๋ถ€๋ถ„์˜|์ผ๋ถ€) ์‚ฌ์šฉ์ž๋“ค์€ ([๊ฐ€-ํžฃ\s]+)ํ–ˆ', r'\1 ์‚ฌ์šฉ์ž๋“ค์€ \2ํ–ˆ'), # ๊ธฐ์กด ํŒจํ„ด ์œ ์ง€
825
+ (r'์‚ฌ์šฉ์ž๋“ค์ด ([๊ฐ€-ํžฃ\s]+)๊ณ  ์žˆ', r'20~30๋Œ€ ์‚ฌ์šฉ์ž๋“ค์ด \1๊ณ  ์žˆ'),
826
+ (r'์‚ฌ์šฉ์ž๋“ค์˜ ([๊ฐ€-ํžฃ\s]+)๊ฐ€ ๋†’', r'์ „๋ฌธ๊ฐ€์™€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋“ค์˜ \1๊ฐ€ ๋†’'),
827
+ (r'์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ([๊ฐ€-ํžฃ\s]+)๋กœ ์ธ๊ธฐ', r'ํฌ๋ฆฌ์—์ดํ„ฐ์™€ ๋ฏธ๋””์–ด ์ œ์ž‘์ž๋“ค์—๊ฒŒ \1๋กœ ์ธ๊ธฐ'),
828
+ (r'์‚ฌ์šฉ์ž๋“ค์ด ([๊ฐ€-ํžฃ\s]+)๋ฅผ ์ง€์ ', r'์žฅ์‹œ๊ฐ„ ์‚ฌ์šฉํ•œ ์œ ์ €๋“ค์ด \1๋ฅผ ์ง€์ ')
829
+ ]
830
+
831
+ # 2. ๋‹ค์–‘ํ•œ ์˜๊ฒฌ ํ‘œํ˜„ ํŒจํ„ด (๋ฐ˜๋ณต๋˜๋Š” A vs B ํŒจํ„ด ํƒˆํ”ผ)
832
+ opinion_patterns = [
833
+ # ์ง์ ‘์  ๊ฒฝํ—˜ -> ์ข…ํ•ฉ์  ์˜๊ฒฌ์œผ๋กœ ๋ณ€ํ™˜
834
+ (r'์ €๋Š” ([๊ฐ€-ํžฃ\s]+)ํ–ˆ์–ด์š”', [
835
+ r'์‚ฌ์šฉ์ž ์„ค๋ฌธ์— ๋”ฐ๋ฅด๋ฉด ๋Œ€๋‹ค์ˆ˜๊ฐ€ \1ํ–ˆ๋‹ค๊ณ  ์‘๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค',
836
+ r'์ฃผ์š” ๋ฆฌ๋ทฐ๋“ค์„ ์ข…ํ•ฉํ•ด๋ณด๋ฉด \1ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค',
837
+ r'์‚ฌ์šฉ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์œ ์ €๋“ค์ด \1ํ–ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค'
838
+ ]),
839
+ (r'์ œ ๊ฒฝํ—˜์ƒ ([๊ฐ€-ํžฃ\s]+)๋Š” ๊ฒƒ ๊ฐ™์•„์š”', [
840
+ r'์žฅ๊ธฐ ์‚ฌ์šฉ์ž๋“ค์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋ฉด \1๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค',
841
+ r'์˜จ๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” \1๋Š” ์˜๊ฒฌ์ด ์ง€๋ฐฐ์ ์ž…๋‹ˆ๋‹ค',
842
+ r'์œ ํŠœ๋ธŒ์™€ ์ธ์Šคํƒ€๊ทธ๋žจ์˜ ๋ฆฌ๋ทฐ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด \1๋Š” ํ‰๊ฐ€๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค'
843
+ ]),
844
+ # ๋‹จ์ˆœ ์˜๊ฒฌ ํ‘œํ˜„ -> ๋‹ค์–‘ํ•œ ๊ด€์  ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜
845
+ (r'([๊ฐ€-ํžฃ\s]+)ํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์–ด์š”', [
846
+ r'\1ํ•˜๋‹ค๋Š” ์ ์ด ์ฃผ์š” ์žฅ์ ์œผ๋กœ ๊ผฝํž™๋‹ˆ๋‹ค',
847
+ r'\1ํ•˜๋‹ค๋Š” ํŠน์ง•์— ๋งŒ์กฑํ•œ๋‹ค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ 70% ์ด์ƒ์ž…๋‹ˆ๋‹ค',
848
+ r'\1ํ•˜๋‹ค๋Š” ์ ์€ SNS์—์„œ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์–ธ๊ธ‰๋˜๋Š” ํŠน์ง•์ž…๋‹ˆ๋‹ค'
849
+ ]),
850
+ (r'([๊ฐ€-ํžฃ\s]+)ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์–ด์š”', [
851
+ r'\1ํ•˜๋‹ค๋Š” ์ ์€ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋“ค์ด ๊ฐœ์„ ์„ ์š”๊ตฌํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค',
852
+ r'\1ํ•˜๋‹ค๋Š” ํ•œ๊ณ„์ ์€ ํŠนํžˆ ์ „๋ฌธ ์‚ฌ์šฉ์ž๋“ค ์‚ฌ์ด์—์„œ ์ง€์ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค',
853
+ r'\1ํ•˜๋‹ค๋Š” ์ ์€ ์‚ฌ์šฉ์ž ํฌ๋Ÿผ์—์„œ ์ž์ฃผ ๋…ผ์˜๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค'
854
+ ])
855
+ ]
856
+
857
+ # 3. ๋Œ€๋น„๋˜๋Š” ์˜๊ฒฌ ํ‘œํ˜„ ๋‹ค์–‘ํ™”
858
+ contrast_patterns = [
859
+ (r'([๊ฐ€-ํžฃ\s]+)ํ•˜์ง€๋งŒ ([๊ฐ€-ํžฃ\s]+)ํ•ฉ๋‹ˆ๋‹ค', [
860
+ r'\1ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์œผ๋‚˜, ํŠน์ • ์ƒํ™ฉ์—์„œ๋Š” \2ํ•œ๋‹ค๋Š” ์˜๊ฒฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค',
861
+ r'๋Œ€์ฒด๋กœ \1ํ•˜์ง€๋งŒ, ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋“ค์€ \2ํ•œ๋‹ค๊ณ  ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค',
862
+ r'\1ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค์ˆ˜ ์˜๊ฒฌ์ด์ง€๋งŒ, ์ „๋ฌธ๊ฐ€๋“ค์€ \2ํ•˜๋‹ค๊ณ  ์ง€์ ํ•ฉ๋‹ˆ๋‹ค'
863
+ ]),
864
+ (r'([๊ฐ€-ํžฃ\s]+)๋Š” ๋ฐ˜๋ฉด์— ([๊ฐ€-ํžฃ\s]+)๋Š”', [
865
+ r'\1๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ฒŒ๋„ \2๋Š”',
866
+ r'\1๋Š” ๊ฒƒ์ด ์ฃผ์š” ํ”ผ๋“œ๋ฐฑ์ž…๋‹ˆ๋‹ค. ํ•œํŽธ ๋‹ค๋ฅธ ์‚ฌ์šฉ ํ™˜๊ฒฝ์—์„œ๋Š” \2๋Š”',
867
+ r'\1๋Š” ๊ฒฝํ–ฅ์ด ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ธฐ๊ฐ„์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก \2๋Š”'
868
+ ])
869
+ ]
870
+
871
+ # ํŒจํ„ด ๋žœ๋ค ์ ์šฉ์„ ์œ„ํ•œ ์‹œ๋“œ ์„ค์ •
872
+ import random
873
+ random.seed(hash(blog_content[:100])) # ๋‚ด์šฉ ์ผ๋ถ€๋ฅผ ์‹œ๋“œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๊ด€์„ฑ ์œ ์ง€
874
+
875
+ # ํŒจํ„ด ์ ์šฉ
876
+ for pattern, replacements in opinion_patterns:
877
+ matches = re.findall(pattern, blog_content)
878
+ for match in matches:
879
+ replacement = random.choice(replacements)
880
+ blog_content = re.sub(pattern.replace(r'([๊ฐ€-ํžฃ\s]+)', re.escape(match)),
881
+ replacement.replace(r'\1', match),
882
+ blog_content, count=1)
883
+
884
+ for pattern, replacements in contrast_patterns:
885
+ for i in range(3): # ์ตœ๋Œ€ 3๋ฒˆ ์ ์šฉ
886
+ match = re.search(pattern, blog_content)
887
+ if match:
888
+ groups = match.groups()
889
+ if len(groups) == 2:
890
+ replacement = random.choice(replacements)
891
+ replacement = replacement.replace(r'\1', groups[0]).replace(r'\2', groups[1])
892
+ blog_content = re.sub(re.escape(match.group(0)), replacement, blog_content, count=1)
893
+
894
+ # ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ํŒจํ„ด ์ ์šฉ (๋งˆ์ง€๋ง‰์— ์ ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํŒจํ„ด๊ณผ ์ถฉ๋Œ ๋ฐฉ์ง€)
895
+ for pattern, replacement in user_group_patterns:
896
+ blog_content = re.sub(pattern, replacement, blog_content)
897
+
898
+ # 4. ๋ฐ์ดํ„ฐ์™€ ํ†ต๊ณ„ ํ‘œํ˜„ ์ถ”๊ฐ€ (์ €๋Š” ~ํ–ˆ์–ด์š” -> ์„ค๋ฌธ์กฐ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด ~% ์‚ฌ์šฉ์ž๊ฐ€...)
899
+ stats_patterns = [
900
+ (r'([๊ฐ€-ํžฃ\s]+)๊ฐ€ ์ข‹์•„์š”', r'์„ค๋ฌธ์— ์ฐธ์—ฌํ•œ ์‚ฌ์šฉ์ž์˜ ์•ฝ 65%๊ฐ€ \1๊ฐ€ ์ข‹๋‹ค๊ณ  ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค'),
901
+ (r'([๊ฐ€-ํžฃ\s]+)๊ฐ€ ํŽธ๋ฆฌํ•ด์š”', r'์‚ฌ์šฉ์ž ๋ฆฌ๋ทฐ ๋ถ„์„ ๊ฒฐ๊ณผ ์•ฝ 70%๊ฐ€ \1๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค'),
902
+ (r'([๊ฐ€-ํžฃ\s]+)๊ฐ€ ์•„์‰ฌ์›Œ์š”', r'์•ฝ 40%์˜ ์‚ฌ์šฉ์ž๊ฐ€ \1๊ฐ€ ์•„์‰ฝ๋‹ค๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค')
903
+ ]
904
+
905
+ for pattern, replacement in stats_patterns:
906
+ # ์ตœ๋Œ€ 3๋ฒˆ๋งŒ ์ ์šฉํ•˜์—ฌ ๊ณผ๋„ํ•œ ํ†ต๊ณ„ ํ‘œํ˜„ ๋ฐฉ์ง€
907
+ for i in range(3):
908
+ match = re.search(pattern, blog_content)
909
+ if match:
910
+ blog_content = re.sub(pattern.replace(r'([๊ฐ€-ํžฃ\s]+)', re.escape(match.group(1))),
911
+ replacement.replace(r'\1', match.group(1)),
912
+ blog_content, count=1)
913
+
914
+ # 5. "A vs B" ํŒจํ„ด ์ค„์ด๊ธฐ
915
+ vs_pattern = r'([๊ฐ€-ํžฃ\s]+) vs ([๊ฐ€-ํžฃ\s]+)'
916
+ vs_count = len(re.findall(vs_pattern, blog_content))
917
+
918
+ if vs_count > 2: # 3๊ฐœ ์ด์ƒ์ด๋ฉด ์ผ๋ถ€ ํŒจํ„ด ๋ณ€๊ฒฝ
919
+ replacements = [
920
+ r'\1๊ณผ \2์˜ ์ฐจ์ด์ ',
921
+ r'\1 ๋˜๋Š” \2์— ๋”ฐ๋ฅธ ํ‰๊ฐ€ ์ฐจ์ด',
922
+ r'\1์„ ์„ ํ˜ธํ•˜๋Š” ์ง‘๋‹จ๊ณผ \2๋ฅผ ์„ ํ˜ธํ•˜๋Š” ์ง‘๋‹จ'
923
+ ]
924
+
925
+ # vs ํŒจํ„ด ๋งค์นญ ๋ฐ ๋ณ€๊ฒฝ
926
+ matches = re.findall(vs_pattern, blog_content)
927
+ for i, match in enumerate(matches[2:]): # ์ฒ˜์Œ 2๊ฐœ๋Š” ์œ ์ง€ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋งŒ ๋ณ€๊ฒฝ
928
+ replacement = replacements[i % len(replacements)]
929
+ blog_content = re.sub(re.escape(f"{match[0]} vs {match[1]}"),
930
+ replacement.replace(r'\1', match[0]).replace(r'\2', match[1]),
931
+ blog_content, count=1)
932
+
933
+ # ๊ณผ์žฅ๋œ ํ‘œํ˜„ ์ •๋ฆฌ (๊ณตํ†ต ๋ถ€๋ถ„)
934
+ exaggerated_expressions = [
935
+ (r'ํ•„์ˆ˜์ ์ธ', r'์ค‘์š”ํ•œ'),
936
+ (r'ํ˜๋ช…์ ์ธ', r'์ค‘์š”ํ•œ'),
937
+ (r'๋†€๋ผ์šด', r'์ฃผ๋ชฉํ•  ๋งŒํ•œ'),
938
+ (r'๊ธฐ์ ์˜', r'ํšจ๊ณผ์ ์ธ'),
939
+ (r'์ตœ๊ณ ์˜', r'์ข‹์€'),
940
+ (r'์„ธ๊ณ„์ ์ธ', r'์œ ๋ช…ํ•œ'),
941
+ (r'์™„๋ฒฝํ•œ', r'์šฐ์ˆ˜ํ•œ'),
942
+ (r'๊ทน์ ์ธ', r'์ƒ๋‹นํ•œ'),
943
+ (r'๋ฌดํ•œํ•œ', r'๋งŽ์€'),
944
+ (r'์ ˆ๋Œ€์ ์ธ', r'์ƒ๋‹นํ•œ'),
945
+ (r'ํ˜์‹ ์ ์ธ', r'์ƒˆ๋กœ์šด'),
946
+ (r'ํ™˜์ƒ์ ์ธ', r'์ข‹์€'),
947
+ (r'๊ทผ๋ณธ์ ์ธ', r'๊ธฐ๋ณธ์ ์ธ'),
948
+ (r'ํš๊ธฐ์ ์ธ', r'์ค‘์š”ํ•œ'),
949
+ (r'์ „๋ก€์—†๋Š”', r'ํŠน๋ณ„ํ•œ'),
950
+ (r'์••๋„์ ์ธ', r'์ฃผ๋ชฉํ•  ๋งŒํ•œ'),
951
+ (r'ํ™ฉํ™€ํ•œ', r'์ข‹์€'),
952
+ (r'์ฒœ์ƒ์˜', r'์šฐ์ˆ˜ํ•œ'),
953
+ (r'๊ธฐ๊ฐ€ ๋ง‰ํžŒ', r'ํšจ๊ณผ์ ์ธ'),
954
+ (r'๋ํŒ์™•', r'์ตœ์ƒ์œ„'),
955
+ (r'๊ทธ ์ž์ฒด', r''),
956
+ (r'์ด .{1,10} ๊ทธ ์ž์ฒด์˜€์–ด์š”', r'์ด \1์˜€์–ด์š”'),
957
+ (r'๊ฐ€ .{1,10} ๊ทธ ์ž์ฒด์˜€์–ด์š”', r'๊ฐ€ \1์˜€์–ด์š”'),
958
+ (r'์••๋„์ ์ธ', r'์ค‘์š”ํ•œ'),
959
+ (r'์ฒœ๊ตญ', r'์ข‹์€ ๊ณณ'),
960
+ (r'ํ™ฉํ™€ํ–ˆ์–ด์š”', r'์ข‹์•˜์–ด์š”'),
961
+ (r'ํ™˜์ƒ์˜', r'์ข‹์€'),
962
+ (r'์ตœ์ ์˜', r'์ข‹์€'),
963
+ (r'์™„๋ฒฝํ•œ', r'์ข‹์€'),
964
+ (r'๊ผญ ๊ฐ€๋ด์•ผ ํ• ', r'์ถ”์ฒœํ•˜๋Š”'),
965
+ (r'๊ผญ ๋จน์–ด๋ด์•ผ ํ• ', r'์ถ”์ฒœํ•˜๋Š”'),
966
+ (r'๊ผญ ํ•ด๋ด์•ผ ํ• ', r'์ถ”์ฒœํ•˜๋Š”')
967
+ ]
968
+
969
+ for pattern, replacement in exaggerated_expressions:
970
+ blog_content = re.sub(pattern, replacement, blog_content, flags=re.IGNORECASE)
971
+
972
+ blog_content = re.sub(r'์ฐธ๊ณ ๊ธ€์— ๋”ฐ๋ฅด๋ฉด', r'์•Œ๋ ค์ง„ ๋ฐ”๋กœ๋Š”', blog_content)
973
+ blog_content = re.sub(r'์ฐธ๊ณ ๊ธ€', r'๊ด€๋ จ ์ •๋ณด', blog_content)
974
+
975
+ # ์ƒํ’ˆ ๋ฆฌ๋ทฐ ๊ด€๋ จ ํ‘œํ˜„ ์ •๋ฆฌ
976
+ product_specific_adjustments = [
977
+ (r'์‚ฌ์šฉํ•ด๋ณด์„ธ์š”', r'์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”'),
978
+ (r'๊ตฌ๋งคํ•ด๋ณด์„ธ์š”', r'๊ตฌ๋งคํ•ด ๋ณด์„ธ์š”'),
979
+ (r'๋น„๊ตํ•ด๋ณด์„ธ์š”', r'๋น„๊ตํ•ด ๋ณด์„ธ์š”'),
980
+ (r'ํ™•์ธํ•ด๋ณด์„ธ์š”', r'ํ™•์ธํ•ด ๋ณด์„ธ์š”'),
981
+ (r'์„ ํƒํ•ด๋ณด์„ธ๏ฟฝ๏ฟฝ๏ฟฝ', r'์„ ํƒํ•ด ๋ณด์„ธ์š”'),
982
+ (r'ํ…Œ์ŠคํŠธํ•ด๋ณด์„ธ์š”', r'ํ…Œ์ŠคํŠธํ•ด ๋ณด์„ธ์š”'),
983
+ (r'์†Œ๋น„์ž๋“ค์—๊ฒŒ (.*?)์„ ๊ฐ•๋ ฅ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค', r'์†Œ๋น„์ž๋“ค์—๊ฒŒ \1์„ ์ถ”์ฒœํ•ด์š”'),
984
+ (r'์†Œ๋น„์ž๋“ค์—๊ฒŒ (.*?)๋ฅผ ๊ฐ•๋ ฅ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค', r'์†Œ๋น„์ž๋“ค์—๊ฒŒ \1๋ฅผ ์ถ”์ฒœํ•ด์š”'),
985
+ (r'์†Œ๋น„์ž๋“ค์—๊ฒŒ (.*?)์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค', r'์†Œ๋น„์ž๋“ค์—๊ฒŒ \1์„ ์ถ”์ฒœํ•ด์š”'),
986
+ (r'์†Œ๋น„์ž๋“ค์—๊ฒŒ (.*?)๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค', r'์†Œ๋น„์ž๋“ค์—๊ฒŒ \1๋ฅผ ์ถ”์ฒœํ•ด์š”'),
987
+ (r'์†Œ๋น„์ž์—๊ฒŒ (.*?)์„ ๊ฐ•๋ ฅ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค', r'์†Œ๋น„์ž์—๊ฒŒ \1์„ ์ถ”์ฒœํ•ด์š”'),
988
+ (r'์†Œ๋น„์ž์—๊ฒŒ (.*?)๋ฅผ ๊ฐ•๋ ฅ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค', r'์†Œ๋น„์ž์—๊ฒŒ \1๋ฅผ ์ถ”์ฒœํ•ด์š”')
989
+ ]
990
+
991
+ for pattern, replacement in product_specific_adjustments:
992
+ blog_content = re.sub(pattern, replacement, blog_content)
993
+
994
+ return blog_content
995
+ except Exception as e:
996
+ logging.error(f"๋ธ”๋กœ๊ทธ ๊ธ€ ํ›„์ฒ˜๋ฆฌ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}")
997
+ return blog_content
998
+
999
+ def generate_outline(category, style, references1, references2, references3):
1000
+ """์•„์›ƒ๋ผ์ธ ์ƒ์„ฑ ํ•จ์ˆ˜"""
1001
+ try:
1002
+ category_prompt = get_category_outline_prompt(category)
1003
+ style_prompt = get_style_prompt(style)
1004
+
1005
+ # ์ฐธ๊ณ ๊ธ€ ์ •๋ณด ์ค€๋น„
1006
+ references = [
1007
+ references1.strip() if references1.strip() else "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ",
1008
+ references2.strip() if references2.strip() else "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ",
1009
+ references3.strip() if references3.strip() else "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ"
1010
+ ]
1011
+
1012
+ # ์˜๋ฏธ ์žˆ๋Š” ์ฐธ๊ณ ๊ธ€๋งŒ ํ•„ํ„ฐ๋ง
1013
+ meaningful_refs = [ref for ref in references if ref != "์ฐธ๊ณ  ์ž๋ฃŒ ์—†์Œ"]
1014
+
1015
+ if not meaningful_refs:
1016
+ return "์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."
1017
+
1018
+ outline_prompt = f"""
1019
+ [์ƒํ’ˆ๋ฆฌ๋ทฐ ๋ธ”๋กœ๊ทธ ์•„์›ƒ๋ผ์ธ ์ƒ์„ฑ ์š”์ฒญ]
1020
+ ์นดํ…Œ๊ณ ๋ฆฌ: {category}
1021
+ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ: {style}
1022
+ ์ฐธ๊ณ ๊ธ€:
1023
+ {references[0]}
1024
+ {references[1] if len(meaningful_refs) > 1 else ""}
1025
+ {references[2] if len(meaningful_refs) > 2 else ""}
1026
+ {category_prompt}
1027
+ {style_prompt}
1028
+ ์•„์›ƒ๋ผ์ธ ์ƒ์„ฑ ์‹œ ์ถ”๊ฐ€ ์ง€์นจ:
1029
+ 1. ์ฐธ๊ณ ๊ธ€์˜ ํ•ต์‹ฌ ์ฃผ์ œ์™€ ๊ฐ€์น˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๋ผ.
1030
+ 2. ๊ฐ ์†Œ์ฃผ์ œ๋Š” 20์ž ์ด๋‚ด๋กœ ๋ช…ํ™•ํ•˜๊ณ  ๋งค๋ ฅ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ.
1031
+ 3. ์ „์ฒด ์•„์›ƒ๋ผ์ธ์ด ๋…ผ๋ฆฌ์  ํ๋ฆ„๊ณผ ์ผ๊ด€์„ฑ์„ ๊ฐ€์ง€๋„๋ก ๊ตฌ์„ฑํ•˜๋ผ.
1032
+ 4. ๋…์ž์˜ ๊ด€์‹ฌ๊ณผ ํ˜ธ๊ธฐ์‹ฌ์„ ์œ ๋ฐœํ•˜๋Š” ์†Œ์ฃผ์ œ๋ฅผ ์„ค๊ณ„ํ•˜๋ผ.
1033
+ 5. ์†Œ๋น„์ž์˜ ์‹ค์งˆ์ ์ธ ํ•„์š”์™€ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ฐ˜์˜ํ•œ ์†Œ์ฃผ์ œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ผ.
1034
+ 6. ์†Œ์ฃผ์ œ๋งŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ถœ๋ ฅํ•˜๊ณ  ์„ค๋ช…์€ ํฌํ•จํ•˜์ง€ ๋ง๋ผ.
1035
+ 7. ๊ฐ ์†Œ์ฃผ์ œ๋Š” ์ฐธ๊ณ ๊ธ€์˜ ๋‚ด์šฉ์— ๋”ฐ๋ผ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์„ฑํ•˜๋˜, ๋„์ž…๋ถ€์™€ ๊ฒฐ๋ก ์€ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•˜๋ผ.
1036
+ 8. ๋ณธ๋ก ์˜ ์ฃผ์ œ๋Š” ์ฐธ๊ณ ๊ธ€์˜ ๋‚ด์šฉ์„ ๋ฉด๋ฐ€ํžˆ ๋ถ„์„ํ•˜์—ฌ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ฃผ์ œ๋กœ ๊ตฌ์„ฑํ•˜๋ผ.
1037
+ 9. ๋ฐ˜๋“œ์‹œ ์ด 7๊ฐœ์˜ ์„น์…˜(๋„์ž…๋ถ€ 1๊ฐœ, ๋ณธ๋ก  5๊ฐœ, ๊ฒฐ๋ก  1๊ฐœ)์„ ๊ตฌ์„ฑํ•˜๋ผ.
1038
+ 10. ์ „์ฒด์ ์œผ๋กœ ์ƒํ’ˆ์˜ ์ฃผ์š” ํŠน์ง•, ๊ธฐ๋Šฅ, ์žฅ๋‹จ์ , ์‚ฌ์šฉ ๊ฒฝํ—˜ ๋“ฑ์„ ํฌ๊ด„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด๋ผ.
1039
+ """
1040
+
1041
+ # Gemini API ํ˜ธ์ถœ
1042
+ outline_result = call_gemini_api(outline_prompt, temperature=0.7)
1043
+
1044
+ # ๊ฒฐ๊ณผ ํ›„์ฒ˜๋ฆฌ (๋ถˆํ•„์š”ํ•œ ํ˜•์‹ ์ œ๊ฑฐ)
1045
+ outline_result = re.sub(r'^\s*[-*]\s+', '', outline_result, flags=re.MULTILINE)
1046
+ outline_result = re.sub(r'^\s*\d+\.\s+', '', outline_result, flags=re.MULTILINE)
1047
+
1048
+ return outline_result
1049
+
1050
+ except Exception as e:
1051
+ logging.error(f"์•„์›ƒ๋ผ์ธ ์ƒ์„ฑ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}")
1052
+ return f"์•„์›ƒ๋ผ์ธ ์ƒ์„ฑ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
1053
+
1054
+ def call_gemini_api(prompt, temperature=TEMPERATURE, top_p=TOP_P):
1055
+ """Gemini API ํ˜ธ์ถœ ํ•จ์ˆ˜"""
1056
+ try:
1057
+ logging.info("Gemini API ํ˜ธ์ถœ ์‹œ์ž‘")
1058
+ response = client.models.generate_content(
1059
+ model="gemini-2.0-flash",
1060
+ contents=[prompt],
1061
+ config=types.GenerateContentConfig(
1062
+ max_output_tokens=MAX_TOKENS,
1063
+ temperature=temperature,
1064
+ top_p=top_p
1065
+ )
1066
+ )
1067
+ logging.info("Gemini API ํ˜ธ์ถœ ์™„๋ฃŒ")
1068
+ return response.text.strip()
1069
+ except Exception as e:
1070
+ logging.error(f"Gemini API ํ˜ธ์ถœ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}")
1071
+ return f"API ํ˜ธ์ถœ ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}"
1072
+
1073
+ def format_filename(text):
1074
+ text = re.sub(r'[^\w\s-]', '', text)
1075
+ return text[:50].strip()
1076
+
1077
+
1078
+
1079
+ # API ํ•จ์ˆ˜๋“ค
1080
+ def generate_outline_3(category, style, ref1, ref2, ref3):
1081
+ return generate_outline(category, style, ref1, ref2, ref3)
1082
+
1083
+ def generate_blog_post_3(category, style, ref1, ref2, ref3, outline):
1084
+ result = generate_blog_post(category, style, outline, ref1, ref2, ref3)
1085
+ return result[0] # ํŠœํ”Œ์—์„œ HTML๋งŒ ๋ฐ˜ํ™˜