AI Content planning and competitor analysis.

Tight integration with Alwrity, tavily and metaphor.
This commit is contained in:
ajaysi
2025-04-06 17:20:38 +05:30
committed by ي
parent 2cf01daf57
commit da1f06928e

View File

@@ -40,8 +40,6 @@ def get_metaphor_client():
""" """
METAPHOR_API_KEY = os.environ.get('METAPHOR_API_KEY') METAPHOR_API_KEY = os.environ.get('METAPHOR_API_KEY')
if not METAPHOR_API_KEY: if not METAPHOR_API_KEY:
logger.error("METAPHOR_API_KEY environment variable not set!")
st.error("METAPHOR_API_KEY environment variable not set!")
logger.error("METAPHOR_API_KEY environment variable not set!") logger.error("METAPHOR_API_KEY environment variable not set!")
st.error("METAPHOR_API_KEY environment variable not set!") st.error("METAPHOR_API_KEY environment variable not set!")
raise ValueError("METAPHOR_API_KEY environment variable not set!") raise ValueError("METAPHOR_API_KEY environment variable not set!")
@@ -50,6 +48,7 @@ def get_metaphor_client():
def metaphor_rag_search(): def metaphor_rag_search():
""" Mainly used for researching blog sections. """ """ Mainly used for researching blog sections. """
# FIXME: Implement this.
metaphor = get_metaphor_client() metaphor = get_metaphor_client()
query = "blog research" # Example query, this can be parameterized as needed query = "blog research" # Example query, this can be parameterized as needed
results = metaphor.search(query) results = metaphor.search(query)
@@ -66,6 +65,7 @@ def metaphor_rag_search():
st.write(processed_results) st.write(processed_results)
return processed_results return processed_results
def metaphor_find_similar(similar_url, usecase, num_results=5, start_published_date=None, end_published_date=None, def metaphor_find_similar(similar_url, usecase, num_results=5, start_published_date=None, end_published_date=None,
include_domains=None, exclude_domains=None, include_text=None, exclude_text=None, include_domains=None, exclude_domains=None, include_text=None, exclude_text=None,
summary_query=None): summary_query=None):
@@ -82,19 +82,8 @@ def metaphor_find_similar(similar_url, usecase, num_results=5, start_published_d
include_text (str): Text that must be included in the results. include_text (str): Text that must be included in the results.
exclude_text (str): Text that must be excluded from the results. exclude_text (str): Text that must be excluded from the results.
summary_query (dict): Custom query for summarization. summary_query (dict): Custom query for summarization.
similar_url (str): The URL to find similar content.
usecase (str): The use case for the search (e.g., "similar companies", "listicles").
num_results (int): Number of results to return (default: 5).
start_published_date (str): Start date for filtering results in ISO format.
end_published_date (str): End date for filtering results in ISO format.
include_domains (list): List of domains to include in the search.
exclude_domains (list): List of domains to exclude from the search.
include_text (str): Text that must be included in the results.
exclude_text (str): Text that must be excluded from the results.
summary_query (dict): Custom query for summarization.
Returns: Returns:
tuple: (DataFrame, MetaphorResponse) - The DataFrame contains the results and the MetaphorResponse contains the raw API response. tuple: (DataFrame, MetaphorResponse) - The DataFrame contains the results and the MetaphorResponse contains the raw API response.
tuple: (DataFrame, MetaphorResponse) - The DataFrame contains the results and the MetaphorResponse contains the raw API response.
""" """
metaphor = get_metaphor_client() metaphor = get_metaphor_client()
try: try:
@@ -106,39 +95,6 @@ def metaphor_find_similar(similar_url, usecase, num_results=5, start_published_d
"num_results": num_results, "num_results": num_results,
} }
# Add date parameters if provided
if start_published_date:
search_params["start_published_date"] = start_published_date
if end_published_date:
search_params["end_published_date"] = end_published_date
# Add domain filters if provided
if include_domains:
search_params["include_domains"] = include_domains
if exclude_domains:
search_params["exclude_domains"] = exclude_domains
# Add text filters if provided
if include_text:
search_params["include_text"] = include_text
if exclude_text:
search_params["exclude_text"] = exclude_text
# Add summary query if provided
if summary_query:
search_params["summary"] = summary_query
else:
# Default summary query based on usecase
search_params["summary"] = {"query": f"Find {usecase} similar to the given URL."}
# Execute the search
# Prepare search parameters
search_params = {
"highlights": True,
"num_results": num_results,
}
# Add date parameters if provided # Add date parameters if provided
if start_published_date: if start_published_date:
search_params["start_published_date"] = start_published_date search_params["start_published_date"] = start_published_date
@@ -169,8 +125,6 @@ def metaphor_find_similar(similar_url, usecase, num_results=5, start_published_d
similar_url, similar_url,
**search_params **search_params
) )
**search_params
)
except Exception as e: except Exception as e:
logger.error(f"Metaphor: Error in finding similar content: {e}") logger.error(f"Metaphor: Error in finding similar content: {e}")
raise raise
@@ -248,9 +202,6 @@ def metaphor_find_similar(similar_url, usecase, num_results=5, start_published_d
# Return the DataFrame and the search response # Return the DataFrame and the search response
return df, search_response return df, search_response
# Return the DataFrame and the search response
return df, search_response
def calculate_date_range(time_range: str) -> tuple: def calculate_date_range(time_range: str) -> tuple:
""" """