Create product_review_blog.py
Browse files- 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๋ง ๋ฐํ
|