본문 바로가기

파이썬

마크다운 이미지가 전부 엑스박스로? 깃허브 이미지 호스팅 실패와 뼈아픈 교훈 마크다운 이미지가 전부 엑스박스로? 깃허브 이미지 호스팅 실패와 뼈아픈 교훈안녕하세요. 파이선생 AI 자동화랩의 파이선생입니다.최근 파이선생 AI 자동화랩의 가장 큰 목표였던 '블로그 자동 발행 파이프라인'을 만들면서, 저를 마지막까지 괴롭힌 문제가 하나 있었습니다. 바로 본문 안에 이미지를 넣는 작업이었습니다. 기술 블로그 특성상 텍스트만으로는 한계가 있어서 썸네일이나 에러 화면 캡처가 꼭 필요한데, 제 PC에서 마크다운 에디터로 글을 쓸 때는 이미지가 아주 잘 보였습니다. 그래서 파이썬 자동화 봇이 이 글을 복사해서 티스토리에 붙여넣기만 하면 당연히 이미지도 함께 올라갈 것이라고 막연하게 생각했죠.이처럼 로컬 에디터에서 정상적으로 보이는 이미지가, 실제 블로그에 업로드된 후에는 왜 엑스박스로 출력되는.. 더보기
AI가 자꾸 기억을 잃어버린다: mem0 도입과 기억 상실 해결기 AI가 자꾸 기억을 잃어버린다: mem0 도입과 기억 상실 해결기AI 서비스에 장기 기억을 부여하려다 예상치 못한 기억 혼동 버그를 마주쳤다. mem0 라이브러리를 도입해 유저 데이터를 저장하는 코드는 동작했지만, AI는 저장된 기억을 업데이트하지 못하고 서로 충돌하는 정보를 동시에 물고 수습없는 답변을 내놓았다. 원인과 해결에 이르는 과정을 기록한다.Mem0 라이브러리를 활용하여 AI 에이전트의 단기/장기 메모리를 관리하는 코드 스니펫위 화면은 mem0가 검색한 과거 기억 중 상충하는 두 기억("1년 전 피자 좋아함"vs"어제부터 다이어트 시작이라고 함")이 LLM에 동시에 주입된 비정상 응답의 예시다. 답이 엉뚱하게 돌아가는 이유가 한 문장으로 설명된다."어제 한 말을 오늘 또 물어보네요."인공지능 .. 더보기
자동화 블로그의 첫 수익화 세팅, 그리고 처참한 실패와 복구 기록 자동화 블로그의 첫 수익화 세팅, 그리고 처참한 실패와 복구 기록블로그 자동화 파이프라인에 애드센스 수익화를 붙이려다 검색 엔진 페널티를 맞은 경험과 복구 과정을 담았다.청구서가 쏘아 올린 수익화의 꿈자동화 파이프라인이 안정화되면서 검색 엔진에 인덱싱되는 글이 하루가 다르게 늘어났다. 구글 서치 콘솔의 그래프가 아름다운 우상향을 그리는 것을 보며 성취감에 젖어 있던 것도 잠시, 현실적인 문제가 수면 위로 떠올랐다. 바로 매달 청구되는 클라우드 서버 비용과 API 사용료였다. 트래픽이 늘어날수록 유지 유지비용도 정비례해서 증가하고 있었다.이제는 이 자동화 시스템이 스스로 제 밥값을 벌어오게 만들어야 할 타이밍이었다. 그동안 구축해 둔 파이프라인에 구글 애드센스(AdSense) 광고와 제휴 마케팅 링크를 자.. 더보기
유튜브 모니터링 텔레그램 알림 봇, 중복 메시지 폭탄을 해결하기까지 유튜브 모니터링 텔레그램 알림 봇, 중복 메시지 폭탄을 해결하기까지매일 아침 반복되는 리서치 업무를 코드로 해결하려던 시도와, 그 과정에서 겪은 에러 해결기를 정리했다.유튜브 API 연동 코드 작업 화면위 화면은 텔레그램 봇이 유튜브 새 영상을 확인하고 전송하도록 짜인 초기 파이썬 코드다. 이 코드는 정상적으로 작동하는 것처럼 보였지만, 곧 서버에 치명적인 문제를 일으켰다.💡 발단: 매일 아침 30분, 반복 업무를 없애고 싶었다사업을 운영하다 보면 업계 트렌드를 기민하게 파악하는 것이 필요적입니다. 저 역시 매일 아침 업무 시작 전, 유튜브에 핵심 키워드를 검색해 경쟁사 동향과 신기술 트렌드를 파악하는 것이 중요한 일과였습니다. 방대한 정보가 모이는 유튜브는 훌륭한 리서치 채널이었기 때문입니다.하지만 .. 더보기
파이썬만으로 프론트엔드 만들기: 스트림릿(Streamlit) 도입 고군분투기 파이썬만으로 프론트엔드 만들기: 스트림릿(Streamlit) 도입 고군분투기파이썬 스크립트를 웹으로 쉽게 변환할 수 있다는 스트림릿의 장점 이면에는 상태 관리라는 독특한 패러다임이 숨어 있었다. 이를 이해하지 못해 겪은 무한 새로고침의 늪과 해결 과정을 정리한다.위 화면은 스트림릿으로 구현한 초기 웹 애플리케이션에서 상호작용 시 값이 초기화되는 현상을 캡처한 것이다. 버튼을 누를 때마다 화면이 초기화되는 이 오류는, 스트림릿의 렌더링 구조를 훌륭하게 이해하기 전까지 나를 끊임없이 괴롭혔다.터미널의 벽을 허물기 위한 선택최근 사내 업무 효율화를 위해 데이터 처리용 파이썬 스크립트를 여러 개 작성했다. 터미널 환경에 익숙한 개발자에게는 그저 명령어 한 줄이면 끝날 일이었지만, 비개발 직군 팀원들에게 까만 콘.. 더보기
파이썬 MoviePy 영상 자동 렌더링 시도와 메모리 누수 극복기 파이썬 MoviePy 영상 자동 렌더링 시도와 메모리 누수 극복기사업을 운영하다 보면 필연적으로 '콘텐츠 생산의 늪'에 빠지는 순간이 옵니다. 특히 최근 마케팅 트렌드에서는 고객의 이름이나 특정 정보만 살짝 바꾼 '맞춤형 숏폼 영상'이 대량으로 필요했습니다.처음에는 영상 편집 프로그램을 켜서 텍스트 레이어를 일일이 수정하고 렌더링 버튼을 누르는 수작업을 반복했습니다. 하지만 작업량이 10개, 20개를 넘어가자 확신이 들었습니다. "이건 인간이 할 짓이 아니다."결국 저는 이 지루한 반복 작업을 코드로 자동화하기로 결심했습니다. 파이썬(Python) 생태계에서 영상 처리로 유명한 MoviePy 라이브러리를 무기 삼아, 나만의 영상 생성 파이프라인 구축에 나섰습니다.1. 코드 몇 줄의 마법, 그리고 섣부른 .. 더보기
텔레그램 봇으로 일일 보고 시스템을 만들며 겪은 API의 매운맛 텔레그램 봇으로 일일 보고 시스템을 만들며 겪은 API의 매운맛텔레그램 봇 API를 활용해 매일 아침 자동으로 서비스 현황을 보고받는 시스템을 구축하려 했다. 그런데 메시지가 오지 않거나, 5번씩 중복으로 쏟아지거나, 텍스트가 외계어로 깨지는 문제가 연속으로 터졌다. 텔레그램 API의 3가지 숨겨진 함정을 직접 뚫어본 기록이다.이러한 문제들을 해결하기 위해 처음 작성했던 파이썬 코드의 일부를 살펴보면 그 원인을 짐작할 수 있다.위 화면은 텔레그램 봇이 서비스 일일 현황 데이터를 전송하는 코드 작업 화면이다. 이 코드는 완성 직후 서버에 올렸을 때 메시지가 오지 않거나, 반대로 동일한 메시지가 연달아 5번 쏟아지는 예상치 못한 문제를 일으켰다. 보기엔 단순한 API 연동 코드지만, 메시지 길이 제한·Rat.. 더보기
크롬 드라이버 버전 오류와의 전쟁, 웹드라이버 매니저로 마침표를 찍다 크롬 드라이버 버전 오류와의 전쟁, 웹드라이버 매니저로 마침표를 찍다크롬 브라우저가 자동 업데이트되면서 셀레늄 자동화 봇이 갑자기 먹통이 된 경험을 기록한다. SessionNotCreatedException 에러가 반복되는 이유를 찾는 데만 이틀이 걸렸고, 해결책은 단 한 줄의 라이브러리 교체였다.위 화면은 크롬 브라우저 자동 업데이트 이후 셀레늄 스크립트를 실행한 순간의 터미널 로그다. SessionNotCreatedException과 함께 "This version of ChromeDriver only supports Chrome version..."이라는 메시지가 붉게 도배된 화면은, 지금껏 정상 작동하던 자동화 봇이 하루아침에 멈췄다는 것을 의미한다. 하드코딩된 드라이버 파일과 업데이트된 브라우저 .. 더보기