LinkedIn AI Writer features like carousel, video script, and comment response generator
This commit is contained in:
544
lib/ai_writers/linkedin_writer/linkedin_ai_writer.py
Normal file
544
lib/ai_writers/linkedin_writer/linkedin_ai_writer.py
Normal file
@@ -0,0 +1,544 @@
|
||||
"""
|
||||
LinkedIn AI Writer
|
||||
|
||||
This module provides a comprehensive suite of tools for generating LinkedIn content.
|
||||
"""
|
||||
|
||||
import time
|
||||
import os
|
||||
import json
|
||||
import requests
|
||||
import streamlit as st
|
||||
import importlib
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from typing import Dict, List, Optional, Union
|
||||
from loguru import logger
|
||||
|
||||
# Import AI text generation
|
||||
from ...gpt_providers.text_generation.main_text_generation import llm_text_gen
|
||||
|
||||
# Import web research tools
|
||||
from ...ai_web_researcher.gpt_online_researcher import do_google_serp_search
|
||||
from ...ai_web_researcher.metaphor_basic_neural_web_search import metaphor_search_articles, streamlit_display_metaphor_results
|
||||
from ...ai_web_researcher.tavily_ai_search import do_tavily_ai_search, streamlit_display_results
|
||||
|
||||
# Import LinkedIn content generators
|
||||
from .modules.post_generator.linkedin_post_generator import linkedin_post_generator_ui
|
||||
from .modules.article_generator.linkedin_article_generator import linkedin_article_generator_ui
|
||||
from .modules.carousel_generator.linkedin_carousel_generator import linkedin_carousel_generator_ui
|
||||
from .modules.video_script_generator.linkedin_video_script_generator import linkedin_video_script_generator_ui
|
||||
|
||||
# Import image generation
|
||||
from ...gpt_providers.text_to_image_generation.main_generate_image_from_prompt import generate_image
|
||||
|
||||
|
||||
def linkedin_main_menu():
|
||||
"""Main function for the LinkedIn AI Writer."""
|
||||
|
||||
# Initialize session state for selected tool if it doesn't exist
|
||||
if "selected_tool" not in st.session_state:
|
||||
st.session_state.selected_tool = None
|
||||
|
||||
# Define the LinkedIn tools with their details
|
||||
linkedin_tools = [
|
||||
# Content Creation Tools
|
||||
{
|
||||
"name": "LinkedIn Post Generator",
|
||||
"icon": "📝",
|
||||
"description": "Create engaging, professional posts that drive engagement and establish thought leadership.",
|
||||
"color": "#0A66C2", # LinkedIn blue
|
||||
"category": "Content Creation",
|
||||
"function": linkedin_post_generator_ui,
|
||||
"status": "active",
|
||||
"features": [
|
||||
"Professional tone customization",
|
||||
"Industry-specific terminology",
|
||||
"Hashtag optimization",
|
||||
"Formatting options",
|
||||
"Character count optimization",
|
||||
"Call-to-action suggestions",
|
||||
"Engagement prediction",
|
||||
"Visual content recommendations",
|
||||
"Poll creation",
|
||||
"Best posting time suggestions",
|
||||
"Research-backed content",
|
||||
"Reference tracking"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Article Generator",
|
||||
"icon": "📄",
|
||||
"description": "Generate long-form professional articles that showcase expertise and drive traffic.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Content Creation",
|
||||
"function": linkedin_article_generator_ui,
|
||||
"status": "active",
|
||||
"features": [
|
||||
"Topic research and outline generation",
|
||||
"SEO optimization for LinkedIn articles",
|
||||
"Professional writing style adaptation",
|
||||
"Section structuring",
|
||||
"Citation and reference formatting",
|
||||
"Image placement suggestions",
|
||||
"Headline optimization",
|
||||
"Meta description generation",
|
||||
"Reading time estimation",
|
||||
"Internal linking suggestions",
|
||||
"Multiple research sources (Metaphor, Google, Tavily)",
|
||||
"AI-generated section images"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Carousel Post Generator",
|
||||
"icon": "🔄",
|
||||
"description": "Create engaging carousel posts that showcase information in a visually appealing way.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Content Creation",
|
||||
"function": linkedin_carousel_generator_ui,
|
||||
"status": "active",
|
||||
"features": [
|
||||
"Slide content generation",
|
||||
"Visual hierarchy optimization",
|
||||
"Story arc development",
|
||||
"Call-to-action placement",
|
||||
"Brand consistency maintenance",
|
||||
"Engagement element integration",
|
||||
"Professional design suggestions",
|
||||
"Content distribution strategy",
|
||||
"Analytics integration",
|
||||
"A/B testing variations"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Video Script Generator",
|
||||
"icon": "🎥",
|
||||
"description": "Create scripts for LinkedIn videos that drive engagement.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Content Creation",
|
||||
"function": linkedin_video_script_generator_ui,
|
||||
"status": "active",
|
||||
"features": [
|
||||
"Hook generation",
|
||||
"Story structure development",
|
||||
"Professional speaking points",
|
||||
"Visual cue suggestions",
|
||||
"Call-to-action optimization",
|
||||
"Engagement prompt integration",
|
||||
"Caption generation",
|
||||
"Thumbnail text suggestions",
|
||||
"Video description optimization",
|
||||
"Hashtag strategy"
|
||||
]
|
||||
},
|
||||
|
||||
# Profile & Personal Branding Tools
|
||||
{
|
||||
"name": "LinkedIn Profile Optimizer",
|
||||
"icon": "👤",
|
||||
"description": "Enhance LinkedIn profiles to improve visibility and professional appeal.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Profile & Personal Branding",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Headline optimization",
|
||||
"About section generation",
|
||||
"Experience description enhancement",
|
||||
"Skills recommendation",
|
||||
"Project highlight creation",
|
||||
"Endorsement request generation",
|
||||
"Profile strength analysis",
|
||||
"Keyword optimization",
|
||||
"Professional summary generation",
|
||||
"Custom URL suggestions"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Poll Generator",
|
||||
"icon": "📊",
|
||||
"description": "Create engaging polls that drive interaction and gather insights.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Profile & Personal Branding",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Question formulation optimization",
|
||||
"Option generation based on topic",
|
||||
"Industry-specific poll templates",
|
||||
"Engagement prediction",
|
||||
"Result analysis suggestions",
|
||||
"Follow-up content recommendations",
|
||||
"Trending topic integration",
|
||||
"Professional tone maintenance",
|
||||
"Data visualization suggestions",
|
||||
"Poll scheduling optimization"
|
||||
]
|
||||
},
|
||||
|
||||
# Business & Marketing Tools
|
||||
{
|
||||
"name": "LinkedIn Company Page Content Generator",
|
||||
"icon": "🏢",
|
||||
"description": "Create content for company pages that builds brand awareness and engagement.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Business & Marketing",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Company culture post generation",
|
||||
"Product/service announcement templates",
|
||||
"Employee spotlight content",
|
||||
"Company milestone celebrations",
|
||||
"Industry insights sharing",
|
||||
"Event promotion content",
|
||||
"Job posting templates",
|
||||
"Company news updates",
|
||||
"Brand voice consistency",
|
||||
"Engagement metrics optimization"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Newsletter Generator",
|
||||
"icon": "📰",
|
||||
"description": "Create professional newsletters that establish thought leadership and drive engagement.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Business & Marketing",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Newsletter structure templates",
|
||||
"Topic clustering and organization",
|
||||
"Professional introduction and conclusion",
|
||||
"Industry trend analysis integration",
|
||||
"Expert quote suggestions",
|
||||
"Visual content recommendations",
|
||||
"Call-to-action optimization",
|
||||
"Subscriber engagement prompts",
|
||||
"Consistency maintenance",
|
||||
"Analytics integration suggestions"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Job Description Generator",
|
||||
"icon": "💼",
|
||||
"description": "Create compelling job descriptions that attract qualified candidates.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Business & Marketing",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Role-specific templates",
|
||||
"Skills and qualifications optimization",
|
||||
"Company culture integration",
|
||||
"Benefits and perks highlighting",
|
||||
"Inclusive language checker",
|
||||
"Keyword optimization",
|
||||
"Application process clarity",
|
||||
"Remote/hybrid work policy integration",
|
||||
"Diversity and inclusion statements",
|
||||
"A/B testing variations"
|
||||
]
|
||||
},
|
||||
|
||||
# Sales & Networking Tools
|
||||
{
|
||||
"name": "LinkedIn Sales Navigator Content Generator",
|
||||
"icon": "💰",
|
||||
"description": "Create personalized outreach content for sales professionals.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Sales & Networking",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Prospect research integration",
|
||||
"Industry-specific messaging",
|
||||
"Personalization tokens",
|
||||
"Connection request templates",
|
||||
"Follow-up message sequences",
|
||||
"Value proposition highlighting",
|
||||
"Objection handling responses",
|
||||
"Meeting request templates",
|
||||
"Industry pain point addressing",
|
||||
"ROI demonstration content"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn InMail Generator",
|
||||
"icon": "✉️",
|
||||
"description": "Create personalized and effective InMail messages.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Sales & Networking",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Prospect research integration",
|
||||
"Personalization token usage",
|
||||
"Value proposition highlighting",
|
||||
"Call-to-action optimization",
|
||||
"Follow-up sequence generation",
|
||||
"Objection handling preparation",
|
||||
"Industry-specific messaging",
|
||||
"A/B testing variations",
|
||||
"Compliance checking",
|
||||
"Engagement tracking suggestions"
|
||||
]
|
||||
},
|
||||
|
||||
# Learning & Education Tools
|
||||
{
|
||||
"name": "LinkedIn Learning Course Description Generator",
|
||||
"icon": "📚",
|
||||
"description": "Create compelling descriptions for LinkedIn Learning courses.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Learning & Education",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Course objective optimization",
|
||||
"Learning outcome generation",
|
||||
"Prerequisite suggestions",
|
||||
"Target audience definition",
|
||||
"Skill tag recommendations",
|
||||
"Course structure outline",
|
||||
"Engagement element suggestions",
|
||||
"Completion certificate highlighting",
|
||||
"Industry relevance emphasis",
|
||||
"Career path integration"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Event Description Generator",
|
||||
"icon": "📅",
|
||||
"description": "Create compelling event descriptions that drive attendance and engagement.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Learning & Education",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Event objective highlighting",
|
||||
"Speaker bio generation",
|
||||
"Agenda formatting",
|
||||
"Registration incentive suggestions",
|
||||
"Networking opportunity emphasis",
|
||||
"Industry relevance integration",
|
||||
"Visual content recommendations",
|
||||
"Engagement element suggestions",
|
||||
"Post-event follow-up content",
|
||||
"Attendance tracking integration"
|
||||
]
|
||||
},
|
||||
|
||||
# Community & Engagement Tools
|
||||
{
|
||||
"name": "LinkedIn Group Post Generator",
|
||||
"icon": "👥",
|
||||
"description": "Create content specifically optimized for LinkedIn Groups.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Community & Engagement",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Group-specific content adaptation",
|
||||
"Discussion prompt generation",
|
||||
"Community guideline compliance",
|
||||
"Engagement optimization",
|
||||
"Moderation suggestion",
|
||||
"Topic relevance checking",
|
||||
"Member value highlighting",
|
||||
"Cross-promotion opportunities",
|
||||
"Group culture adaptation",
|
||||
"Content scheduling"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LinkedIn Comment Response Generator",
|
||||
"icon": "💬",
|
||||
"description": "Create professional and engaging responses to comments on LinkedIn posts.",
|
||||
"color": "#0A66C2",
|
||||
"category": "Community & Engagement",
|
||||
"function": None,
|
||||
"status": "coming_soon",
|
||||
"features": [
|
||||
"Tone adaptation based on comment",
|
||||
"Professional disagreement handling",
|
||||
"Question answering optimization",
|
||||
"Engagement continuation prompts",
|
||||
"Value-add response generation",
|
||||
"Community building suggestions",
|
||||
"Moderation guidance",
|
||||
"Follow-up question generation",
|
||||
"Resource sharing suggestions",
|
||||
"Relationship building strategies"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
# Create a container for the dashboard
|
||||
dashboard_container = st.container()
|
||||
|
||||
# Create a container for the tool input section
|
||||
tool_container = st.container()
|
||||
|
||||
# If a tool is selected, show its input section
|
||||
if st.session_state.selected_tool is not None:
|
||||
with tool_container:
|
||||
# Add a back button at the top
|
||||
if st.button("← Back to Dashboard", key="back_to_dashboard"):
|
||||
st.session_state.selected_tool = None
|
||||
st.rerun()
|
||||
|
||||
# Display the tool header with card layout
|
||||
st.markdown(f"""
|
||||
<div style='
|
||||
background: linear-gradient(145deg, #ffffff 0%, #f0f7ff 50%, #e6f0ff 100%);
|
||||
padding: 2.5rem;
|
||||
border-radius: 16px;
|
||||
box-shadow: 0 10px 25px rgba(10, 102, 194, 0.08);
|
||||
margin: 1rem 0 2.5rem 0;
|
||||
border: 1px solid rgba(10, 102, 194, 0.1);
|
||||
'>
|
||||
<div style='
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
padding: 1rem 1.5rem;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 15px rgba(10, 102, 194, 0.05);
|
||||
'>
|
||||
<div style='
|
||||
font-size: 2.5rem;
|
||||
margin-right: 1rem;
|
||||
color: #0A66C2;
|
||||
'>{st.session_state.selected_tool['icon']}</div>
|
||||
<div>
|
||||
<h1 style='
|
||||
margin: 0;
|
||||
color: #0A66C2;
|
||||
font-size: 2.2rem;
|
||||
font-weight: 600;
|
||||
'>{st.session_state.selected_tool['name']}</h1>
|
||||
<p style='
|
||||
color: #666;
|
||||
margin: 0.5rem 0 0 0;
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.5;
|
||||
'>{st.session_state.selected_tool['description']}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
""", unsafe_allow_html=True)
|
||||
|
||||
# Call the tool's function if it exists
|
||||
if st.session_state.selected_tool["function"] is not None:
|
||||
st.session_state.selected_tool["function"]()
|
||||
else:
|
||||
# Display coming soon information
|
||||
st.info(f"**{st.session_state.selected_tool['status'].replace('_', ' ').title()}!**")
|
||||
st.write(st.session_state.selected_tool["description"])
|
||||
|
||||
# Display features
|
||||
st.subheader("Features")
|
||||
for feature in st.session_state.selected_tool["features"]:
|
||||
st.markdown(f"- {feature}")
|
||||
|
||||
# Display placeholder image
|
||||
st.image(f"https://via.placeholder.com/600x300?text={st.session_state.selected_tool['name']}+Coming+Soon", use_container_width=True)
|
||||
else:
|
||||
with dashboard_container:
|
||||
# Display the dashboard
|
||||
# Header
|
||||
st.markdown("""
|
||||
<div style='background-color: #f0f2f6; padding: 10px; border-radius: 5px; margin-bottom: 10px;'>
|
||||
<h1 style='color: #0A66C2; text-align: center;'>💼 LinkedIn AI Writer</h1>
|
||||
<p style='text-align: center;'>Generate professional LinkedIn content with ALwrity's AI-powered tools</p>
|
||||
</div>
|
||||
""", unsafe_allow_html=True)
|
||||
|
||||
# Group tools by category
|
||||
categories = {}
|
||||
for tool in linkedin_tools:
|
||||
category = tool["category"]
|
||||
if category not in categories:
|
||||
categories[category] = []
|
||||
categories[category].append(tool)
|
||||
|
||||
# Display tools by category
|
||||
for category, tools in categories.items():
|
||||
st.markdown(f"## {category}")
|
||||
|
||||
# Create a 3-column layout for the tool cards
|
||||
cols = st.columns(3)
|
||||
|
||||
# Display the tool cards
|
||||
for i, tool in enumerate(tools):
|
||||
# Determine which column to use
|
||||
col = cols[i % 3]
|
||||
|
||||
with col:
|
||||
# Create a card for each tool
|
||||
status_badge = ""
|
||||
if tool["status"] == "coming_soon":
|
||||
status_badge = "<span style='background-color: #FFA500; color: white; padding: 2px 8px; border-radius: 10px; font-size: 0.8em;'>Coming Soon</span>"
|
||||
elif tool["status"] == "future":
|
||||
status_badge = "<span style='background-color: #808080; color: white; padding: 2px 8px; border-radius: 10px; font-size: 0.8em;'>Future</span>"
|
||||
elif tool["status"] == "active":
|
||||
status_badge = "<span style='background-color: #4CAF50; color: white; padding: 2px 8px; border-radius: 10px; font-size: 0.8em;'>Active</span>"
|
||||
|
||||
st.markdown(f"""
|
||||
<div style='background-color: {tool["color"]}; padding: 20px; border-radius: 10px; margin-bottom: 20px; color: white;'>
|
||||
<h2 style='color: white;'>{tool["icon"]} {tool["name"]} {status_badge}</h2>
|
||||
<p>{tool["description"]}</p>
|
||||
</div>
|
||||
""", unsafe_allow_html=True)
|
||||
|
||||
# Add a button to access the tool
|
||||
if st.button(f"Use {tool['name']}", key=f"btn_{tool['name']}"):
|
||||
# Store the selected tool in session state
|
||||
st.session_state.selected_tool = tool
|
||||
st.rerun()
|
||||
|
||||
|
||||
class LinkedInAIWriter:
|
||||
"""
|
||||
AI-powered content generator for LinkedIn marketing and communication.
|
||||
|
||||
This class provides various tools for generating LinkedIn content including:
|
||||
- Posts and articles
|
||||
- Profile optimization
|
||||
- Company page content
|
||||
- Sales and networking content
|
||||
- Learning and education content
|
||||
- Community and engagement content
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
"""Initialize the LinkedIn AI Writer."""
|
||||
pass
|
||||
|
||||
# Methods will be implemented in future iterations
|
||||
# Each method will correspond to a specific LinkedIn content generation tool
|
||||
|
||||
|
||||
# List of available tools
|
||||
AVAILABLE_TOOLS = [
|
||||
'Post Generator',
|
||||
'Article Generator',
|
||||
'Carousel Post Generator',
|
||||
'Video Script Generator',
|
||||
'Profile Optimizer',
|
||||
'Poll Generator',
|
||||
'Company Page Content Generator',
|
||||
'Newsletter Generator',
|
||||
'Job Description Generator',
|
||||
'Sales Navigator Content Generator',
|
||||
'InMail Generator',
|
||||
'Learning Course Description Generator',
|
||||
'Event Description Generator',
|
||||
'Group Post Generator',
|
||||
'Comment Response Generator'
|
||||
]
|
||||
|
||||
if __name__ == "__main__":
|
||||
linkedin_main_menu()
|
||||
Reference in New Issue
Block a user