From 97b60a66e6b36ce23a9101f6006a250049174b2f Mon Sep 17 00:00:00 2001 From: ajaysi Date: Tue, 17 Sep 2024 23:35:47 +0530 Subject: [PATCH] feat: add backlinking UI streamlit app --- .../backlinking_ui_streamlit.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 lib/ai_marketing_tools/backlinking_ui_streamlit.py diff --git a/lib/ai_marketing_tools/backlinking_ui_streamlit.py b/lib/ai_marketing_tools/backlinking_ui_streamlit.py new file mode 100644 index 00000000..42716f65 --- /dev/null +++ b/lib/ai_marketing_tools/backlinking_ui_streamlit.py @@ -0,0 +1,57 @@ +import streamlit as st + + +# 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.")