Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import requests | |
| import os | |
| from bs4 import BeautifulSoup | |
| # Configure DeepSeek | |
| DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY") | |
| DEEPSEEK_ENDPOINT = "https://api.deepseek.com/v1/chat/completions" | |
| def scrape_website(url, max_pages=3): | |
| """Scrapes content from the given website URL.""" | |
| if not url.startswith("http"): | |
| url = f"https://{url}" | |
| try: | |
| response = requests.get(url, timeout=10) | |
| response.raise_for_status() | |
| soup = BeautifulSoup(response.content, "html.parser") | |
| # Extract meaningful content | |
| content = [] | |
| # Get meta description | |
| meta_description = soup.find("meta", {"name": "description"}) | |
| if meta_description and meta_description.get("content"): | |
| content.append(meta_description["content"]) | |
| # Get main content | |
| for tag in ['h1', 'h2', 'p']: | |
| elements = soup.find_all(tag) | |
| content.extend([elem.get_text(strip=True) for elem in elements if elem.get_text(strip=True)]) | |
| return " ".join(content[:1500]) | |
| except Exception as e: | |
| st.error(f"Error scraping website: {str(e)}") | |
| return None | |
| def generate_marketing_plan(business_info): | |
| """Generate comprehensive video marketing plan using DeepSeek""" | |
| prompt = f"""As a video marketing strategist specializing in conversion optimization, create a comprehensive video funnel strategy based on this business information: | |
| {business_info} | |
| Develop a sophisticated 12-month video marketing strategy that includes: | |
| 1. CORE STRATEGY | |
| - Identify 3 unique angles or approaches that would differentiate this business's video content, ensuring that these are approaches that make the business stand out from their competitors | |
| - Suggest innovative ways to showcase the business's unique value proposition | |
| - Recommend specific storytelling techniques that would resonate with their target audience | |
| 2. FUNNEL ARCHITECTURE | |
| For each stage below, provide specific video content ideas that move prospects forward: | |
| - Awareness: Pattern interruption content that stops the scroll and helps the viewer meet the busines for the first time | |
| - Considertion: Trust-building content that demonstrates expertise | |
| - Conversion: Conversion content that overcomes objections | |
| - Post-Purchase: Retention content that drives referrals | |
| 3. CONTENT BLUEPRINTS | |
| For the 3 most important videos identified: | |
| - Detailed content outline | |
| - Key messaging points | |
| - Specific hooks to grab attention | |
| - Call-to-action strategy | |
| - Ideal length and format | |
| - Platform-specific optimizations | |
| 4. PRODUCTION GUIDELINES | |
| - Visual style recommendations | |
| - Music and sound design suggestions | |
| - Text overlay strategies | |
| - Thumbnail design principles | |
| - Specific examples of successful videos to model | |
| 5. DISTRIBUTION STRATEGY | |
| - Primary platform strategy with posting frequency | |
| - Cross-platform repurposing guide | |
| - Hashtag and keyword recommendations | |
| - Best times to post | |
| - Community engagement tactics | |
| 6. MEASUREMENT FRAMEWORK | |
| - Primary KPIs for each funnel stage | |
| - Engagement metrics to track | |
| - Conversion tracking setup | |
| - A/B testing recommendations | |
| - Monthly review process | |
| Format the response with clear markdown headers and bullet points. Focus on providing unique, specific recommendations rather than generic advice. Include actual examples and detailed tactics whenever possible. | |
| For each recommendation, explain the strategic reasoning behind it so the business understands not just what to do, but why it matters for their specific situation.""" | |
| headers = { | |
| "Authorization": f"Bearer {DEEPSEEK_API_KEY}", | |
| "Content-Type": "application/json" | |
| } | |
| data = { | |
| "model": "deepseek-chat", | |
| "messages": [ | |
| { | |
| "role": "system", | |
| "content": """You are a leading video marketing strategist who combines the philosophical approaches of: | |
| - Gary Vaynerchuk's pattern interruption and documenting-over-creating methodology | |
| - Alex Hormozi's high-ticket offer presentation framework | |
| - Mr Beast's viral engineering techniques and thumbnail psychology | |
| - Alyssa Ago's short-form storytelling frameworks | |
| - Owen Video's Video 10x Strategy | |
| - Think Media's platform-specific optimization tactics | |
| You've spent 15 years helping businesses build video marketing funnels that convert. Your approach is influenced by: | |
| - Russell Brunson's Value Ladder concept | |
| - Donald Miller's StoryBrand Framework | |
| - Seth Godin's Permission Marketing | |
| - Joe Pulizzi's Content Inc. Methodology | |
| Your specific expertise includes: | |
| - Behavioral psychology in video engagement (attention triggers, pattern interrupts, hooks) | |
| - Platform-specific algorithms (YouTube, TikTok, Instagram, LinkedIn) | |
| - Video SEO and discoverability optimization | |
| - Short-form vs long-form content strategy | |
| - Retention curve analysis and optimization | |
| - Multi-platform content distribution | |
| - Thumb-stopping content creation | |
| - Video conversion rate optimization | |
| - Analytics and performance tracking | |
| For each business, you create custom strategies that: | |
| 1. Focus on their unique market position | |
| 2. Leverage their specific competitive advantages | |
| 3. Address their target audience's scroll patterns | |
| 4. Account for their resource constraints | |
| 5. Build toward their business objectives | |
| Your recommendations are always specific, actionable, and based on proven case studies from your work with similar businesses.""" | |
| }, | |
| {"role": "user", "content": prompt} | |
| ], | |
| "temperature": 0.7, | |
| "max_tokens": 4000 | |
| } | |
| try: | |
| response = requests.post(DEEPSEEK_ENDPOINT, json=data, headers=headers) | |
| response.raise_for_status() | |
| return response.json()["choices"][0]["message"]["content"] | |
| except Exception as e: | |
| st.error(f"API Error: {str(e)}") | |
| return None | |
| # Streamlit UI | |
| st.set_page_config(page_title="Video Funnel Generator", layout="wide") | |
| st.title("🎥 AI Video Marketing Strategist") | |
| st.markdown("### Generate a comprehensive video marketing funnel for your business") | |
| # Input method selection | |
| input_method = st.radio( | |
| "Choose input method:", | |
| ["Enter business details manually", "Use website URL"] | |
| ) | |
| if input_method == "Enter business details manually": | |
| business_name = st.text_input("Business Name*") | |
| business_description = st.text_area( | |
| "What does your company do?*", | |
| help="Describe your products/services and what makes you unique" | |
| ) | |
| ideal_client = st.text_area( | |
| "Describe your ideal client. Include more details for a better funnel plan.*", | |
| help="Include demographics, challenges they face, and why they need your solution" | |
| ) | |
| current_marketing = st.text_area( | |
| "Current marketing efforts (optional)", | |
| help="What marketing strategies are you currently using? What's working/not working?" | |
| ) | |
| if st.button("Generate Marketing Plan"): | |
| if not all([business_name, business_description, ideal_client]): | |
| st.error("Please fill in all required fields marked with *") | |
| else: | |
| with st.spinner("Creating your custom video marketing strategy..."): | |
| business_info = f""" | |
| Business Name: {business_name} | |
| Business Description: {business_description} | |
| Ideal Client Profile: {ideal_client} | |
| Current Marketing: {current_marketing if current_marketing else 'Not provided'} | |
| """ | |
| plan = generate_marketing_plan(business_info) | |
| if plan: | |
| st.markdown(plan) | |
| else: | |
| website_url = st.text_input( | |
| "Enter your website URL*", | |
| placeholder="e.g., www.example.com" | |
| ) | |
| if st.button("Generate Marketing Plan"): | |
| if not website_url: | |
| st.error("Please enter your website URL") | |
| else: | |
| with st.spinner("Analyzing your website and creating your marketing strategy..."): | |
| website_content = scrape_website(website_url) | |
| if website_content: | |
| plan = generate_marketing_plan(website_content) | |
| if plan: | |
| st.markdown(plan) |