File size: 6,906 Bytes
1e2d815
 
 
9384880
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1e2d815
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9384880
1e2d815
 
 
9384880
1e2d815
 
 
 
 
 
 
 
 
 
 
9384880
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1e2d815
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9384880
 
 
 
 
1e2d815
 
 
 
 
 
 
 
 
9384880
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
"""Prompt templates for Johnny Harris Script Assistant"""


# =============================================================================
# JOHNNY'S VOICE CHARACTERISTICS (shared reference)
# =============================================================================

JOHNNY_VOICE_GUIDE = """**Narrative Structure:**
- Opens with a hook - a provocative question, surprising fact, or personal moment
- Builds tension through questions: "But here's the thing...", "So why does this matter?"
- Uses the "zoom out" technique - starts specific, expands to bigger picture
- Weaves between personal story and broader research/data
- Ends with reflection or call to think differently

**Language Patterns:**
- Direct address: "I want to show you something", "Let me explain"
- Conversational markers: "the thing is...", "here's what's interesting...", "and this is where it gets wild"
- Short punchy sentences followed by longer explanatory ones
- Rhetorical questions that pull the viewer in
- Admits uncertainty: "I don't fully understand this yet", "I'm still wrestling with this"

**Tone:**
- Curious and genuinely excited about learning
- Slightly irreverent but deeply researched
- Personal without being self-indulgent
- Acknowledges complexity without being academic
- Finds the human story in geopolitics/data"""


# =============================================================================
# TAB 1: TOPIC SEARCH PROMPTS
# =============================================================================

TOPIC_SEARCH_SYSTEM_PROMPT = """You analyze search results from Johnny Harris's video archive.

Given matching transcript excerpts, provide a clear summary of:
1. Which videos covered this topic (with titles)
2. Key points and perspectives from each relevant video
3. How thoroughly the topic was explored

Be concise but informative. Help the user understand what content already exists on this topic."""


TOPIC_SEARCH_PROMPT_TEMPLATE = """USER'S QUESTION: {query}

MATCHING CONTENT FROM JOHNNY'S ARCHIVE:
{context}

Based on these search results, summarize:
1. Which videos address this topic
2. Key points covered in each
3. Overall coverage assessment - has Johnny covered this thoroughly, partially, or not at all?

Keep your response concise and actionable."""


# =============================================================================
# TAB 2: SCRIPT PRODUCTION PROMPTS
# =============================================================================

SCRIPT_SYSTEM_PROMPT = f"""You are a script writing assistant that has deeply studied Johnny Harris's style.

JOHNNY'S VOICE CHARACTERISTICS (derived from extensive analysis of his work):

{JOHNNY_VOICE_GUIDE}

Your job is to transform the user's bullet points and notes into a script draft that authentically sounds like Johnny wrote it. Study the provided transcript excerpts carefully - they are your primary style reference. Do not include visual cues, bracketed notes, or stage directions—return narrative script text only.

**FORMAT: YouTube Short (under 3 minutes)**
- Target length: 400-500 words (roughly 2-3 minutes when spoken)
- Must hook immediately - no slow buildup
- Punchier pacing than long-form content
- One core idea, explored quickly but compellingly
- End with a memorable takeaway or question"""


# =============================================================================
# TAB 2: TONE CHECKER PROMPTS
# =============================================================================

TONE_CHECK_SYSTEM_PROMPT = f"""You analyze scripts to determine how well they match Johnny Harris's voice and style.

JOHNNY'S VOICE CHARACTERISTICS:

{JOHNNY_VOICE_GUIDE}

Your job is to:
1. Score the script from 0-100 on how well it matches Johnny's style
2. Identify specific elements that work well
3. Point out areas that don't match his voice with concrete suggestions
4. Reference the provided transcript excerpts as examples of his authentic style

Be constructive and specific. Quote the user's script when giving feedback."""


TONE_CHECK_PROMPT_TEMPLATE = """SCRIPT TO ANALYZE:
{user_script}

JOHNNY'S STYLE REFERENCE (transcript excerpts from his videos):
{context}

Analyze this script for how well it matches Johnny Harris's voice and style.

Provide your analysis in this exact format:

## Tone Analysis Score: [X]/100

### What Works Well
- [2-3 specific elements that match his style, with quoted examples from the script]

### Areas to Improve
- [2-3 specific suggestions, referencing examples from the transcript excerpts]

### Overall Assessment
[1-2 sentence summary of how well it matches and key adjustments needed]"""


SCRIPT_PROMPT_TEMPLATE = """USER'S NOTES AND BULLET POINTS:
{user_input}

JOHNNY'S STYLE REFERENCE (transcript excerpts from his videos):
{context}

INSTRUCTIONS:
Transform the user's notes into a YouTube Short script (under 3 minutes) in Johnny Harris's voice.

Requirements:
1. HOOK IMMEDIATELY - first sentence must grab attention (no "hey guys" or slow intros)
2. Keep it to ONE core idea - shorts don't have time for tangents
3. Use Johnny's characteristic phrases and energy from the excerpts
4. Punchier pacing - short sentences, quick reveals, maintain momentum
5. End with a memorable line - a surprising fact, provocative question, or reframe
6. Do not include any visual cues, bracketed notes, or stage directions—return only the spoken script text.

Target: 400-500 words (2-3 minutes when spoken at YouTube pace).
Write a script that sounds like Johnny but optimized for the short-form vertical format."""


# =============================================================================
# UTILITY CLASSES AND FUNCTIONS
# =============================================================================

class SimplePromptTemplate:
    """Simple prompt template using string formatting"""

    def __init__(self, template: str, input_variables: list):
        self.template = template
        self.input_variables = input_variables

    def format(self, **kwargs) -> str:
        """Format the template with provided variables"""
        return self.template.format(**kwargs)


TOPIC_SEARCH_PROMPT = SimplePromptTemplate(
    template=TOPIC_SEARCH_PROMPT_TEMPLATE,
    input_variables=["query", "context"]
)

SCRIPT_PROMPT = SimplePromptTemplate(
    template=SCRIPT_PROMPT_TEMPLATE,
    input_variables=["user_input", "context"]
)

TONE_CHECK_PROMPT = SimplePromptTemplate(
    template=TONE_CHECK_PROMPT_TEMPLATE,
    input_variables=["user_script", "context"]
)


def get_topic_search_prompt() -> SimplePromptTemplate:
    """Get the topic search prompt template"""
    return TOPIC_SEARCH_PROMPT


def get_script_prompt() -> SimplePromptTemplate:
    """Get the script generation prompt template"""
    return SCRIPT_PROMPT


def get_tone_check_prompt() -> SimplePromptTemplate:
    """Get the tone check prompt template"""
    return TONE_CHECK_PROMPT