Skip to content

Commit b335d58

Browse files
author
Ayush Varshney
committed
Youtube Writing Script
1 parent 4a53e67 commit b335d58

File tree

4 files changed

+107
-0
lines changed

4 files changed

+107
-0
lines changed

YT Script Writing Tool/Youtube.jpg

14.9 KB
Loading

YT Script Writing Tool/app.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import streamlit as st
2+
from utils import generate_script
3+
4+
# Applying Styling
5+
st.markdown("""
6+
<style>
7+
div.stButton > button:first-child {
8+
background-color: #0099ff;
9+
color:#ffffff;
10+
}
11+
div.stButton > button:hover {
12+
background-color: #00ff00;
13+
color:#FFFFFF;
14+
}
15+
</style>""", unsafe_allow_html=True)
16+
17+
18+
# Creating Session State Variable
19+
if 'API_Key' not in st.session_state:
20+
st.session_state['API_Key'] =''
21+
22+
23+
st.title('❤️ YouTube Script Writing Tool')
24+
25+
# Sidebar to capture the OpenAi API key
26+
st.sidebar.title("😎🗝️")
27+
st.session_state['API_Key']= st.sidebar.text_input("What's your API key?",type="password")
28+
st.sidebar.image('./Youtube.jpg',width=300, use_column_width=True)
29+
30+
31+
# Captures User Inputs
32+
prompt = st.text_input('Please provide the topic of the video',key="prompt") # The box for the text prompt
33+
video_length = st.text_input('Expected Video Length 🕒 (in minutes)',key="video_length") # The box for the text prompt
34+
creativity = st.slider('Words limit ✨ - (0 LOW || 1 HIGH)', 0.0, 1.0, 0.2,step=0.1)
35+
36+
submit = st.button("Generate Script for me")
37+
38+
39+
if submit:
40+
41+
if st.session_state['API_Key']:
42+
search_result,title,script = generate_script(prompt,video_length,creativity,st.session_state['API_Key'])
43+
#Let's generate the script
44+
st.success('Hope you like this script ❤️')
45+
46+
#Display Title
47+
st.subheader("Title:🔥")
48+
st.write(title)
49+
50+
#Display Video Script
51+
st.subheader("Your Video Script:📝")
52+
st.write(script)
53+
54+
#Display Search Engine Result
55+
st.subheader("Check Out - DuckDuckGo Search:🔍")
56+
with st.expander('Show me 👀'):
57+
st.info(search_result)
58+
else:
59+
st.error("Ooopssss!!! Please provide API key.....")
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
langchain
2+
streamlit
3+
openai
4+
tiktoken
5+
python-dotenv
6+
pinecone-client
7+
duckduckgo_search

YT Script Writing Tool/utils.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from langchain.llms import OpenAI
2+
from langchain.prompts import PromptTemplate
3+
from langchain.chains import LLMChain
4+
from langchain.tools import DuckDuckGoSearchRun
5+
6+
# Function to generate video script
7+
def generate_script(prompt,video_length,creativity,api_key):
8+
9+
# Template for generating 'Title'
10+
title_template = PromptTemplate(
11+
input_variables = ['subject'],
12+
template='Please come up with a title for a YouTube video on the {subject}.'
13+
)
14+
15+
# Template for generating 'Video Script' using search engine
16+
script_template = PromptTemplate(
17+
input_variables = ['title', 'DuckDuckGo_Search','duration'],
18+
template='Create a script for a YouTube video based on this title for me. TITLE: {title} of duration: {duration} minutes using this search data {DuckDuckGo_Search} '
19+
)
20+
21+
#Setting up OpenAI LLM
22+
llm = OpenAI(temperature=creativity,openai_api_key=api_key,
23+
model_name='gpt-3.5-turbo')
24+
25+
#Creating chain for 'Title' & 'Video Script'
26+
title_chain = LLMChain(llm=llm, prompt=title_template, verbose=True)
27+
script_chain = LLMChain(llm=llm, prompt=script_template, verbose=True)
28+
29+
30+
# https://python.langchain.com/docs/modules/agents/tools/integrations/ddg
31+
search = DuckDuckGoSearchRun()
32+
33+
# Executing the chains we created for 'Title'
34+
title = title_chain.run(prompt)
35+
36+
# Executing the chains we created for 'Video Script' by taking help of search engine 'DuckDuckGo'
37+
search_result = search.run(prompt)
38+
script = script_chain.run(title=title, DuckDuckGo_Search=search_result,duration=video_length)
39+
40+
# Returning the output
41+
return search_result,title,script

0 commit comments

Comments
 (0)