|
import streamlit as st |
|
import openai |
|
|
|
def main(): |
|
st.title("Blog Post Idea and Outline Generator") |
|
|
|
openai.api_key = st.secrets["OPENAI_API_KEY"] |
|
|
|
blog_topic = st.text_input("Enter your blog topic:", value="", placeholder="e.g., Artificial Intelligence in Healthcare") |
|
target_audience = st.text_input("Describe your target audience:", value="", placeholder="e.g., healthcare professionals") |
|
post_length = st.selectbox("Choose the length of your blog post:", ['Short (500 words)', 'Medium (1000 words)', 'Long (1500+ words)']) |
|
|
|
if st.button('Generate Blog Post Ideas and Outlines'): |
|
response = generate_blog_ideas_and_outlines(blog_topic, target_audience, post_length) |
|
if response: |
|
st.subheader("Suggested Blog Post Ideas and Outlines:") |
|
st.write(response) |
|
else: |
|
st.error("Failed to generate blog post ideas and outlines. Please check the inputs and try again.") |
|
|
|
def generate_blog_ideas_and_outlines(topic, audience, length): |
|
try: |
|
prompt_text = f"""As an expert content strategist and writer, create 5 unique blog post ideas on the topic of {topic} for {audience}. For each idea, provide a brief outline suitable for a {length} post. Each outline should include: |
|
1. An attention-grabbing title |
|
2. 3-5 main sections with brief descriptions |
|
3. A concluding thought or call-to-action |
|
|
|
Ensure that each idea is distinct and tailored to the interests and needs of the target audience.""" |
|
|
|
response = openai.ChatCompletion.create( |
|
model="gpt-4", |
|
messages=[{"role": "system", "content": prompt_text}], |
|
max_tokens=1000 |
|
) |
|
return response.choices[0].message['content'] |
|
except Exception as e: |
|
st.error(f"An error occurred: {str(e)}") |
|
return None |
|
|
|
if __name__ == "__main__": |
|
main() |