Files
ALwrity/lib/ai_marketing_tools/backlinking_ui_streamlit.py

61 lines
2.3 KiB
Python

import streamlit as st
import pandas as pd
from st_aggrid import AgGrid, GridOptionsBuilder, GridUpdateMode
from lib.ai_marketing_tools.ai_backlinking import find_backlink_opportunities, compose_personalized_email
# Streamlit UI function
def backlinking_ui():
st.title("AI Backlinking Tool")
# Step 1: Get user inputs
keyword = st.text_input("Enter a keyword", value="technology")
# Step 2: Generate backlink opportunities
if st.button("Find Backlink Opportunities"):
if keyword:
backlink_opportunities = find_backlink_opportunities(keyword)
# Convert results to a DataFrame for display
df = pd.DataFrame(backlink_opportunities)
# Create a selectable table using st-aggrid
gb = GridOptionsBuilder.from_dataframe(df)
gb.configure_selection('multiple', use_checkbox=True, groupSelectsChildren=True)
gridOptions = gb.build()
grid_response = AgGrid(
df,
gridOptions=gridOptions,
update_mode=GridUpdateMode.SELECTION_CHANGED,
height=200,
width='100%'
)
selected_rows = grid_response['selected_rows']
if selected_rows:
st.write("Selected Opportunities:")
st.table(pd.DataFrame(selected_rows))
# Step 3: Option to generate personalized emails for selected opportunities
if st.button("Generate Emails for Selected Opportunities"):
user_proposal = {
"user_name": st.text_input("Your Name", value="John Doe"),
"user_email": st.text_input("Your Email", value="john@example.com")
}
emails = []
for selected in selected_rows:
insights = f"Insights based on content from {selected['url']}."
email = compose_personalized_email(selected, insights, user_proposal)
emails.append(email)
st.subheader("Generated Emails:")
for email in emails:
st.write(email)
st.markdown("---")
else:
st.error("Please enter a keyword.")