안녕하세요! 오늘은 여러분과 함께 재미있고 유용한 프로젝트를 만들어보려고 해요. YouTube 영상을 자동으로 요약해주는 웹 애플리케이션을 만들어볼 거예요. 어렵게 들릴 수 있지만, 차근차근 따라오시면 여러분도 충분히 만들 수 있답니다! 🌟 이 프로젝트로 무엇을 배우나요? Streamlit으로 간단한 웹 애플리케이션 만들기 YouTube 영상의 자막 가져오기 AI를 이용해 텍스트 요약하기 여러 기술을 조합해 하나의 프로젝트 완성하기 자, 이제 시작해볼까요? 🛠 준비물 우선 필요한 도구들을 준비해봅시다: Python: 우리의 주 프로그래밍 언어예요. 아직 설치하지 않으셨다면, Python 공식 웹사이트에서 다운로드하세요. Streamlit: 웹 애플리케이션을 쉽게 만들 수 있게 해주는 도구예요. youtube_transcript_api: YouTube 영상의 자막을 가져오는 데 사용해요. requests: 인터넷을 통해 데이터를 주고받는 데 필요해요. LaaS API: AI로 텍스트를 요약하는 데 사용할 거예요. LaaS 웹사이트에서 가입하고 API 키를 받아두세요. 📚 단계별 가이드 1단계: 환경 설정하기 먼저, 필요한 라이브러리들을 설치해봅시다. 명령 프롬프트(윈도우) 또는 터미널(맥/리눅스)을 열고 다음 명령어를 입력하세요: pip install streamlit youtube_transcript_api requests 2단계: LaaS API 설정하기 LaaS API를 사용하려면 몇 가지 설정이 필요해요. 보안을 위해 API 키를 안전하게 보관해야 합니다. 프로젝트 폴더에 .streamlit 이라는 이름의 폴더를 만드세요. .streamlit 폴더 안에 secrets.toml 파일을 만들고 다음과 같이 입력하세요: LAAS_API_KEY = "여기에_여러분의_API_키를_넣으세요" API 키가 실수로 공개되지 않도록, .gitignore 파일에 다음 줄을 추가하세요: .streamlit/secrets.toml 3단계: LaaS 프리셋 설정하기 LaaS에서 AI 모델이 어떻게 동작할지 정의해야 해요. 이를 "프리셋"이라고 부릅니다. LaaS 웹사이트에 로그인하세요. 새 프리셋을 만들거나 기존 프리셋을 선택하세요. 프롬프트 입력 창에 다음 내용을 붙여넣으세요: 당신의 임무는 스크립트를 기반으로 YouTube 영상의 주요 콘텐츠를 요약하는 것입니다. 당신의 목표는 영상의 주요 요점과 필수 정보를 포착하는 간결하면서도 포괄적인 요약을 제공하는 것입니다. 다음은 YouTube 영상의 스크립트입니다. <transcript> ${youtube_transcript} </transcript> 내용을 효과적으로 요약하려면 다음 단계를 따르세요. 1. 전체 내용을 주의 깊게 읽습니다. 2. 동영상의 주요 주제나 주제를 파악합니다. 3. 영상에 나오는 핵심 포인트, 중요한 사실, 중심 아이디어를 골라냅니다 4. 주요 아이디어를 뒷받침하는 중요한 사례, 사례 연구 또는 데이터를 찾습니다. 5. 영상에 제시된 결론이나 요점을 메모합니다. 다음 형식으로 요약을 제공하세요. ### 1. 주요 주제 [영상의 전반적인 주제나 주제를 간략하게 서술] ### 2. 핵심 포인트 - [영상에 제시된 주요 아이디어나 주장을 3~5개 나열] ### 3. 지원 정보 - [핵심 사항을 뒷받침하는 2~3개의 중요한 예, 사실 또는 데이터 포인트 포함] ### 4. 결론/요점 [영상의 주요 결론이나 메시지를 1~2문장으로 요약] 가장 중요한 정보에 초점을 맞추고 요약을 간결하게 유지하세요. 동영상 콘텐츠의 본질을 포착하면서 명확성과 간결성을 목표로 하세요. 동영상의 주요 메시지에 크게 기여하지 않는 사소한 세부정보나 지엽적인 정보를 포함하지 마세요. 모델 설정을 다음과 같이 해주세요: 온도(Temperature): 0.4 상위P(Top P): 0.2 설정을 저장하고 코드를 눌러 프리셋 해시값을 복사해두세요. 이 값은 나중에 사용할 거예요. 4단계: 주요 함수 만들기 이제 본격적으로 코드를 작성해볼까요? 먼저 필요한 주요 함수들을 만들어봅시다. YouTube 비디오 ID 추출하기: import re def extract_video_id(url): video_id = re.search(r"(?:v=|\/)([0-9A-Za-z_-]{11}).*", url) return video_id.group(1) if video_id else None 이 함수는 YouTube URL에서 비디오 ID를 찾아내요. 예를 들어, https://www.youtube.com/watch?v=dQw4w9WgXcQ에서 dQw4w9WgXcQ 부분을 추출합니다. YouTube 자막 가져오기: from youtube_transcript_api import YouTubeTranscriptApi import streamlit as st def get_youtube_transcript(video_id): try: transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=("ko", "en")) return " ".join([entry["text"] for entry in transcript]) except Exception as e: st.error(f"자막을 가져오는 데 실패했습니다: {str(e)}") return None 이 함수는 YouTube 영상의 자막을 가져와요. 한국어나 영어 자막을 우선적으로 찾습니다. LaaS API 요청하기: import requests import streamlit as st LAAS_API_URL = "https://api-laas.wanted.co.kr/api/preset/v2/chat/completions" LAAS_API_KEY = st.secrets["LAAS_API_KEY"] LAAS_PROJECT = "여기에_여러분의_PROJECT_ID를_넣으세요" LAAS_HASH = "여기에_여러분의_프리셋_해시를_넣으세요" def make_laas_api_request(text: str) -> str: try: response = requests.post( LAAS_API_URL, headers={"project": LAAS_PROJECT, "apikey": LAAS_API_KEY}, json={"hash": LAAS_HASH, "params": {"youtube_transcript": text}}, ) response.raise_for_status() return response.json()["choices"][0]["message"]["content"].strip() except requests.RequestException as e: st.error(f"요약하는 데 실패했습니다: {str(e)}") return None 이 함수는 LaaS API에 텍스트를 보내고 요약된 결과를 받아와요. 5단계: 메인 애플리케이션 만들기 이제 모든 준비가 끝났어요! 우리의 메인 애플리케이션을 만들어봅시다: import streamlit as st def summarize_youtube_video(url: str) -> None: video_id = extract_video_id(url) if not video_id: st.error("올바른 YouTube URL을 입력해주세요.") return with st.spinner("자막을 다운로드하고 요약하는 중..."): transcript = get_youtube_transcript(video_id) if transcript: summary = make_laas_api_request(transcript) if summary: st.subheader("요약:") st.write(summary) def main(): st.set_page_config(page_title="YouTube Summary", page_icon="📺", layout="centered") st.markdown("# 📺 YouTube Summary") youtube_url = st.text_input( "YouTube URL을 입력하세요:", placeholder="https://www.youtube.com/watch?v=example", help="YouTube 영상의 전체 URL을 입력해주세요.", ) if st.button("요약하기"): if youtube_url: summarize_youtube_video(youtube_url) else: st.warning("YouTube URL을 입력해주세요.") if __name__ == "__main__": main() 이 코드는 우리 애플리케이션의 메인 부분이에요. Streamlit을 사용해 간단한 웹 인터페이스를 만들고, 사용자가 입력한 URL의 영상을 요약합니다. 6단계: 실행하기 모든 준비가 끝났습니다! 이제 애플리케이션을 실행해볼까요? 여러분의 코드를 app.py라는 이름으로 저장하세요. 명령 프롬프트나 터미널을 열고, 코드가 있는 폴더로 이동하세요. 다음 명령어를 입력하세요: streamlit run app.py 웹 브라우저가 자동으로 열리고 여러분의 애플리케이션이 실행될 거예요! 🎉 축하합니다! 여러분은 방금 자신만의 YouTube 영상 요약 애플리케이션을 만들었어요! 이제 YouTube URL을 입력하고 "요약하기" 버튼을 클릭하면 영상 내용이 요약됩니다. 전체 코드는 여기에서 확인할 수 있습니다. 🚀 다음 단계 이 프로젝트를 더 발전시키고 싶다면 다음과 같은 기능을 추가해보는 건 어떨까요? 여러 언어 지원하기 요약 길이 조절 옵션 추가하기 다양한 동영상 플랫폼 지원하기 (예: Vimeo, Dailymotion) 요약 결과를 파일로 저장하는 기능 추가하기 이 프로젝트가 여러분의 프로그래밍 실력 향상에 도움이 되었기를 바랍니다. 계속해서 실험하고, 배우고, 만들어보세요. 여러분의 상상력이 한계예요! 질문이나 문제가 있다면 언제든 댓글로 물어보세요. 함께 해결해보겠습니다. 행운을 빕니다! 🍀 Hits