AIRider commited on
Commit
1a4221b
โ€ข
1 Parent(s): b66742b

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +728 -0
  2. requirements.txt +5 -0
app.py ADDED
@@ -0,0 +1,728 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import random
3
+ import os
4
+ import re
5
+ from huggingface_hub import InferenceClient
6
+ from youtube_transcript_api import YouTubeTranscriptApi, NoTranscriptFound
7
+ from fpdf import FPDF
8
+ from fpdf.enums import XPos, YPos
9
+ from datetime import datetime
10
+
11
+ # ํด๋ผ์ด์–ธํŠธ ์ƒ์„ฑ ํ•จ์ˆ˜
12
+ def create_client(model_name):
13
+ return InferenceClient(model_name, token=os.getenv("HF_TOKEN"))
14
+
15
+ client = create_client("CohereForAI/c4ai-command-r-plus")
16
+
17
+ # API ํ˜ธ์ถœ ํ•จ์ˆ˜
18
+ def call_api(content, system_message, max_tokens, temperature, top_p):
19
+ messages = [{"role": "system", "content": system_message}, {"role": "user", "content": content}]
20
+ random_seed = random.randint(0, 1000000)
21
+ response = client.chat_completion(messages=messages, max_tokens=max_tokens, temperature=temperature, top_p=top_p, seed=random_seed)
22
+ return response.choices[0].message.content
23
+
24
+ # ์ •๋ณด ๋ถ„์„ ํ•จ์ˆ˜
25
+ def analyze_info(category, style, transcripts):
26
+ transcript_list = transcripts.split("\n\n---\n\n")
27
+ analyzed_content = f"์„ ํƒํ•œ ์นดํ…Œ๊ณ ๋ฆฌ: {category}\n์„ ํƒํ•œ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ: {style}\n\n"
28
+ for i, transcript in enumerate(transcript_list, 1):
29
+ analyzed_content += f"์œ ํŠœ๋ธŒ ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ {i}:\n{transcript}\n\n"
30
+ return analyzed_content
31
+
32
+ # ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ์ƒ์„ฑ ํ•จ์ˆ˜
33
+ def generate_blog_post(category, style, transcripts, category_prompt, style_prompt, max_tokens, temperature, top_p):
34
+ full_content = analyze_info(category, style, transcripts)
35
+ combined_prompt = f"{category_prompt}\n\n{style_prompt}\n\n{full_content}"
36
+ modified_text = call_api(combined_prompt, "", max_tokens, temperature, top_p)
37
+ return modified_text.replace('\n', '\n\n')
38
+
39
+ # ์œ ํŠœ๋ธŒ ๋Œ€๋ณธ ์š”์•ฝ ํ•จ์ˆ˜
40
+ def summarize_transcript(transcripts, system_message, max_tokens, temperature, top_p):
41
+ summary = call_api(transcripts, system_message, max_tokens, temperature, top_p)
42
+ return summary
43
+
44
+ # ์œ ํŠœ๋ธŒ ๋น„๋””์˜ค ID ์ถ”์ถœ ํ•จ์ˆ˜
45
+ def get_video_id(youtube_url):
46
+ video_id_match = re.search(r"(?<=v=)[^#&?]*", youtube_url) or re.search(r"(?<=youtu.be/)[^#&?]*", youtube_url)
47
+ return video_id_match.group(0) if video_id_match else None
48
+
49
+ # ์œ ํŠœ๋ธŒ ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ ์ถ”์ถœ ํ•จ์ˆ˜
50
+ def get_transcript(youtube_url):
51
+ video_id = get_video_id(youtube_url)
52
+ if not video_id:
53
+ return "Invalid YouTube URL. Please enter a valid URL."
54
+
55
+ language_order = ['ko', 'en', 'ja', 'zh-Hans', 'pt', 'es', 'it', 'fr', 'de', 'ru']
56
+ for lang in language_order:
57
+ try:
58
+ transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=[lang])
59
+ return f"Transcript in {lang}:\n\n{' '.join([entry['text'] for entry in transcript])}"
60
+ except NoTranscriptFound:
61
+ continue
62
+ except Exception as e:
63
+ return f"Error: {str(e)}"
64
+ return "No transcript available in the specified languages."
65
+
66
+ # ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ”„๋กฌํ”„ํŠธ ํ•จ์ˆ˜
67
+ def get_blog_post_prompt(category):
68
+ if category == "์ผ๋ฐ˜ํ˜•":
69
+ return """
70
+ #์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ทœ์น™(์ผ๋ฐ˜ํ˜•_v4)
71
+ ##[๊ธฐ๋ณธ ๊ทœ์น™]
72
+ 1.ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑํ•˜๋˜, ์‰ฝ๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ํ‘œํ˜„ ์‚ฌ์šฉ
73
+ 2.์—ฌ๋Ÿฌ ์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์˜ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ผ๊ด€๋œ ๋ธ”๋กœ๊ทธ ๊ธ€๋กœ ์žฌ๊ตฌ์„ฑ
74
+ 3. ๊ฐ ์„น์…˜์€ ์ตœ์†Œ 400์ž ์ด์ƒ ์ž‘์„ฑํ•˜๊ณ  ์ตœ์ข… ๊ธ€์˜ ๊ธธ์ด๋Š” 3000์ž ์ด์ƒ์œผ๋กœ ์ž‘์„ฑ
75
+ 4. ์ถ”์ฒœ ์ œ๋ชฉ 3๊ฐ€์ง€, ๋„์ž…๋ถ€, ๋ณธ๋ก (์†Œ์ฃผ์ œ ํฌํ•จ), ๊ฒฐ๋ก ์˜ ๊ตฌ์กฐ๋กœ ์ž‘์„ฑํ•  ๊ฒƒ(๋‹ค๋ฅธ ๊ตฌ์กฐ ์ถœ๋ ฅ๊ธˆ์ง€)
76
+ 5. ์ฃผ์ œ์— ๋งž๋Š” ๋…์ฐฝ์ ์ธ ๊ฐ€์ƒ ํ•„์ž ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•  ๊ฒƒ(ํ•„๋ช… ๋ณ„๋„ ์ถœ๋ ฅ ๊ธˆ์ง€)
77
+ 6. ํฌ์ŠคํŒ… ์Šคํƒ€์ผ์— ๋งž๊ฒŒ ๋งํˆฌ, ์–ดํˆฌ, ์–ดํœ˜๋ฅผ ์กฐ์ •ํ•  ๊ฒƒ
78
+
79
+ ##[ํฌ์ŠคํŒ… ๊ตฌ์กฐ]
80
+ ###[์ถ”์ฒœ ์ œ๋ชฉ]
81
+ 1. ํ†ตํ•ฉ๋œ ์ฃผ์ œ๋ฅผ ๋ฐ˜์˜ํ•˜๊ณ  ๋…์ž์˜ ํฅ๋ฏธ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์ œ๋ชฉ 3๊ฐ€์ง€ ์ œ์‹œ
82
+
83
+ ###[๋„์ž…๋ถ€]
84
+ 1. ์—ฌ๋Ÿฌ ์˜์ƒ์˜ ๊ณตํ†ต ์ฃผ์ œ๋‚˜ ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๊ฐœ
85
+ 2. ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋„๋Š” ์š”์†Œ(์งˆ๋ฌธ, ํฅ๋ฏธ๋กœ์šด ์‚ฌ์‹ค, ํ†ต๊ณ„, ๊ณต๊ฐ๋Œ€ ํ˜•์„ฑ ๋“ฑ)๋กœ ์‹œ์ž‘
86
+ 3. ๊ธ€์—์„œ ๋‹ค๋ฃฐ ์ฃผ์š” ๋‚ด์šฉ์„ ๊ฐ„๋žตํžˆ ์†Œ๊ฐœ
87
+
88
+ ###[๋ณธ๋ก ]
89
+ 1. ์ฃผ์ œ๋ณ„ ํ†ตํ•ฉ ๋ถ„์„
90
+ - ๊ณตํ†ต ์ฃผ์ œ๋‚˜ ์—ฐ๊ด€์„ฑ ์žˆ๋Š” ๋‚ด์šฉ์„ ์ค‘์‹ฌ์œผ๋กœ ์„น์…˜ ๊ตฌ์„ฑ
91
+ - ๊ฐ ์˜์ƒ์˜ ๊ด€์ ์ด๋‚˜ ์ •๋ณด๋ฅผ ๋น„๊ต/๋Œ€์กฐํ•˜๋ฉฐ ์ข…ํ•ฉ
92
+ - ์„น์…˜ ๊ฐ„ ์ž์—ฐ์Šค๋Ÿฌ์šด ์—ฐ๊ฒฐ๊ณผ ํ๋ฆ„ ์œ ์ง€
93
+ 2. ๋…ํŠนํ•œ ์ธ์‚ฌ์ดํŠธ ๊ฐ•์กฐ
94
+ - ๊ฐ ์˜์ƒ์—์„œ ์ œ์‹œ๋œ ๊ณ ์œ ํ•œ ๊ด€์ ์ด๋‚˜ ์ •๋ณด ๊ฐ•์กฐ
95
+ - ํ•„์š”์‹œ ๋ฐฐ๊ฒฝ ์ •๋ณด, ์˜ˆ์‹œ, ๊ด€๋ จ ํ†ต๊ณ„ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‚ด์šฉ ๋ณด๊ฐ•
96
+ 3. ๋ฐ์ดํ„ฐ ๋ฐ ์˜ˆ์‹œ ํ†ตํ•ฉ
97
+ - ์—ฌ๋Ÿฌ ๋Œ€๋ณธ์—์„œ ์ œ์‹œ๋œ ๋ฐ์ดํ„ฐ๋‚˜ ์˜ˆ์‹œ๋ฅผ ์ข…ํ•ฉํ•˜์—ฌ ์ œ์‹œ
98
+ - ๋…์ž๊ฐ€ ๊ณต๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด๋‚˜ ์‚ฌ๋ก€ ํฌํ•จ
99
+ 4. ์‹œ๊ฐ„์  ํ๋ฆ„ ๋˜๋Š” ๋ฐœ์ „ ๊ณผ์ • ๋ฐ˜์˜
100
+ - ์ฃผ์ œ์— ๊ด€ํ•œ ์‹œ๊ฐ„์  ๋ณ€ํ™”๋‚˜ ๋ฐœ์ „ ๊ณผ์ •์ด ๏ฟฝ๏ฟฝ๏ฟฝ๋‹ค๋ฉด ์ด๋ฅผ ์„ค๋ช…
101
+
102
+ ###[๊ฒฐ๋ก ]
103
+ 1. ํ†ตํ•ฉ๋œ ๋‚ด์šฉ์˜ ํ•ต์‹ฌ ํฌ์ธํŠธ ์š”์•ฝ
104
+ 2. ๋…์ž์—๊ฒŒ ๊ด€๋ จ ํ–‰๋™์ด๋‚˜ ์ƒ๊ฐ์˜ ๋ณ€ํ™” ์œ ๋„
105
+ 3. ์ถ”๊ฐ€ ํƒ๊ตฌ๊ฐ€ ํ•„์š”ํ•œ ์ฃผ์ œ๋‚˜ ํ–ฅํ›„ ์ „๋ง ์ œ์‹œ
106
+
107
+ ##[์ตœ์ ํ™” ์ „๋žต]
108
+ 1. SEO ์ตœ์ ํ™”
109
+ - ํ†ตํ•ฉ๋œ ์ฃผ์ œ์™€ ๊ด€๋ จ๋œ ์ฃผ์š” ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๋ชฉ, ์†Œ์ œ๋ชฉ, ๋ณธ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํฌํ•จ
110
+ - ๊ฒ€์ƒ‰ ์˜๋„์— ๋ถ€ํ•ฉํ•˜๋Š” ํฌ๊ด„์ ์ธ ๋‚ด์šฉ ๊ตฌ์„ฑ
111
+ 2. ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
112
+ - ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๋ฌธ์žฅ ์‚ฌ์šฉ
113
+ - ์ ์ ˆํ•œ ๋‹จ๋ฝ ๊ตฌ๋ถ„๊ณผ ์—ฌ๋ฐฑ ํ™œ์šฉ
114
+ 3. ๋…์ž ์ฐธ์—ฌ ์œ ๋„
115
+ - ๋…์ž์˜ ๊ฒฝํ—˜์ด๋‚˜ ์˜๊ฒฌ์„ ๋ฌป๋Š” ์งˆ๋ฌธ ํฌํ•จ
116
+ - ๊ด€๋ จ ์ •๋ณด๋‚˜ ์ถ”๊ฐ€ ์ž๋ฃŒ์— ๋Œ€ํ•œ ์•ˆ๋‚ด ์ œ๊ณต
117
+
118
+ ##[๊ต์ • ๋ฐ ํŽธ์ง‘]
119
+ 1. ๋งž์ถค๋ฒ•, ๋ฌธ๋ฒ•, ์–ดํœ˜ ์‚ฌ์šฉ์˜ ์ •ํ™•์„ฑ ํ™•์ธ
120
+ 2. ๋ฌธ์ฒด์™€ ํ†ค์˜ ์ผ๊ด€์„ฑ ์œ ์ง€
121
+ 3. ์ „์ฒด ๊ธ€์˜ ๋…ผ๋ฆฌ์  ํ๋ฆ„๊ณผ ๊ตฌ์กฐ ์ ๊ฒ€
122
+ 4. 'ํ•„์ž'๋ผ๋Š” ํ‘œํ˜„ ์ œ์™ธ
123
+ 5. ์œ ํŠœ๋ธŒ ๊ด€๋ จ ํ‘œํ˜„ ์ œ๊ฑฐ ๋ฐ ๋ธ”๋กœ๊ทธ ํ˜•์‹์— ๋งž๊ฒŒ ์กฐ์ •
124
+ 6. ์œ ํŠœ๋ธŒ ํŠน์ • ์šฉ์–ด(์˜ˆ: '๊ตฌ๋…', '์ข‹์•„์š”', '์•Œ๋ฆผ', '๋‹ค์Œ ์˜์ƒ' ๋“ฑ) ์‚ฌ์šฉ ๊ธˆ์ง€
125
+ 7. '์œ ํŠœ๋ฒ„', 'YouTuber' ๋“ฑ์˜ ํ‘œํ˜„์„ '์ œ์ž‘์ž' ๋˜๋Š” '์ง„ํ–‰์ž' ๊ฐ™์€ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ๋Œ€์ฒด
126
+ 8. ์ฑ„๋„๋ช…, ์ œ์ž‘์ž ์‹ค๋ช… ๋“ฑ ๊ฐœ์ธ ์ •๋ณด ์ œ์™ธ
127
+
128
+ ##[์ฃผ์˜์‚ฌํ•ญ]
129
+ 1. ๋Œ€๋ณธ์˜ ์ง์ ‘์ ์ธ ์ธ์šฉ ๊ธˆ์ง€, ๋‚ด์šฉ์„ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์ž‘์„ฑ
130
+ 2. ์ƒ์ถฉ๋˜๋Š” ์ •๋ณด๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊ณต์ •ํ•˜๊ฒŒ ๋‹ค๋ฃจ๊ณ  ๊ฐ€๋Šฅํ•œ ์„ค๋ช… ์ œ์‹œ
131
+ """
132
+ elif category == "์ •๋ณด์„ฑ":
133
+ return """
134
+ #์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ทœ์น™(์ •๋ณด์„ฑ_v4)
135
+ ##[๊ธฐ๋ณธ ์›์น™]
136
+ 1. ๋ฐ˜๋“œ์‹œ ํ•œ๊ตญ์–ด(ํ•œ๊ธ€)๋กœ ์ž‘์„ฑํ•˜๋ผ
137
+ 2. ์—ฌ๋Ÿฌ ์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์˜ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ธ”๋กœ๊ทธ ๊ธ€๋กœ ์žฌ๊ตฌ์„ฑํ•˜๋ผ
138
+ 3. ์ตœ์ข… ๊ธ€์˜ ๊ธธ์ด๋Š” 3000-4000์ž ์‚ฌ์ด๋กœ ์ž‘์„ฑ
139
+ 4. ์ถ”์ฒœ์ œ๋ชฉ3๊ฐ€์ง€, ๋„์ž…๋ถ€, ๋ณธ๋ก , ๊ฒฐ๋ก ์˜ ๊ตฌ์กฐ๋กœ ์ž‘์„ฑ
140
+ 5. ๊ฐ๊ด€์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ†ค์œผ๋กœ ์ž‘์„ฑ
141
+ 6. ์—ฌ๋Ÿฌ ์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์˜ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ํฌ๊ด„์ ์ด๊ณ  ๋…์ฐฝ์ ์ธ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ž‘์„ฑ
142
+
143
+ ##[ํฌ์ŠคํŒ… ๊ตฌ์กฐ]
144
+ ###[์ถ”์ฒœ์ œ๋ชฉ]
145
+ 1. ์ฃผ์ œ๋ฅผ ๋ช…ํ™•ํžˆ ๋‚˜ํƒ€๋‚ด๊ณ  ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋Œ ์ˆ˜ ์žˆ๋Š” ์ œ๋ชฉ 3๊ฐ€์ง€๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ถœ๋ ฅํ•˜๋ผ
146
+ 2. ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋Œ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ผ(์˜ˆ: "์•Œ์•„๋‘๋ฉด ์œ ์šฉํ•œ ~", "์ „๋ฌธ๊ฐ€๊ฐ€ ์•Œ๋ ค์ฃผ๋Š” ~")
147
+
148
+ ##[๋„์ž…๋ถ€]
149
+ 1. ์ฃผ์ œ์˜ ์ค‘์š”์„ฑ๊ณผ ์ผ์ƒ์ƒํ™œ์—์„œ์˜ ๊ด€๋ จ์„ฑ ์„ค๋ช…
150
+ 2. ๋‹ค๋ฃฐ ์ฃผ์š” ๋‚ด์šฉ ๊ฐ„๋žตํžˆ ์†Œ๊ฐœ
151
+ 3. ๋…์ž๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์‹ค์šฉ์ ์ธ ์ •๋ณด๋‚˜ ์ด์  ์ œ์‹œ
152
+ 4. ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋„๋Š” ์š”์†Œ(์งˆ๋ฌธ, ํฅ๋ฏธ๋กœ์šด ์‚ฌ์‹ค, ํ†ต๊ณ„, ๊ณต๊ฐ๋Œ€ ํ˜•์„ฑ ๋“ฑ)๋กœ ์‹œ์ž‘
153
+
154
+ ###[๋ณธ๋ก ]
155
+ 1. ์ฃผ์ œ์— ๋”ฐ๋ผ 4~6๊ฐœ์˜ ์ฃผ์š” ์„น์…˜์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋ผ.
156
+ 2. ์ž‘์„ฑ๋œ ๊ธ€์ด 2500์ž ์ด์ƒ ๋˜๋„๋ก ์ž‘์„ฑํ•˜๋ผ
157
+ 3. ๊ฐ ์„น์…˜์€ ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ถ„ํ•˜๋ผ
158
+ 4. ์ •๋ณด์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ ๋‚ด์šฉ์˜ ๊นŠ์ด์™€ ์ˆœ์„œ ์กฐ์ •ํ•˜๋ผ
159
+ 5. ๊ฐ ์„น์…˜์€ ์ฃผ์ œ์˜ ํ•ต์‹ฌ ์ธก๋ฉด์„ ๋‹ค๋ฃจ๋„๋กํ•œ๋‹ค.
160
+
161
+ ###[๊ฒฐ๋ก ]
162
+ 1. ์ฃผ์š” ํฌ์ธํŠธ ์š”์•ฝ
163
+ 2. ๋…์ž์—๊ฒŒ ์‹ค์šฉ์ ์ธ ์กฐ์–ธ์ด๋‚˜ ํ–‰๋™ ์ง€์นจ ์ œ๊ณต
164
+ 3. ๋…์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ ๋„ํ•˜๋Š” ์งˆ๋ฌธ์ด๋‚˜ call-to-action ํฌํ•จ
165
+ 4. ์ฃผ์ œ์™€ ๊ด€๋ จ๋œ ํ–ฅํ›„ ์ „๋ง์ด๋‚˜ ์ถ”์„ธ ๊ฐ„๋‹จํžˆ ์–ธ๊ธ‰
166
+
167
+ ##[์ตœ์ ํ™” ์ „๋žต]
168
+ ###[SEO ์ตœ์ ํ™”]
169
+ 1. ์ฃผ์ œ์™€ ๊ด€๋ จ๋œ ํ‚ค์›Œ๋“œ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํฌํ•จ (ํ‚ค์›Œ๋“œ ๋ฐ€๋„ 2-3% ์œ ์ง€)
170
+ 2. ๊ฒ€์ƒ‰ ์˜๋„์— ๋ถ€ํ•ฉํ•˜๋Š” ํฌ๊ด„์ ์ธ ๋‚ด์šฉ ๊ตฌ์„ฑ
171
+
172
+ ###[๊ฐ€๋…์„ฑ ํ–ฅ์ƒ]
173
+ 1. ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ๊ณผ ๋‹จ๋ฝ ๊ตฌ๋ถ„ ์‚ฌ์šฉ
174
+ 2. ํ•„์š”์‹œ ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ๋‚˜ ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ ์‚ฌ์šฉ
175
+
176
+ ##[์ฃผ์˜์‚ฌํ•ญ]
177
+ 1. ์—ฌ๋Ÿฌ๊ฐœ์˜ ์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์ค‘ ํ•˜๋‚˜์— ์น˜์šฐ์นœ ๋‚ด์šฉ ๊ธˆ์ง€, ๊ฐ๊ด€์ ์ด๊ณ  ๊ณต์ •ํ•œ ์ •๋ณด ์ œ๊ณต
178
+ 2. ์ตœ์‹  ์ •๋ณด ์‚ฌ์šฉ, ์ž‘์„ฑ ์‹œ์  ๋ช…์‹œ
179
+ 3. ๋ณต์žกํ•œ ์ „๋ฌธ ์šฉ์–ด๋‚˜ ๊ฐœ๋…์€ ์ผ๋ฐ˜ ๋…์ž๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์‰ฝ๊ฒŒ ์„ค๋ช…
180
+ 4. ์œ ํŠœ๋ธŒ ๊ด€๋ จ ํ‘œํ˜„ ์ œ๊ฑฐ ๋ฐ ๋ธ”๋กœ๊ทธ ํ˜•์‹์— ๋งž๊ฒŒ ์กฐ์ •
181
+ 5. ์œ ํŠœ๋ธŒ ํŠน์ • ์šฉ์–ด(์˜ˆ: '๊ตฌ๋…', '์ข‹์•„์š”', '์•Œ๋ฆผ', '๋‹ค์Œ ์˜์ƒ' ๋“ฑ) ์‚ฌ์šฉ ๊ธˆ์ง€
182
+ 6. '์œ ํŠœ๋ฒ„', 'YouTuber' ๋“ฑ์˜ ํ‘œํ˜„์„ '์ œ์ž‘์ž' ๋˜๋Š” '์ง„ํ–‰์ž' ๊ฐ™์€ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ๋Œ€์ฒด
183
+ 7. ์ฑ„๋„๋ช…, ์ œ์ž‘์ž ์‹ค๋ช… ๋“ฑ ๊ฐœ์ธ ์ •๋ณด ์ œ์™ธ
184
+ """
185
+ elif category == "1๊ฐœ ์ƒํ’ˆ ์ถ”์ฒœํ˜•":
186
+ return """
187
+ #์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ทœ์น™(์ถ”์ฒœํ˜•_v4)
188
+ ##[๊ธฐ๋ณธ ๊ทœ์น™]
189
+ 1. ํ•œ๊ตญ๏ฟฝ๏ฟฝ๋กœ ์ž‘์„ฑํ•˜๋˜, ์‰ฝ๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ํ‘œํ˜„ ์‚ฌ์šฉ
190
+ 2. ์—ฌ๋Ÿฌ ์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์˜ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ƒํ’ˆ์— ์ง‘์ค‘๋œ ์ถ”์ฒœ ๋ธ”๋กœ๊ทธ ๊ธ€๋กœ ์žฌ๊ตฌ์„ฑ
191
+ 3. ์ตœ์ข… ๊ธ€์˜ ๊ธธ์ด๋Š” 3000์ž ์ด์ƒ์œผ๋กœ ์ž‘์„ฑ
192
+ 4. ์ถ”์ฒœ ์ œ๋ชฉ, ๋„์ž…๋ถ€, ๋ณธ๋ก , ๊ฒฐ๋ก ์˜ ๊ตฌ์กฐ๋กœ ์ž‘์„ฑ
193
+ 5. ์ฃผ์ œ์— ๋งž๋Š” ๋…์ฐฝ์ ์ธ ๊ฐ€์ƒ ํ•„์ž ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ
194
+ 6. ์ „๋ฌธ์„ฑ๊ณผ ๊ฐ๊ด€์„ฑ์„ ๊ฐ–์ถ˜ ํ†ค์œผ๋กœ ์ž‘์„ฑ
195
+
196
+ ##[ํฌ์ŠคํŒ… ๊ตฌ์กฐ]
197
+ ###[์ถ”์ฒœ ์ œ๋ชฉ]
198
+ 1. ์ œํ’ˆ์˜ ํ•ต์‹ฌ ์žฅ์ ์ด๋‚˜ ํŠน์ง•์„ ๊ฐ•์กฐํ•˜๋Š” ์ œ๋ชฉ
199
+ 2. ๋…์ž์˜ ํ˜ธ๊ธฐ์‹ฌ์„ ์ž๊ทนํ•˜๋Š” ์งˆ๋ฌธํ˜• ์ œ๋ชฉ
200
+ 3. ์ œํ’ˆ์˜ ํ˜์‹ ์„ฑ์ด๋‚˜ ์ฐจ๋ณ„์ ์„ ๋ถ€๊ฐ์‹œํ‚ค๋Š” ์ œ๋ชฉ
201
+ 4. ์ถ”์ฒœ์ œ๋ชฉ 3๊ฐ€์ง€๋งŒ ์ถœ๋ ฅํ•˜๋ผ(๋‹ค๋ฅธ๊ตฌ์กฐ, ์„ค๋ช… ์ถœ๋ ฅ๊ธˆ์ง€)
202
+
203
+ ###[๋„์ž…๋ถ€]
204
+ 1. ์ œํ’ˆ์˜ ์ฃผ์š” ํŠน์ง•๊ณผ ์‹œ์žฅ์—์„œ์˜ ์œ„์น˜ ์†Œ๊ฐœ
205
+ 2. ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋„๋Š” ์š”์†Œ(๋ฌธ์ œ ์ œ๊ธฐ, ํฅ๋ฏธ๋กœ์šด ์‚ฌ์‹ค ๋“ฑ) ํฌํ•จ
206
+ 3. ๋ฆฌ๋ทฐ์˜ ์ฃผ์š” ๋‚ด์šฉ ๊ฐ„๋žตํžˆ ์˜ˆ๊ณ 
207
+
208
+ ###[๋ณธ๋ก ]
209
+ - ๋‹ค์Œ ์š”์†Œ๋“ค์„ ์ฃผ์ œ์— ๋งž๊ฒŒ ์„ ํƒ์ ์œผ๋กœ ํฌํ•จํ•˜๊ณ  ๋งž๋Š” ์ฃผ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ์ ํ•ฉํ•œ ์ฃผ์ œ๋ฅผ ์ƒ์„ฑํ•˜๋ผ
210
+ - ๋‹จ, ์ถฉ๋ถ„ํ•œ ์–‘(3000-4000์ž)์˜ ๊ธ€์ด ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ๋„๋ก ์„น์…˜์„ ์„ค์ •ํ•˜๋ผ.
211
+ - ๊ฐ ์„น์…˜์€ ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ถ„ํ•˜๊ณ , ์ •๋ณด์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ ๋‚ด์šฉ์˜ ๊นŠ์ด์™€ ์ˆœ์„œ, ์†Œ์ œ๋ชฉ ์กฐ์ •ํ•˜๋ผ
212
+ 1. ์ œํ’ˆ ๊ฐœ์š”
213
+ - ๊ธฐ๋ณธ ์ŠคํŽ™ ๋ฐ ์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…
214
+ - ๊ฒฝ์Ÿ ์ œํ’ˆ๊ณผ์˜ ์ฐจ๋ณ„์  ๊ฐ•์กฐ
215
+
216
+ 2. ๋””์ž์ธ ๋ฐ build quality
217
+ - ์™ธ๊ด€ ๋””์ž์ธ ๋ฐ ๋งˆ๊ฐ ํ’ˆ์งˆ ํ‰๊ฐ€
218
+ - ๋ฌด๊ฒŒ, ํฌ๊ธฐ ๋“ฑ ํœด๋Œ€์„ฑ ๊ด€๋ จ ์ •๋ณด
219
+
220
+ 3. ์„ฑ๋Šฅ ๋ถ„์„
221
+ - ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์ƒ์„ธ ์„ค๋ช… (ํ•„์š”์‹œ ๊ทธ๋ž˜ํ”„๋‚˜ ํ‘œ ํ™œ์šฉ)
222
+ - ์‹ค์ œ ์‚ฌ์šฉ ๊ฒฝํ—˜ ๊ธฐ๋ฐ˜์˜ ์„ฑ๋Šฅ ํ‰๊ฐ€
223
+ - ๋ฐœ์—ด ๋ฐ ์†Œ์Œ ๊ด€๋ จ ์ •๋ณด
224
+
225
+ 4. ๋ฐฐํ„ฐ๋ฆฌ ์„ฑ๋Šฅ
226
+ - ๋ฐฐํ„ฐ๋ฆฌ ์ง€์† ์‹œ๊ฐ„ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ
227
+ - ์ถฉ์ „ ์†๋„ ๋ฐ ๋ฐฐํ„ฐ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์„ค๋ช…
228
+
229
+ 5. ํŠน์ˆ˜ ๊ธฐ๋Šฅ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด
230
+ - AI ๊ธฐ๋Šฅ ๋“ฑ ์ œํ’ˆ๋งŒ์˜ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ ์ƒ์„ธ ์„ค๋ช…
231
+ - ์ œ์กฐ์‚ฌ ์ „์šฉ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ ์šฉ์„ฑ ํ‰๊ฐ€
232
+
233
+ 6. ์‚ฌ์šฉ ๊ฒฝํ—˜
234
+ - ํ‚ค๋ณด๋“œ, ํŠธ๋ž™ํŒจ๋“œ, ๋””์Šคํ”Œ๋ ˆ์ด ๋“ฑ ์‚ฌ์šฉ๊ฐ ํ‰๊ฐ€
235
+ - ์ผ์ƒ์ ์ธ ์ž‘์—… ๋ฐ ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ์—์„œ์˜ ์‚ฌ์šฉ ๊ฒฝํ—˜ ๊ณต์œ 
236
+
237
+ 7. ํ˜ธํ™˜์„ฑ ๋ฐ ํ™•์žฅ์„ฑ
238
+ - ์†Œํ”„ํŠธ์›จ์–ด ํ˜ธํ™˜์„ฑ ์ด์Šˆ ์„ค๋ช…
239
+ - ํฌํŠธ ๋ฐ ์—ฐ๊ฒฐ์„ฑ ๊ด€๋ จ ์ •๋ณด
240
+
241
+ 8. ๊ฐ€๊ฒฉ ๋ฐ ๊ฒฝ์Ÿ๋ ฅ
242
+ - ๊ฐ€๊ฒฉ๋Œ€ ๋น„ ์„ฑ๋Šฅ ํ‰๊ฐ€
243
+ - ์œ ์‚ฌ ์ œํ’ˆ๊ณผ์˜ ๋น„๊ต ๋ถ„์„
244
+
245
+ ###[๊ฒฐ๋ก ]
246
+ 1. ์ œํ’ˆ์˜ ํ•ต์‹ฌ ์žฅ๋‹จ์  ์š”์•ฝ
247
+ 2. ์ ํ•ฉํ•œ ์‚ฌ์šฉ์ž ์œ ํ˜• ์ œ์‹œ
248
+ 3. ์ตœ์ข… ์ถ”์ฒœ ์˜๊ฒฌ ๋ฐ ๊ตฌ๋งค ์กฐ์–ธ
249
+
250
+ ##[์ตœ์ ํ™” ์ „๋žต]
251
+ 1. SEO ์ตœ์ ํ™”
252
+ - ์ œํ’ˆ๋ช…, ์ฃผ์š” ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ ๊ด€๋ จ ํ‚ค์›Œ๋“œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํฌํ•จ
253
+ - ๊ฒ€์ƒ‰ ์˜๋„์— ๋ถ€ํ•ฉํ•˜๋Š” ํฌ๊ด„์ ์ธ ๋‚ด์šฉ ๊ตฌ์„ฑ
254
+ 2. ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
255
+ - ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ ์‚ฌ์šฉ์œผ๋กœ ์ •๋ณด ๊ตฌ๋ถ„
256
+ - ์ค‘์š” ์ •๋ณด๋Š” ๊ตต์€ ๊ธ€์”จ๋‚˜ ๊ธฐ์šธ์ž„๊ผด๋กœ ๊ฐ•์กฐ
257
+ - ํ•„์š”์‹œ ํ‘œ๋‚˜ ์ฐจํŠธ ํ™œ์šฉํ•˜์—ฌ ์ •๋ณด ์‹œ๊ฐํ™”
258
+ 3. ๋…์ž ์ฐธ์—ฌ ์œ ๋„
259
+ - ์ œํ’ˆ ์‚ฌ์šฉ ๊ฒฝํ—˜์ด๋‚˜ ์˜๊ฒฌ์„ ๋ฌป๋Š” ์งˆ๋ฌธ ํฌํ•จ
260
+ - ์ถ”๊ฐ€ ์ •๋ณด๋‚˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ˆ๋‚ด ์ œ๊ณต
261
+
262
+ ##[์ฃผ์˜์‚ฌํ•ญ]
263
+ 1. ๊ฐ๊ด€์ ์ด๊ณ  ๊ณต์ •ํ•œ ๋ฆฌ๋ทฐ ์ œ๊ณต, ๊ณผ๋„ํ•œ ํ™๋ณด์„ฑ ํ‘œํ˜„ ์ž์ œ
264
+ 2. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋ฐ ์กฐ๊ฑด์„ ๋ช…ํ™•ํžˆ ๋ช…์‹œ
265
+ 3. ๊ฐ€๊ฒฉ ์ •๋ณด ๋“ฑ์€ ์ž‘์„ฑ ์‹œ์  ๊ธฐ์ค€์ž„์„ ๋ช…์‹œ
266
+ 4. ์œ ํŠœ๋ธŒ ๊ด€๋ จ ํ‘œํ˜„ ์ œ๊ฑฐ ๋ฐ ๋ธ”๋กœ๊ทธ ํ˜•์‹์— ๋งž๊ฒŒ ์กฐ์ •
267
+ 5. ์ „๋ฌธ ์šฉ์–ด๋‚˜ ๊ธฐ์ˆ ์  ํŠน์ง• ์„ค๋ช… ์‹œ ์ผ๋ฐ˜ ๋…์ž๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์‰ฝ๊ฒŒ ํ’€์–ด์„œ ์„ค๋ช…
268
+ 6. ์ œํ’ˆ์˜ ํ•œ๊ณ„์ ์ด๋‚˜ ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋„ ๊ท ํ˜•์žˆ๊ฒŒ ๋‹ค๋ฃธ
269
+ """
270
+ elif category == "ํ๋ ˆ์ด์…˜ํ˜•":
271
+ return """
272
+ #์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ทœ์น™(ํ๋ ˆ์ด์…˜ํ˜•_v3)
273
+ ##[๊ธฐ๋ณธ ๊ทœ์น™]
274
+ 1. ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑํ•˜๋˜, ์‰ฝ๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ํ‘œํ˜„ ์‚ฌ์šฉํ•˜๋ผ
275
+ 2. ์—ฌ๋Ÿฌ ์œ ํŠœ๋ธŒ ๋Œ€๋ณธ์˜ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ฃผ์ œ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ƒํ’ˆ ์ถ”์ฒœ ๋ธ”๋กœ๊ทธ ๊ธ€๋กœ ์žฌ๊ตฌ์„ฑ
276
+ 3. ๋ฐ˜๋“œ์‹œ ๊ฐ ์„น์…˜์€ ์ตœ์†Œ 400์ž ์ด์ƒ ์ž‘์„ฑํ•˜๊ณ  ์ตœ์ข… ๊ธ€์˜ ๊ธธ์ด๋Š” 3000์ž ์ด์ƒ์œผ๋กœ ์ž‘์„ฑ
277
+ 4. ์ถ”์ฒœ ์ œ๋ชฉ, ๋„์ž…๋ถ€, ๋ณธ๋ก (์ œํ’ˆ ์œ ํ˜• ๋น„๊ต, ์„ ์ • ๊ธฐ์ค€, ์ถ”์ฒœ ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ), ๊ฒฐ๋ก ์˜ ๊ตฌ์กฐ๋กœ ์ž‘์„ฑ
278
+ 5. ์ฃผ์ œ์— ๋งž๋Š” ๋…์ฐฝ์ ์ธ ๊ฐ€์ƒ ํ•„์ž ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ
279
+ 6. ๊ฐ๊ด€์ ์ด๊ณ  ์ •๋ณด ์ œ๊ณต์— ์ค‘์ ์„ ๋‘” ํ†ค์œผ๋กœ ์ž‘์„ฑ
280
+
281
+ ##[ํฌ์ŠคํŒ… ๊ตฌ์กฐ]
282
+ ###[์ถ”์ฒœ ์ œ๋ชฉ]
283
+ 1. ์ถ”์ฒœ์ œ๋ชฉ 3๊ฐ€์ง€๋งŒ ์ถœ๋ ฅํ•˜๋ผ(๋‹ค๋ฅธ๊ตฌ์กฐ, ์„ค๋ช… ์ถœ๋ ฅ๊ธˆ์ง€)
284
+ 2. ๋…์ž์˜ ํ˜ธ๊ธฐ์‹ฌ์„ ์ž๊ทนํ•˜๋Š” ํฅ๋ฏธ๋กœ์šด ์ œ๋ชฉ ์‚ฌ์šฉ
285
+ 3. ์ œํ’ˆ์˜ ํ•ต์‹ฌ ๊ฐ€์น˜๋‚˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์„ ๊ฐ•์กฐํ•˜๋Š” ์ œ๋ชฉ
286
+ 4. ๋น„๊ต๋‚˜ ๋Œ€์กฐ๋ฅผ ํ™œ์šฉํ•œ ์ œ๋ชฉ
287
+ 5. ์งˆ๋ฌธ ํ˜•์‹์ด๋‚˜ ๋„์ „์ ์ธ ๋ฌธ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ œ๋ชฉ
288
+ 6. ์ˆซ์ž๋‚˜ ์ˆœ์œ„๋ฅผ ํ™œ์šฉํ•œ ์ œ๋ชฉ (ํ•„์š”์‹œ)
289
+ 7. ๋…์ž์ธต์„ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ์ œ๋ชฉ
290
+ 8. "Best X" ๋˜๋Š” "Top Y" ํ˜•์‹์˜ ์ œ๋ชฉ๋„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋ผ
291
+ 9. ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋Œ ์ˆ˜ ์žˆ๋Š” ํฅ๋ฏธ๋กœ์šด ์ œ๋ชฉ
292
+
293
+ ###[๋„์ž…๋ถ€]
294
+ 1. ์ถ”์ฒœ ์ฃผ์ œ์˜ ํ•„์š”์„ฑ๊ณผ ์„ ํƒ์˜ ์–ด๋ ค์›€ ์†Œ๊ฐœ
295
+ 2. ๊ธ€์˜ ๋ชฉ์  ์„ค๋ช… (์ œํ’ˆ ์œ ํ˜• ๋น„๊ต ๋ฐ ์ถ”์ฒœ ์ œํ’ˆ ์†Œ๊ฐœ)
296
+ 3. ๋…์ž์˜ ๊ด€์‹ฌ์„ ๋„๋Š” ์š”์†Œ ํฌํ•จ (์˜ˆ: ๊ณ„์ ˆ์  ์š”์ธ, ์ƒํ™œ ๊ฐœ์„  ํšจ๊ณผ ๋“ฑ)
297
+
298
+ ###[๋ณธ๋ก ]
299
+ - ๋‹ค์Œ ์š”์†Œ๋“ค์„ ์ฃผ์ œ์— ๋งž๊ฒŒ ์„ ํƒ์ ์œผ๋กœ ํฌํ•จํ•˜๊ณ  ๋งž๋Š” ์ฃผ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ์ ํ•ฉํ•œ ์ฃผ์ œ๋ฅผ ์ƒ์„ฑํ•˜๋ผ
300
+ - ๋‹จ, ์ถฉ๋ถ„ํ•œ ์–‘(3000-4000์ž)์˜ ๊ธ€์ด ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ๋„๋ก ์„น์…˜์„ ์„ค์ •ํ•˜๋ผ.
301
+ - ๊ฐ ์„น์…˜์€ ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ถ„ํ•˜๊ณ , ์ •๋ณด์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ ๋‚ด์šฉ์˜ ๊นŠ์ด์™€ ์ˆœ์„œ ์กฐ์ •
302
+ 1. ์ œํ’ˆ ์œ ํ˜•๋ณ„ ๋น„๊ต
303
+ - ๊ฐ ์œ ํ˜•์˜ ์žฅ๋‹จ์  ๋ถ„์„
304
+ - ์‚ฌ์šฉ ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ์ ํ•ฉ์„ฑ ์„ค๋ช…
305
+
306
+ 2. ์ œํ’ˆ ์„ ์ • ๊ธฐ์ค€ ์ƒ์„ธ ์„ค๋ช…
307
+ - ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ์„ฑ๋Šฅ ์„ค๋ช…
308
+ - ์‚ฌ์šฉ ํŽธ์˜์„ฑ ๊ณ ๋ ค ์‚ฌํ•ญ
309
+ - ๊ฐ€๊ฒฉ ๋ฐ ์œ ์ง€ ๋น„์šฉ ๋ถ„์„
310
+
311
+ 3. ์ถ”์ฒœ ์ œํ’ˆ ๋ฆฌ์ŠคํŠธ (3-5๊ฐœ)
312
+ - ์ œํ’ˆ๋ช…๊ณผ ํ•ต์‹ฌ ํŠน์ง• ์†Œ๊ฐœ
313
+ - ๊ฐ ์ œํ’ˆ์˜ ์žฅ๋‹จ์  ์ƒ์„ธ ์„ค๋ช…
314
+ - ์ ํ•ฉํ•œ ์‚ฌ์šฉ์ž ์œ ํ˜• ์ œ์‹œ
315
+
316
+ 4. ๋ธŒ๋žœ๋“œ ๋ฐ ๋ชจ๋ธ ๋ผ์ธ์—… ์„ค๋ช… (ํ•„์š”์‹œ)
317
+ - ์ฃผ์š” ๋ธŒ๋žœ๋“œ์˜ ์ œํ’ˆ ๋ผ์ธ ์†Œ๊ฐœ
318
+ - ๋ชจ๋ธ๋ณ„ ์ฐจ์ด์  ๋ฐ ํŠน์ง• ์„ค๋ช…
319
+
320
+ ###[๊ฒฐ๋ก ]
321
+ 1. ์ถ”์ฒœ ์ œํ’ˆ ์š”์•ฝ ๋ฐ ์ตœ์ข… ์„ ํƒ ๊ฐ€์ด๋“œ
322
+ 2. ๊ตฌ๋งค ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ถ”๊ฐ€ ์‚ฌํ•ญ ์•ˆ๋‚ด
323
+ 3. ํ–ฅํ›„ ๊ธฐ์ˆ  ๋ฐœ์ „ ๋ฐฉํ–ฅ์ด๋‚˜ ํŠธ๋ Œ๋“œ ์ œ์‹œ (์žˆ์„ ๊ฒฝ์šฐ)
324
+
325
+ ##[์ตœ์ ํ™” ์ „๋žต]
326
+ 1. SEO ์ตœ์ ํ™”
327
+ - ์ถ”์ฒœ ์ฃผ์ œ์™€ ๊ด€๋ จ๋œ ์ฃผ์š” ํ‚ค์›Œ๋“œ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํฌํ•จ
328
+ - ๊ฒ€์ƒ‰ ์˜๋„์— ๋ถ€ํ•ฉํ•˜๋Š” ํฌ๊ด„์ ์ธ ๋‚ด์šฉ ๊ตฌ์„ฑ
329
+ 2. ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
330
+ - ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๋ฌธ์žฅ ์‚ฌ์šฉ
331
+ - ์ ์ ˆํ•œ ๋‹จ๋ฝ ๊ตฌ๋ถ„๊ณผ ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ ํ™œ์šฉ
332
+ - ํ•„์š”์‹œ ํ‘œ๋‚˜ ์ฐจํŠธ ํ™œ์šฉํ•˜์—ฌ ์ •๋ณด ์‹œ๊ฐํ™”
333
+ 3. ๋…์ž ์ฐธ์—ฌ ์œ ๋„
334
+ - ๋…์ž์˜ ๊ฒฝํ—˜์ด๋‚˜ ์˜๊ฒฌ์„ ๋ฌป๋Š” ์งˆ๋ฌธ ํฌํ•จ
335
+ - ๊ด€๋ จ ์ •๋ณด๋‚˜ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ˆ๋‚ด ์ œ๊ณต
336
+
337
+ ##[์ฃผ์˜์‚ฌํ•ญ]
338
+ 1. ๊ฐ๊ด€์ ์ด๊ณ  ๊ณต์ •ํ•œ ๋น„๊ต ๋ถ„์„ ์ œ๊ณต
339
+ 2. ๊ณผ๋„ํ•œ ํ™๋ณด์„ฑ ํ‘œํ˜„ ์ž์ œ
340
+ 3. ๊ฐ€๊ฒฉ ์ •๋ณด ๋“ฑ์€ ์ž‘์„ฑ ์‹œ์  ๊ธฐ์ค€์ž„์„ ๋ช…์‹œ
341
+ 4. ์œ ํŠœ๋ธŒ ๊ด€๋ จ ํ‘œํ˜„ ์ œ๊ฑฐ ๋ฐ ๋ธ”๋กœ๊ทธ ํ˜•์‹์— ๋งž๊ฒŒ ์กฐ์ •
342
+ 5. ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ํŠน์ • ๊ฐœ์ธ์˜ ์‹ค๋ช…์ด๋‚˜ ์ฑ„๋„๋ช… ์–ธ๊ธ‰ ๊ธˆ์ง€
343
+ 6. ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ๋“œ์™€ ๊ฐ€๊ฒฉ๋Œ€์˜ ์ œํ’ˆ์„ ํฌํ•จํ•˜์—ฌ ํŽธํ–ฅ์„ฑ ๋ฐฉ์ง€
344
+ 7. ์ „๋ฌธ ์šฉ์–ด๋‚˜ ๊ธฐ์ˆ ์  ํŠน์ง• ์„ค๋ช… ์‹œ ์ผ๋ฐ˜ ๋…์ž๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์‰ฝ๊ฒŒ ํ’€์–ด์„œ ์„ค๋ช…
345
+ """
346
+
347
+ # ํฌ์ŠคํŒ… ์Šคํƒ€์ผ ํ”„๋กฌํ”„ํŠธ ํ•จ์ˆ˜
348
+ def get_style_prompt(style):
349
+ prompts = {
350
+ "์นœ๊ทผํ•œ": """
351
+ #์นœ๊ทผํ•œ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ
352
+ 1. ํ†ค๊ณผ ์–ด์กฐ
353
+ - ๋Œ€ํ™”ํ•˜๋“ฏ ํŽธ์•ˆํ•˜๊ณ  ์นœ๊ทผํ•œ ๋งํˆฌ ์‚ฌ์šฉ
354
+ - ๋…์ž๋ฅผ "์—ฌ๋Ÿฌ๋ถ„" ๋˜๋Š” "๋…์ž๋‹˜๋“ค"๋กœ ์ง€์นญ
355
+ - ์ ์ ˆํ•œ ์ด๋ชจ์ง€๋ฅผ sparseํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ์นœ๊ทผ๊ฐ ํ‘œํ˜„
356
+ 2. ๋ฌธ์žฅ ๋ฐ ๋‚ด์šฉ ๊ตฌ์„ฑ
357
+ - ์งง๊ณ  ๊ฐ„๊ฒฐํ•œ ๋ฌธ์žฅ ์œ„์ฃผ๋กœ ์ž‘์„ฑ
358
+ - ๊ตฌ์–ด์ฒด ํ‘œํ˜„ ์‚ฌ์šฉ (์˜ˆ: "~ํ–ˆ์–ด์š”", "~์ธ ๊ฒƒ ๊ฐ™์•„์š”")
359
+ - '~๋‹ˆ๋‹ค', '~ํ–ˆ์ฃ '๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ.
360
+ - ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜์ด๋‚˜ ์ผํ™”๋กœ ์‹œ์ž‘
361
+ - ์‹ค์ƒํ™œ์—์„œ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒ ์ œ๊ณต
362
+ - ๋…์ž์˜ ๊ณต๊ฐ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋ก€ ํฌํ•จ
363
+ 3. ์šฉ์–ด ๋ฐ ์„ค๋ช… ๋ฐฉ์‹
364
+ - ์ „๋ฌธ ์šฉ์–ด ๋Œ€์‹  ์‰ฌ์šด ๋‹จ์–ด๋กœ ํ’€์–ด์„œ ์„ค๋ช…
365
+ - ๋น„์œ ๋‚˜ ์€์œ ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๊ฐœ๋… ์„ค๋ช…
366
+ - ์ˆ˜์‚ฌ์˜๋ฌธ๋ฌธ ํ™œ์šฉํ•˜์—ฌ ๋…์ž์™€ ์†Œํ†ตํ•˜๋Š” ๋Š๋‚Œ ์ฃผ๊ธฐ
367
+ 4. ๋…์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ
368
+ - ๋…์ž์˜ ์˜๊ฒฌ์„ ๋ฌผ์–ด๋ณด๋Š” ์งˆ๋ฌธ ํฌํ•จ
369
+ - ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ๋ฅผ ๋…๋ คํ•˜๋Š” ๋ฌธ๊ตฌ ์‚ฌ์šฉ
370
+ 5. ์ด๋ชจ์ง€ ํ™œ์šฉ
371
+ - ์ฃผ์š” ํฌ์ธํŠธ๋‚˜ ์ƒˆ๋กœ์šด ์„น์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ๋งŒ ๊ด€๋ จ ์ด๋ชจ์ง€ ์‚ฌ์šฉ
372
+ - ์ „์ฒด ๊ธ€์—์„œ 3-5๊ฐœ ์ •๋„์˜ ์ด๋ชจ์ง€๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๊ณผ๋„ํ•˜์ง€ ์•Š๊ฒŒ ์œ ์ง€
373
+ 6. ๋งˆ๋ฌด๋ฆฌ
374
+ - ์นœ๊ทผํ•˜๊ณ  ๊ฒฉ๋ คํ•˜๋Š” ํ†ค์œผ๋กœ ๋งˆ๋ฌด๋ฆฌ
375
+ - ๋‹ค์Œ ํฌ์ŠคํŒ…์— ๋Œ€ํ•œ ๊ธฐ๋Œ€๊ฐ ์œ ๋ฐœ
376
+ ์ฃผ์˜์‚ฌํ•ญ: ๋„ˆ๋ฌด ๊ฐ€๋ฒผ์šด ํ†ค์€ ์ง€์–‘ํ•˜๊ณ , ์ฃผ์ œ์˜ ์ค‘์š”์„ฑ์„ ํ•ด์น˜์ง€ ์•Š๋Š” ์„ ์—์„œ ์นœ๊ทผํ•จ ์œ ์ง€
377
+
378
+ ์˜ˆ์‹œ:
379
+ "์—ฌ๋Ÿฌ๋ถ„, ์˜ค๋Š˜ ํ•˜๋ฃจ๋Š” ์–ด๋– ์…จ๋‚˜์š”? ๐Ÿ˜Š ์ €๋Š” ์˜ค๋Š˜ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒฝํ—˜์„ ํ–ˆ๏ฟฝ๏ฟฝ์š”. ๋ฐ”๋กœ '๋ฏธ๋‹ˆ๋ฉ€ ๋ผ์ดํ”„'์— ๋„์ „ํ•ด๋ณธ ๊ฑด๋ฐ์š”. ์ฒ˜์Œ์—๋Š” ์ข€ ๋ง‰๋ง‰ํ–ˆ์ง€๋งŒ, ์ƒ๊ฐ๋ณด๋‹ค ์ฆ๊ฑฐ์šด ๊ฒฝํ—˜์ด์—ˆ์–ด์š”! ์—ฌ๋Ÿฌ๋ถ„๋„ ํ•œ๋ฒˆ ๋”ฐ๋ผํ•ด๋ณด์‹œ๊ฒ ์–ด์š”? ์ œ๊ฐ€ ์•Œ๊ฒŒ ๋œ ๊ฟ€ํŒ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์•Œ๋ ค๋“œ๋ฆด๊ฒŒ์š”.
380
+ """,
381
+ "์ผ๋ฐ˜":"""#์ผ๋ฐ˜์ ์ธ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ
382
+ 1. ํ†ค๊ณผ ์–ด์กฐ
383
+ - ์ค‘๋ฆฝ์ ์ด๊ณ  ๊ฐ๊ด€์ ์ธ ํ†ค ์œ ์ง€
384
+ - ์ ์ ˆํ•œ ์กด๋Œ“๋ง ์‚ฌ์šฉ (์˜ˆ: "~ํ•ฉ๋‹ˆ๋‹ค", "~์ž…๋‹ˆ๋‹ค")
385
+
386
+ 2. ๋‚ด์šฉ ๊ตฌ์กฐ ๋ฐ ์ „๊ฐœ
387
+ - ๋ช…ํ™•ํ•œ ์ฃผ์ œ ์ œ์‹œ๋กœ ์‹œ์ž‘
388
+ - ๋…ผ๋ฆฌ์ ์ธ ์ˆœ์„œ๋กœ ์ •๋ณด ์ „๊ฐœ
389
+ - ์ฃผ์š” ํฌ์ธํŠธ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ์†Œ์ œ๋ชฉ ํ™œ์šฉ
390
+ - ์ ์ ˆํ•œ ๊ธธ์ด์˜ ๋‹จ๋ฝ์œผ๋กœ ๊ตฌ์„ฑ
391
+
392
+ 3. ์šฉ์–ด ๋ฐ ์„ค๋ช… ๋ฐฉ์‹
393
+ - ์ผ๋ฐ˜์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์šฉ์–ด ์„ ํƒ
394
+ - ํ•„์š”์‹œ ๊ฐ„๋‹จํ•œ ์„ค๋ช… ์ถ”๊ฐ€
395
+ - ๊ฐ๊ด€์ ์ธ ์ •๋ณด ์ œ๊ณต์— ์ค‘์ 
396
+
397
+ 4. ํ…์ŠคํŠธ ๊ตฌ์กฐํ™”
398
+ - ๋ถˆ๋ฆฟ ํฌ์ธํŠธ๋‚˜ ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ •๋ณด ๊ตฌ์กฐํ™”
399
+ - ์ค‘์š”ํ•œ ์ •๋ณด๋Š” ๊ตต์€ ๊ธ€์”จ๋‚˜ ๊ธฐ์šธ์ž„๊ผด๋กœ ๊ฐ•์กฐ
400
+
401
+ 5. ๋…์ž ์ƒํ˜ธ์ž‘์šฉ
402
+ - ์ ์ ˆํžˆ ๋…์ž์˜ ์ƒ๊ฐ์„ ๋ฌป๋Š” ์งˆ๋ฌธ ํฌํ•จ
403
+ - ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ ์ œ์‹œ
404
+
405
+ 6. ๋งˆ๋ฌด๋ฆฌ
406
+ - ์ฃผ์š” ๋‚ด์šฉ ๊ฐ„๋‹จํžˆ ์š”์•ฝ
407
+ - ์ถ”๊ฐ€ ์ •๋ณด์— ๋Œ€ํ•œ ์•ˆ๋‚ด ์ œ๊ณต
408
+
409
+ ์ฃผ์˜์‚ฌํ•ญ: ๋„ˆ๋ฌด ๋”ฑ๋”ฑํ•˜๊ฑฐ๋‚˜ ์ง€๋ฃจํ•˜์ง€ ์•Š๋„๋ก ๊ท ํ˜• ์œ ์ง€
410
+
411
+ ์˜ˆ์‹œ:
412
+ "์ตœ๊ทผ ํ™˜๊ฒฝ ๋ฌธ์ œ๊ฐ€ ๋Œ€๋‘๋˜๋ฉด์„œ '์ œ๋กœ ์›จ์ด์ŠคํŠธ' ๋ผ์ดํ”„์Šคํƒ€์ผ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์ด ๋†’์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๋กœ ์›จ์ด์ŠคํŠธ๋ž€ ์ผ์ƒ์ƒํ™œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ์ƒํ™œ ๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ œ๋กœ ์›จ์ด์ŠคํŠธ์˜ ๊ฐœ๋…, ์‹ค์ฒœ ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํšจ๊ณผ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ œ๋กœ ์›จ์ด์ŠคํŠธ์˜ ์ •์˜๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๋ฉด...
413
+ """,
414
+ "์ „๋ฌธ์ ์ธ": """
415
+ #์ „๋ฌธ์ ์ธ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ
416
+
417
+ 1. ํ†ค๊ณผ ๊ตฌ์กฐ
418
+ - ๊ณต์‹์ ์ด๊ณ  ํ•™์ˆ ์ ์ธ ํ†ค ์‚ฌ์šฉํ•˜๋˜ ์ ์ ˆํ•œ ์กด๋Œ“๋ง ์‚ฌ์šฉ
419
+ - ๊ฐ๊ด€์ ์ด๊ณ  ๋ถ„์„์ ์ธ ์ ‘๊ทผ ์œ ์ง€
420
+ - ๋ช…ํ™•ํ•œ ์„œ๋ก , ๋ณธ๋ก , ๊ฒฐ๋ก  ๊ตฌ์กฐ
421
+ - ์ฒด๊ณ„์ ์ธ ๋…ผ์  ์ „๊ฐœ
422
+ - ์„ธ๋ถ€ ์„น์…˜์„ ์œ„ํ•œ ๋ช…ํ™•ํ•œ ์†Œ์ œ๋ชฉ ์‚ฌ์šฉ
423
+
424
+ 2. ๋‚ด์šฉ ๊ตฌ์„ฑ ๋ฐ ์ „๊ฐœ
425
+ - ๋ณต์žกํ•œ ๊ฐœ๋…์„ ์ •ํ™•ํžˆ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ ๊ตฌ์กฐ ์‚ฌ์šฉ
426
+ - ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์ „ํ™˜์–ด ํ™œ์šฉ
427
+ - ํ•ด๋‹น ๋ถ„์•ผ์˜ ์ „๋ฌธ ์šฉ์–ด ์ ๊ทน ํ™œ์šฉ (ํ•„์š”์‹œ ๊ฐ„๋žตํ•œ ์„ค๋ช… ์ œ๊ณต)
428
+ - ์‹ฌ์ธต์ ์ธ ๋ถ„์„๊ณผ ๋น„ํŒ์  ์‚ฌ๊ณ  ์ „๊ฐœ
429
+ - ๋‹ค์–‘ํ•œ ๊ด€์  ์ œ์‹œ ๋ฐ ๋น„๊ต
430
+
431
+ 3. ๋ฐ์ดํ„ฐ ๋ฐ ๊ทผ๊ฑฐ ํ™œ์šฉ
432
+ - ํ†ต๊ณ„, ์—ฐ๊ตฌ ๊ฒฐ๊ณผ, ์ „๋ฌธ๊ฐ€ ์˜๊ฒฌ ๋“ฑ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ถœ์ฒ˜ ์ธ์šฉ
433
+ - ํ•„์š”์‹œ ๊ฐ์ฃผ๋‚˜ ์ฐธ๊ณ ๋ฌธํ—Œ ๋ชฉ๋ก ํฌํ•จ
434
+ - ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ๋Š” ํ…์ŠคํŠธ๋กœ ๋ช…ํ™•ํžˆ ์„ค๋ช…
435
+
436
+ 4. ํ…์ŠคํŠธ ๊ตฌ์กฐํ™”
437
+ - ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ ์‚ฌ์šฉ
438
+ - ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‚˜ ์šฉ์–ด๋Š” ๊ธฐ์šธ์ž„๊ผด๋กœ ๊ฐ•์กฐ
439
+ - ๊ธด ์ธ์šฉ๋ฌธ์€ ๋“ค์—ฌ์“ฐ๊ธฐ๋กœ ๊ตฌ๋ถ„
440
+
441
+ 5. ๋งˆ๋ฌด๋ฆฌ
442
+ - ํ•ต์‹ฌ ๋…ผ์  ์žฌ๊ฐ•์กฐ
443
+ - ํ–ฅํ›„ ์—ฐ๊ตฌ ๋ฐฉํ–ฅ์ด๋‚˜ ์‹ค๋ฌด์  ํ•จ์˜ ์ œ์‹œ
444
+
445
+ ์ฃผ์˜์‚ฌํ•ญ: ์ „๋ฌธ์„ฑ์„ ์œ ์ง€ํ•˜๋˜, ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ์ˆ˜์ค€์€ ์ง€์–‘
446
+
447
+ ์˜ˆ์‹œ:
448
+ "๋ณธ ์—ฐ๊ตฌ์—์„œ๋Š” ์ธ๊ณต์ง€๋Šฅ(AI)์˜ ์œค๋ฆฌ์  ํ•จ์˜์— ๋Œ€ํ•ด ๊ณ ์ฐฐํ•œ๋‹ค. ํŠนํžˆ, ์ž์œจ์ฃผํ–‰ ์ž๋™์ฐจ์˜ ์˜์‚ฌ๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์œค๋ฆฌ์  ๋”œ๋ ˆ๋งˆ์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค. Bonnefon et al. (2016)์˜ ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด, ์ž์œจ์ฃผํ–‰ ์ฐจ๋Ÿ‰์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ง๋ฉดํ•  ์ˆ˜ ์žˆ๋Š” ์œค๋ฆฌ์  ์„ ํƒ์˜ ๋ณต์žก์„ฑ์ด ์ง€์ ๋œ ๋ฐ” ์žˆ๋‹ค. ๋ณธ๊ณ ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์œค๋ฆฌ์  ๋”œ๋ ˆ๋งˆ๋ฅผ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ด€์ ์—์„œ ๋ถ„์„ํ•œ๋‹ค: 1) ๊ณต๋ฆฌ์ฃผ์˜์  ์ ‘๊ทผ, 2) ์˜๋ฌด๋ก ์  ์ ‘๊ทผ, 3) ๋• ์œค๋ฆฌ์  ์ ‘๊ทผ. ๊ฐ ์ ‘๊ทผ๋ฒ•์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ต ๋ถ„์„ํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž์œจ์ฃผํ–‰ ์ฐจ๋Ÿ‰์˜ ์œค๋ฆฌ์  ์˜์‚ฌ๊ฒฐ์ • ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ์•ˆํ•˜๊ณ ์ž ํ•œ๋‹ค...
449
+ """
450
+ }
451
+ return prompts.get(style, "ํฌ์ŠคํŒ… ์Šคํƒ€์ผ ํ”„๋กฌํ”„ํŠธ")
452
+
453
+ # ํฌ์ŠคํŒ… ์Šคํƒ€์ผ ์„ค๋ช… ํ•จ์ˆ˜
454
+ def get_style_description(style):
455
+ descriptions = {
456
+ "์นœ๊ทผํ•œ": "๋…์ž์™€ ๊ฐ€๊นŒ์šด ์นœ๊ตฌ์ฒ˜๋Ÿผ ๋Œ€ํ™”ํ•˜๋Š” ๋“ฏํ•œ ์นœ๊ทผํ•œ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.",
457
+ "์ผ๋ฐ˜": "์ผ๋ฐ˜์ ์ด๊ณ  ์ค‘๋ฆฝ์ ์ธ ํ†ค์œผ๋กœ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.",
458
+ "์ „๋ฌธ์ ์ธ": "์ „๋ฌธ๊ฐ€์˜ ์‹œ๊ฐ์—์„œ ๊นŠ์ด ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค."
459
+ }
460
+ return descriptions.get(style, "ํฌ์ŠคํŒ… ์Šคํƒ€์ผ์„ ์„ ํƒํ•˜์„ธ์š”.")
461
+
462
+ # ํ”„๋กฌํ”„ํŠธ ์—…๋ฐ์ดํŠธ ํ•จ์ˆ˜
463
+ def update_prompts_and_description(category, style):
464
+ blog_post_prompt = get_blog_post_prompt(category)
465
+ style_prompt = get_style_prompt(style)
466
+ style_description = get_style_description(style)
467
+ return blog_post_prompt, style_prompt, style_description
468
+
469
+ def format_filename(text):
470
+ text = re.sub(r'[^\w\s-]', '', text)
471
+ return text[:50].strip()
472
+
473
+ def extract_first_recommended_title(blog_post):
474
+ section_match = re.search(r'(?:#+\s*)?์ถ”์ฒœ\s*์ œ๋ชฉ:?\s*\n([\s\S]*?)(?=\n(?:#+|$)|$)', blog_post, re.IGNORECASE)
475
+ if section_match:
476
+ section_content = section_match.group(1)
477
+ title_match = re.search(r'(?:^|\n)\s*(?:\d+\.|-|\*|\โ€ข)?\s*(.*?)(?=\n|$)', section_content)
478
+ if title_match:
479
+ title = title_match.group(1).strip()
480
+ print(f"Extracted title: {title}")
481
+ return title
482
+ print("No title found")
483
+ return "๋ธ”๋กœ๊ทธ_๊ธ€"
484
+
485
+ class PDF(FPDF):
486
+ def __init__(self):
487
+ super().__init__()
488
+ self.add_font("NanumGothic", "", "NanumGothic.ttf")
489
+ self.add_font("NanumGothicBold", "", "NanumGothicBold.ttf")
490
+ self.add_font("NanumGothicExtraBold", "", "NanumGothicExtraBold.ttf")
491
+ self.add_font("NanumGothicLight", "", "NanumGothicLight.ttf")
492
+
493
+ def header(self):
494
+ # ํ—ค๋”๋ฅผ ๋น„์›Œ๋‘ก๋‹ˆ๋‹ค
495
+ pass
496
+
497
+ def footer(self):
498
+ self.set_y(-15)
499
+ self.set_font('NanumGothicLight', '', 8)
500
+ self.cell(0, 10, f'Page {self.page_no()}', 0, new_x=XPos.RIGHT, new_y=YPos.TOP, align='C')
501
+
502
+ def save_to_pdf(summary, blog_post, file_type):
503
+ pdf = PDF()
504
+ pdf.set_auto_page_break(auto=True, margin=15)
505
+
506
+ pdf.add_page()
507
+ pdf.set_font("NanumGothicExtraBold", size=16)
508
+ pdf.cell(0, 10, "์š”์•ฝ", new_x=XPos.LMARGIN, new_y=YPos.NEXT, align='C')
509
+ pdf.ln(5)
510
+ pdf.set_font("NanumGothic", size=11)
511
+ pdf.multi_cell(0, 6, summary)
512
+
513
+ pdf.add_page()
514
+ pdf.set_font("NanumGothicExtraBold", size=16)
515
+ pdf.cell(0, 10, "๋ธ”๋กœ๊ทธ ๊ธ€", new_x=XPos.LMARGIN, new_y=YPos.NEXT, align='C')
516
+ pdf.ln(5)
517
+
518
+ lines = blog_post.split('\n')
519
+ for line in lines:
520
+ if line.strip() == '':
521
+ pdf.ln(3) # ๋นˆ ์ค„์€ ์ž‘์€ ๊ฐ„๊ฒฉ๋งŒ ์ถ”๊ฐ€
522
+ elif line.startswith('#'): # ์ œ๋ชฉ์œผ๋กœ ๊ฐ„์ฃผ
523
+ pdf.set_font("NanumGothicBold", size=14)
524
+ pdf.multi_cell(0, 8, line.lstrip('#').strip())
525
+ pdf.ln(2)
526
+ elif line.startswith('##'): # ๋ถ€์ œ๋ชฉ์œผ๋กœ ๊ฐ„์ฃผ
527
+ pdf.set_font("NanumGothicBold", size=12)
528
+ pdf.multi_cell(0, 7, line.lstrip('#').strip())
529
+ pdf.ln(2)
530
+ else:
531
+ pdf.set_font("NanumGothic", size=11)
532
+ pdf.multi_cell(0, 6, line.strip())
533
+ pdf.ln(1)
534
+
535
+ title = extract_first_recommended_title(blog_post)
536
+ today_date = datetime.now().strftime("%Y%m%d")
537
+ filename = f"{today_date}_{format_filename(title)}.pdf"
538
+
539
+ print(f"Saving PDF as: {filename}")
540
+ pdf.output(filename)
541
+ return filename
542
+
543
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค์šฉ PDF ์ €์žฅ ํ•จ์ˆ˜
544
+ def save_content_to_pdf(summary, blog_post):
545
+ filename = save_to_pdf(summary, blog_post, "๋ธ”๋กœ๊ทธ")
546
+ return filename
547
+
548
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ
549
+ title = "์œ ํŠœ๋ธŒ๋กœ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ"
550
+
551
+ with gr.Blocks() as demo:
552
+ gr.Markdown(f"# {title}")
553
+
554
+ # 1๋‹จ๊ณ„: ์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ
555
+ gr.Markdown("### 1๋‹จ๊ณ„: ํฌ์ŠคํŒ… ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ง€์ •ํ•ด์ฃผ์„ธ์š”", elem_id="step-title")
556
+ category = gr.Radio(choices=["์ผ๋ฐ˜ํ˜•","์ •๋ณด์„ฑ", "1๊ฐœ ์ƒํ’ˆ ์ถ”์ฒœํ˜•", "ํ๋ ˆ์ด์…˜ํ˜•"], label="ํฌ์ŠคํŒ… ์นดํ…Œ๊ณ ๋ฆฌ", value="์ผ๋ฐ˜ํ˜•")
557
+
558
+ # ๊ตฌ๋ถ„์„  ์ถ”๊ฐ€
559
+ gr.Markdown("---\n\n")
560
+
561
+ # 2๋‹จ๊ณ„: ํฌ์ŠคํŒ… ์Šคํƒ€์ผ ์„ ํƒ
562
+ gr.Markdown("### 2๋‹จ๊ณ„: ํฌ์ŠคํŒ… ์Šคํƒ€์ผ์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”", elem_id="step-title")
563
+ style = gr.Radio(choices=["์นœ๊ทผํ•œ", "์ผ๋ฐ˜", "์ „๋ฌธ์ ์ธ"], label="ํฌ์ŠคํŒ… ์Šคํƒ€์ผ", value="์นœ๊ทผํ•œ")
564
+ style_description = gr.Markdown(f"{get_style_description('์นœ๊ทผํ•œ')}", elem_id="style-description")
565
+
566
+ # ๊ตฌ๋ถ„์„  ์ถ”๊ฐ€
567
+ gr.Markdown("---\n\n")
568
+
569
+ # 3๋‹จ๊ณ„: ์œ ํŠœ๋ธŒ ๋งํฌ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
570
+ gr.Markdown("### 3๋‹จ๊ณ„: ์œ ํŠœ๋ธŒ ๋งํฌ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”", elem_id="step-title")
571
+ with gr.Row():
572
+ youtube_url1 = gr.Textbox(label="YouTube URL 1", placeholder="์ฒซ ๋ฒˆ์งธ ์œ ํŠœ๋ธŒ ๋งํฌ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”")
573
+ youtube_url2 = gr.Textbox(label="YouTube URL 2", placeholder="๋‘ ๋ฒˆ์งธ ์œ ํŠœ๋ธŒ ๋งํฌ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”")
574
+ youtube_url3 = gr.Textbox(label="YouTube URL 3", placeholder="์„ธ ๋ฒˆ์งธ ์œ ํŠœ๋ธŒ ๋งํฌ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”")
575
+
576
+ # ์ˆจ๊ฒจ์ง„ ํ…์ŠคํŠธ๋ฐ•์Šค (์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด์ง€ ์•Š์Œ)
577
+ combined_urls = gr.Textbox(visible=False)
578
+ transcript_output = gr.Textbox(label="์œ ํŠœ๋ธŒ ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ", lines=10)
579
+
580
+ # ์œ ํŠœ๋ธŒ ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ ํ•จ์ˆ˜
581
+ def combine_and_get_transcripts(url1, url2, url3):
582
+ urls = [url for url in [url1, url2, url3] if url.strip()]
583
+ combined = ",".join(urls)
584
+ all_transcripts = []
585
+ for url in urls:
586
+ transcript = get_transcript(url.strip())
587
+ all_transcripts.append(transcript)
588
+ return combined, "\n\n---\n\n".join(all_transcripts)
589
+
590
+ # ์ž…๋ ฅ ๋ณ€๊ฒฝ ์‹œ ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ ์—…๋ฐ์ดํŠธ
591
+ for url_input in [youtube_url1, youtube_url2, youtube_url3]:
592
+ url_input.change(
593
+ fn=combine_and_get_transcripts,
594
+ inputs=[youtube_url1, youtube_url2, youtube_url3],
595
+ outputs=[combined_urls, transcript_output]
596
+ )
597
+
598
+ # ์š”์•ฝ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
599
+ gr.Markdown("### ์š”์•ฝ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ", elem_id="step-title")
600
+ with gr.Accordion("๏ฟฝ๏ฟฝ๏ฟฝ์•ฝ๊ธ€ ์„ค์ •", open=False):
601
+ summary_system_message = gr.Textbox(
602
+ label="์š”์•ฝ๊ธ€ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€",
603
+ value="""
604
+ #์œ ํŠœ๋ธŒ ๋Œ€๋ณธ ์š”์•ฝ ๊ทœ์น™
605
+ 1. ๋ชฉ์ 
606
+ ๊ฐ€. ์ž…๋ ฅ๋œ ์—ฌ๋Ÿฌ ์œ ํŠœ๋ธŒ ์˜์ƒ ๋Œ€๋ณธ์„ ๋ถ„์„ํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ข…ํ•ฉ์ ์ธ ์š”์•ฝ ๋ณด๊ณ ์„œ ์ž‘์„ฑ
607
+ ๋‚˜. ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์กฐํ™”๋œ ํ˜•์‹์œผ๋กœ ์ œ์‹œ
608
+ ๋‹ค. ๊ณตํ†ต ์ฃผ์ œ๋‚˜ ์—ฐ๊ด€์„ฑ ์žˆ๋Š” ๋‚ด์šฉ์„ ์ค‘์‹ฌ์œผ๋กœ ํ†ตํ•ฉ๋œ ์ธ์‚ฌ์ดํŠธ ์ œ๊ณต
609
+
610
+ 2. ๊ตฌ์กฐ ๋ฐ ํ˜•์‹
611
+ ๊ฐ€. ์ „์ฒด ๊ตฌ์กฐ
612
+ - ์ฃผ์š” ํฌ์ธํŠธ๋ฅผ ๋…ผ๋ฆฌ์  ์„น์…˜์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž‘์„ฑ
613
+ - ๊ฐ ์„น์…˜์— ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์†Œ์ œ๋ชฉ ๋ถ€์—ฌ
614
+ ๋‚˜. ๋งˆํฌ๋‹ค์šด ํ˜•์‹ ์‚ฌ์šฉ
615
+ - ์„น์…˜ ๊ตฌ๋ถ„์„ ์œ„ํ•ด '1.', '2.' ๋“ฑ์˜ ์ˆซ์ž ์‚ฌ์šฉ
616
+ - ํ•˜์œ„ ํ•ญ๋ชฉ์€ '๊ฐ€.', '๋‚˜.' ๋“ฑ์˜ ํ•œ๊ธ€ ๋ฌธ์ž ์‚ฌ์šฉ
617
+ ๋‹ค. ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
618
+ - ๊ฐ„๊ฒฐํ•œ ๋ฌธ์žฅ๊ณผ ๋‹จ๋ฝ ์‚ฌ์šฉํ•˜๋˜ ๋ณธ๋ฌธ์˜ ๋‚ด์šฉ์€ ์ž์„ธํžˆ ์ž‘์„ฑ
619
+ - ํ•„์š”์‹œ ๋ถˆ๋ฆฟ ํฌ์ธํŠธ ํ™œ์šฉํ•˜์—ฌ ์ •๋ณด ๋‚˜์—ด
620
+
621
+ 3. ๋‚ด์šฉ ๊ตฌ์„ฑ
622
+ ๊ฐ€. ์ข…ํ•ฉ ๊ฐœ์š”
623
+ - ๋ถ„์„ํ•œ ์˜์ƒ๋“ค์˜ ๊ณตํ†ต ์ฃผ์ œ ๋˜๋Š” ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ ์†Œ๊ฐœ
624
+ - ๊ฐ ์˜์ƒ์˜ ์ฃผ์š” ํฌ์ธํŠธ๋ฅผ ๊ฐ„๋žตํžˆ ๋‚˜์—ด
625
+ ๋‚˜. ์ฃผ์ œ๋ณ„ ํ†ตํ•ฉ ๋ถ„์„
626
+ - ๊ณตํ†ต ์ฃผ์ œ๋‚˜ ์—ฐ๊ด€์„ฑ ์žˆ๋Š” ๋‚ด์šฉ์„ ์ค‘์‹ฌ์œผ๋กœ ์„น์…˜ ๊ตฌ์„ฑ
627
+ - ๊ฐ ์˜์ƒ์˜ ๊ด€์ ์ด๋‚˜ ์ •๋ณด๋ฅผ ๋น„๊ต/๋Œ€์กฐํ•˜๋ฉฐ ์ข…ํ•ฉ
628
+ ๋‹ค. ๋…ํŠนํ•œ ์ธ์‚ฌ์ดํŠธ
629
+ - ๊ฐ ์˜์ƒ์—์„œ ์ œ์‹œ๋œ ๊ณ ์œ ํ•œ ๊ด€์ ์ด๋‚˜ ์ •๋ณด ๊ฐ•์กฐ
630
+ ๋ผ. ๋ฐ์ดํ„ฐ ๋ฐ ์˜ˆ์‹œ ํ†ตํ•ฉ
631
+ - ์—ฌ๋Ÿฌ ์˜์ƒ์—์„œ ์ œ์‹œ๋œ ๋ฐ์ดํ„ฐ๋‚˜ ์˜ˆ์‹œ๋ฅผ ์ข…ํ•ฉํ•˜์—ฌ ์ œ์‹œ
632
+ ๋งˆ. ์ข…ํ•ฉ ๊ฒฐ๋ก 
633
+ - ๋ถ„์„๋œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ „์ฒด์ ์ธ ๊ฒฐ๋ก  ๋„์ถœ
634
+
635
+ 4. ์šฉ์–ด ๋ฐ ํ‘œํ˜„
636
+ ๊ฐ€. '์œ ํŠœ๋ฒ„', 'YouTuber' ๋“ฑ์˜ ํ‘œํ˜„์„ '์ œ์ž‘์ž' ๋˜๋Š” '์ง„ํ–‰์ž' ๊ฐ™์€ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ๋Œ€์ฒด
637
+ ๋‚˜. ์ฑ„๋„๋ช…, ์ œ์ž‘์ž ์‹ค๋ช… ๋“ฑ ๊ฐœ์ธ ์ •๋ณด ์ œ์™ธ
638
+ ๋‹ค. ์œ ํŠœ๋ธŒ ํŠน์ • ์šฉ์–ด(์˜ˆ: '๊ตฌ๋…', '์ข‹์•„์š”', '์•Œ๋ฆผ', '๋‹ค์Œ ์˜์ƒ' ๋“ฑ) ์‚ฌ์šฉ ๊ธˆ์ง€
639
+
640
+ 5. ๊ฐ๊ด€์„ฑ ๋ฐ ์ •ํ™•์„ฑ
641
+ ๊ฐ€. ๋Œ€๋ณธ ๋‚ด์šฉ์„ ๊ฐ๊ด€์ ์œผ๋กœ ์š”์•ฝ, ๊ฐœ์ธ์  ํ•ด์„ ์ตœ์†Œํ™”
642
+ ๋‚˜. ์‚ฌ์‹ค ๊ด€๊ณ„๋‚˜ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€๋Šฅํ•œ ์›๋ฌธ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ
643
+
644
+ 6. ๋งˆ๋ฌด๋ฆฌ
645
+ ๊ฐ€. ์š”์•ฝ์˜ ๋์— ์ „์ฒด ๋‚ด์šฉ์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌ
646
+ ๋‚˜. ํ•„์š”์‹œ ์ถ”๊ฐ€ ์ •๋ณด๋‚˜ ๊ด€๋ จ ์ฃผ์ œ ์ œ์•ˆ
647
+ """,
648
+ lines=15,
649
+ visible=True
650
+ )
651
+ summary_max_tokens = gr.Slider(label="Max Tokens", minimum=1000, maximum=7000, value=5000, step=1000)
652
+ summary_temperature = gr.Slider(label="Temperature", minimum=0.1, maximum=1.0, value=0.7, step=0.05)
653
+ summary_top_p = gr.Slider(label="Top P", minimum=0.1, maximum=1.0, value=0.95, step=0.05)
654
+
655
+ summarize_btn = gr.Button("์š”์•ฝ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ")
656
+ summary_output = gr.Textbox(label="์š”์•ฝ๋œ ๊ธ€", lines=10)
657
+
658
+ def generate_summary(transcript, system_message, max_tokens, temperature, top_p):
659
+ summary = summarize_transcript(transcript, system_message, max_tokens, temperature, top_p)
660
+ return summary
661
+
662
+ summarize_btn.click(
663
+ fn=generate_summary,
664
+ inputs=[transcript_output, summary_system_message, summary_max_tokens, summary_temperature, summary_top_p],
665
+ outputs=[summary_output]
666
+ )
667
+
668
+ # ๊ตฌ๋ถ„์„  ์ถ”๊ฐ€
669
+ gr.Markdown("---\n\n")
670
+
671
+ # 4๋‹จ๊ณ„: ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ
672
+ gr.Markdown("### 4๋‹จ๊ณ„: ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ", elem_id="step-title")
673
+ gr.HTML("<span style='color: grey;'>[์ƒ์„ฑํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”]</span>")
674
+
675
+ with gr.Accordion("๋ธ”๋กœ๊ทธ ๊ธ€ ์„ค์ •", open=False):
676
+ blog_system_message = gr.Textbox(label="์นดํ…Œ๊ณ ๋ฆฌ ํ”„๋กฌํ”„ํŠธ", value=get_blog_post_prompt("์ผ๋ฐ˜ํ˜•"), lines=20, visible=True)
677
+ style_prompt_hidden = gr.Textbox(label="์Šคํƒ€์ผ ํ”„๋กฌํ”„ํŠธ", value=get_style_prompt("์นœ๊ทผํ•œ"), lines=10, visible=False) # ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
678
+ blog_max_tokens = gr.Slider(label="Max Tokens", minimum=1000, maximum=12000, value=8000, step=1000)
679
+ blog_temperature = gr.Slider(label="Temperature", minimum=0.1, maximum=1.0, value=0.8, step=0.1)
680
+ blog_top_p = gr.Slider(label="Top P", minimum=0.1, maximum=1.0, value=0.95, step=0.05)
681
+
682
+ generate_btn = gr.Button("๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ")
683
+ blog_output = gr.Textbox(label="์ƒ์„ฑ๋œ ๋ธ”๋กœ๊ทธ ๊ธ€", lines=30)
684
+
685
+ def generate_blog_content(category, style, transcripts, category_prompt, style_prompt, max_tokens, temperature, top_p):
686
+ blog_post = generate_blog_post(category, style, transcripts, category_prompt, style_prompt, max_tokens, temperature, top_p)
687
+ return blog_post
688
+
689
+ generate_btn.click(
690
+ fn=generate_blog_content,
691
+ inputs=[category, style, transcript_output, blog_system_message, style_prompt_hidden, blog_max_tokens, blog_temperature, blog_top_p],
692
+ outputs=[blog_output]
693
+ )
694
+
695
+ # PDF ์ €์žฅ ๋ฒ„ํŠผ ์ถ”๊ฐ€
696
+ save_pdf_btn = gr.Button("PDF๋กœ ์ €์žฅํ•˜๊ธฐ")
697
+ pdf_output = gr.File(label="์ƒ์„ฑ๋œ PDF ํŒŒ์ผ")
698
+
699
+ save_pdf_btn.click(
700
+ fn=save_content_to_pdf,
701
+ inputs=[summary_output, blog_output],
702
+ outputs=[pdf_output]
703
+ )
704
+
705
+ # ์นดํ…Œ๊ณ ๋ฆฌ์™€ ์Šคํƒ€์ผ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ํ”„๋กฌํ”„ํŠธ ์—…๋ฐ์ดํŠธ
706
+ def update_prompts_and_description(category, style):
707
+ blog_post_prompt = get_blog_post_prompt(category)
708
+ style_prompt = get_style_prompt(style)
709
+ style_description = get_style_description(style)
710
+ return blog_post_prompt, style_prompt, style_description
711
+
712
+ category.change(fn=update_prompts_and_description, inputs=[category, style], outputs=[blog_system_message, style_prompt_hidden, style_description])
713
+ style.change(fn=update_prompts_and_description, inputs=[category, style], outputs=[blog_system_message, style_prompt_hidden, style_description])
714
+
715
+ demo.launch()
716
+
717
+ # CSS ์Šคํƒ€์ผ ์ถ”๊ฐ€
718
+ gr.HTML("""
719
+ <style>
720
+ #step-title {
721
+ font-size: 1.7em;
722
+ font-weight: bold;
723
+ }
724
+ #style-description {
725
+ font-size: 1.2em;
726
+ }
727
+ </style>
728
+ """)
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ gradio
2
+ requests
3
+ huggingface_hub
4
+ youtube_transcript_api
5
+ fpdf2