Automatically Attaching YouTube Video Footers to AI Tutorial Questions: Gemini LLM & YouTube Search Service Integration
Automatically Attaching YouTube Video Footers to Tutorial-Style Questions: An Integration Log of gemini_llm_service & youtube_search_service
I've been developing a feature to automatically attach YouTube video footers to AI tutorial questions. My initial thought was simple: find a YouTube video relevant to the question and display it as a footer.
Attempts and Pitfalls
My first approach was to have gemini_llm_service understand the intent of the question and then use those keywords to search for videos via youtube_search_service. However, this turned out to be harder than I expected.
When questions were a bit ambiguous, gemini_llm_service often extracted irrelevant keywords. For example, for a question like "How to build a website with Python," just searching with the keyword "website" would yield overly general results.
# Initial attempt code (conceptual)
from gemini_llm_service import GeminiLLM
from youtube_search_service import YouTubeSearch
gemini = GeminiLLM()
youtube = YouTubeSearch()
question = "Tell me how to build a simple website with Python"
keywords = gemini.extract_keywords(question) # Problem often occurred here
search_results = youtube.search(keywords)
# ... video footer processing logic ...
During this process, the accuracy of keywords returned by gemini_llm_service was low, repeatedly leading to youtube_search_service failing to find the desired videos. I probably spent about 3 hours just struggling with this part.
The Cause
Ultimately, the problem was that gemini_llm_service wasn't fully grasping the context of the question and was extracting overly general keywords. I realized that especially for tutorial-style questions, it's difficult to find the right video based solely on keywords.
The Solution
So, I modified the prompt to instruct gemini_llm_service to generate more specific search keywords *only* when it clearly identifies the question as a tutorial request. I also implemented additional filtering logic in youtube_search_service to improve the relevance of search results.
# Modified prompt example (inside gemini_llm_service)
prompt = f"""
You are an AI assistant that helps users find relevant YouTube tutorials.
Given the following user question, extract specific keywords that would be ideal for searching YouTube for a tutorial.
Focus on the core topic and any specific technologies or methods mentioned.
If the question is clearly a request for a tutorial, be more specific in your keyword extraction.
User Question: "{user_question}"
Keywords:
"""
# Added logic in youtube_search_service for filtering highly relevant videos (conceptual)
def search_and_filter_tutorials(query):
results = youtube_search_service.search(query)
# Logic to filter results more suitable for tutorial videos (e.g., video length, channel info)
filtered_results = [video for video in results if is_likely_tutorial(video)]
return filtered_results
def is_likely_tutorial(video):
# Simple heuristic: title includes 'tutorial', 'how to', 'guide', or
# description has many relevant keywords, or video length is appropriate.
title = video.get('title', '').lower()
description = video.get('description', '').lower()
duration = video.get('duration_seconds', 0)
if any(keyword in title for keyword in ['tutorial', 'how to', 'guide']):
return True
if 'python' in description and 'web development' in description: # Example
return True
if 300 < duration < 3600: # Videos between 5 minutes and 1 hour
return True
return False
By integrating gemini_llm_service and youtube_search_service more closely and adjusting the logic to suit each service's characteristics, the system started working much more stably.
Results
- Successfully implemented the feature to automatically attach YouTube video footers for tutorial-style questions.
- Secured efficient search results through the integration of
gemini_llm_serviceandyoutube_search_service. - Able to recommend highly relevant YouTube videos by better understanding the context of user questions.
Takeaways — To Avoid the Same Pitfalls
- [ ] When extracting keywords from LLM services, design prompts that thoroughly consider the 'context' and 'intent' of the question.
- [ ] For specific types of questions, like tutorial requests, strengthen the keyword generation logic to match that type.
- [ ] Consider additional filtering logic to increase the 'relevance' of results returned by search services.
- [ ] When integrating two or more services, understand the strengths and weaknesses of each service and design complementary logic.