MyShorts - 나만의 쇼츠 제작 도구
지난 10월부터 작업한 MyShorts가 v0.1.3에 이르렀다. YPUB 패키지를 읽고, 음성을 준비하고, JS 미리보기와 MP4 인코딩을 거쳐 YouTube에 업로드하는 흐름까지 연결했다. macOS 앱 형태로도 실행할 수 있게 됐으니, 이제는 기능을 늘리기보다 안정화와 실제 사용에 무게를 둘 시점이다. 그런데 막상 에필로그를 쓰려니 개발 과정에서 가장…
지난 10월부터 작업한 MyShorts가 v0.1.3에 이르렀다. YPUB 패키지를 읽고, 음성을 준비하고, JS 미리보기와 MP4 인코딩을 거쳐 YouTube에 업로드하는 흐름까지 연결했다. macOS 앱 형태로도 실행할 수 있게 됐으니, 이제는 기능을 늘리기보다 안정화와 실제 사용에 무게를 둘 시점이다. 그런데 막상 에필로그를 쓰려니 개발 과정에서 가장…
MyShorts는 ChatGPT가 생성한 쇼츠용 JavaScript 페이지에 Typecast 음성을 입히고, FFmpeg으로 MP4를 인코딩하기 위해 만든 개인용 프로그램이다. 전문 영상 편집기처럼 복잡한 기능을 다루는 것이 아니라, 반복되는 쇼츠 제작 과정을 하나로 묶은 도구라서 현재 필요한 기능도 어느 정도 갖춰진 상태다. 사용하면서 큰 문제가 발생하지…
이 글은 필자의 실제 투자 계좌를 바탕으로 작성한 시장 분석 및 개인 투자 기록입니다. 특정 종목이나 ETF의 매수·매도를 권유하거나 투자 수익을 보장하기 위한 글이 아닙니다. 모든 투자 판단과 그에 따른 책임은 투자자 본인에게 있습니다. 10월 마지막 주의 하락은 단순히 주가가 많이 떨어졌다는 것보다 왜 이렇게까지 팔리는가가 더 신경 쓰였다. 구글, 마이…
클리앙에서 눈길을 끄는 글을 하나 읽었다. AI에게 개인사를 털어놓았는데 그덕에 정신붕괴 심해짐. (부제:AI의 폐해...) : 클리앙 좀 무섭네요.. AI가 진짜로 무슨 사람이 대답해주는 것 처럼 생각하는 사람들이 늘어나는게 좀;;; 소싯적 나노바나나 얘기하는거 보니 LLM이 뭔지도 잘 모르고 그냥 대화상대처럼 쓰는 사람 인가 www.clien.net C…
순간 떠오른 아이디어로 시작했던 MyShorts 개발이 완료되어, 프로그램도 테스트해 볼 겸 그동안 블로그에 작성했던 글들을 짧은 영상으로 만들어 YouTube Shorts에 올려보려고 합니다. 처음부터 유튜브를 운영할 생각은 없었는데, 어쩌다 보니 여기까지 왔네요. ㅋㅋㅋ 블로그에는 기존처럼 자세한 내용을 기록하고, 유튜브에는 핵심 내용을 요약해서 올릴…
AI 협업 EP02의 콘티를 처음 받아봤을 때, 내용에는 별다른 불만이 없었다. 금융도 파이썬도 모르는 개발자가 MyStock을 시작하고, 요구사항을 정하면 ChatGPT가 분석과 설계를 보완하고 Codex가 구현하는 이야기였다. 마지막에는 세 캐릭터가 서로 반응하는 장면까지 들어갔다. 내가 전달하려던 메시지인 ‘코딩은 AI가, 방향은 내가’도 살아 있었다…
클리앙에 재밌는 글이 하나 올라왔다. ChatGPT에게 빈 방이미지를 하나 보여주고... 네가 나에 대해 아는 모든 것으로 이 방을 가득 채워봐... 좀 과장해서 ChatGPT한테 빈 방을 보여주고.... : 클리앙 “네가 나에 대해 아는 모든 걸로 이 방을 가득 채워봐, 좀 과장해서” 이렇게 적으니... . . 평소 관심있거나 요청했던 일들이 다 튀어나와…
이 글은 필자의 실제 투자 계좌를 바탕으로 작성한 시장 분석 및 개인 투자 기록입니다. 특정 종목이나 ETF의 매수·매도를 권유하거나 투자 수익을 보장하기 위한 글이 아닙니다. 모든 투자 판단과 그에 따른 책임은 투자자 본인에게 있습니다. ETF 적립을 시작한 지 이번 달로 꼭 1년이다. 내 기억으로는 7~8월까지만 해도 전체 수익률이 10% 안팎을 유지했…
2026년 10월 24일, MyStock에 드디어 1.0.0 태그를 붙였다. 첫 Git 커밋은 8월 9일이고, 개발을 시작한 건 아마 8월 7일쯤이었을 것이다. 0.4.7을 약 2주 동안 직접 사용해 봤는데 큰 문제를 발견하지 못했다. 그래서 기능을 더 붙이기보다, 일단 여기서 하나의 안정적인 기준점을 남기기로 했다. 시작은 주식 계좌를 한눈에 보자는 마음…
MyShorts에서 만든 첫 영상을 YouTube에 올리는 기능을 붙이기로 했다. YPUB 패키지로 장면과 대사, 제목까지 정해 두고, Python 프로그램에서 Typecast 음성과 MP4를 생성하는 흐름은 이미 갖춰져 있었다. 이제 완성된 영상을 업로드하기만 하면 되는 단계였다. 내가 기대한 화면은 단순했다. 패키지와 제작 기록에 저장된 게시 정보를 기…
MyShorts에 BGM 관리 기능을 추가하면서 사용하기로 한 음악은 YouTube 오디오 라이브러리에서 다운로드한 MP3다. 기존에도 로컬 파일을 골라 영상에 넣을 수 있었지만, 쇼츠를 계속 제작하려면 곡의 분위기뿐 아니라 어디서 받은 음원인지, 저작자 표시가 필요한지까지 관리해야 했다. Google Drive에 MP3와 곡 정보를 올려놓고 MyShort…
지난 글에서 YPUB ZIP을 MyShorts에 불러오고 JavaScript로 만든 장면을 Preview에서 확인하는 단계까지 진행했다. Typecast 음성의 실제 길이로 화면 시간을 보정하는 구조도 마련해 둔 상태였다. 이제 남은 건 그 기능들을 이어서 실제 MP4 한 편을 만드는 작업이었다. 그런데 막상 사용해 보니 영상 파일 하나를 만드는 과정이 생…
Typecast 음성을 기준으로 대사와 장면 전환 시간을 자동 보정하는 구조를 정리한 뒤, MyShorts의 실제 영상 제작 기능을 연결하기 시작했다. ChatGPT가 YPUB 패키지의 화면 연출을 작성하고 Python이 시간표를 보정한다는 원칙은 정해졌지만, 이를 데스크톱 프로그램 안에서 확인하고 MP4로 만드는 과정은 별개의 문제였다. JavaScrip…
MyShorts의 첫 번째 쇼츠는 개발자와 ChatGPT가 대화를 주고받는 짧은 상황극이다. 영상 길이도 길지 않아 처음에는 오픈소스 TTS로 충분할 거라고 생각했다. 그런데 실제 음성을 붙여보니 단순히 한국어를 읽는 것과 상황에 맞게 대화하는 것 사이에는 차이가 있었다. 상용 TTS를 검토하고 Typecast Smart Emotion으로 방향을 바꾼 뒤에…
MyShorts 프로젝트의 쇼츠 콘티를 ChatGPT와 검토하다 보니 어느 순간부터 코드보다 캐릭터의 표정과 대사를 더 많이 따지고 있다. 놀라는 표정은 조금 늦게 보여줘야 하고, PDF가 이동하는 동안 개발자가 말해야 하며, 대사가 끝난 뒤 화면을 몇 초나 유지할지도 직접 확인하고 있다. Python으로 YouTube Shorts 제작 프로그램을 개발하는…
이 글은 필자의 실제 투자 계좌를 바탕으로 작성한 시장 분석 및 개인 투자 기록입니다. 특정 종목이나 ETF의 매수·매도를 권유하거나 투자 수익을 보장하기 위한 글이 아닙니다. 모든 투자 판단과 그에 따른 책임은 투자자 본인에게 있습니다. 10월 셋째 주 시장을 보고 있자니 실적과 주가가 꼭 같은 방향으로 움직이지 않는다는 사실을 다시 생각하게 된다. 삼성…
개인 프로젝트에서 AI를 사용하기 시작했을 때의 목적은 단순했다. Python을 모르는 상태에서 구현에 단 1%도 관여하지 않고 프로그램을 어디까지 개발할 수 있을지 확인하는 것이었다. 요구사항과 설계 방향을 내가 결정하고, ChatGPT가 이를 Codex용 작업 지시로 정리한 뒤, Codex의 구현 결과를 다시 설명받는 방식이었다. 작은 프로젝트에서는 이…
앞선 글에서는 블로그 내용을 YouTube Shorts로 만드는 방법을 고민했다. 단순히 원문을 요약해 TTS로 읽어주는 영상보다는 캐릭터의 대사와 움직임으로 사건을 전달하고 싶었다. 이번에는 그 구상을 실제 화면으로 옮겨보기 위해 ChatGPT와 레이아웃을 정하고 샘플 제작을 진행했다. YouTube Shorts 화면 레이아웃과 캐릭터 구성 ChatGPT…
앞선 MyShorts 개발 이야기에서는 ChatGPT가 JavaScript로 모션 이미지를 생성해 YouTube Shorts에 사용하는 방식을 소개했다. 결과물은 깔끔했지만, 숏츠를 만들 때마다 스크립트를 생성하고 결과를 확인해야 한다는 점이 걸렸다. 작업 시간과 토큰 비용이 계속 발생하는 데다, 캐릭터의 표정과 움직임도 조금 아쉬웠다. 그래서 자주 등장할…
블로그에 작성한 개발 경험을 짧은 영상으로 만들기 위해 MyShorts를 구상하면서 처음에는 ChatGPT가 대본부터 이미지, 캐릭터 파츠와 모션까지 제작하는 방식을 생각했다. 실제로 이미지 파츠와 JavaScript를 이용해 5초짜리 로봇 애니메이션을 만드는 실험도 진행했다. 움직이는 캐릭터를 만들 수 있다는 가능성은 확인했지만, 다음 질문이 남았다. 영…
MyStock에 투자 데이터를 쌓고 JSON으로 내보내 LLM에 분석을 맡기는 이유는 단순히 시장 동향을 알아보기 위해서가 아니다. 내가 실제로 보유한 상품과 거래 내역을 기준으로, 현재 시장에 어떻게 대응하고 앞으로 어떤 매매 전략을 검토해야 할지 판단 근거를 얻고 싶었다. 처음에는 계좌 정보에 시장 지표, ETF 구성종목, 가격과 거래량, 투자자별 수급…
이번 사건의 시작은 MyStock의 JSON Export 품질 개선이었다. MyStock은 내가 사용하는 투자 분석 프로그램으로, 계좌와 ETF 정보를 JSON으로 내보내면 LLM이 시장 상황과 연결해 분석하도록 구성하고 있다. 기존 분석 결과를 살펴보니 데이터는 상당히 들어 있는데도 ETF 구성종목이나 수급 변화가 충분히 활용되지 않는 부분이 있었다. 그…
지난 실험노트에서는 블로그의 AI 협업 사고일지를 YouTube Shorts로 바꾸는 방법을 살펴봤다. OpenAI API나 별도의 영상 생성 서비스를 쓰면 편하겠지만, 이미 내고 있는 ChatGPT 구독료에 추가 비용까지 얹을 생각은 없었다. 결국 대화형 ChatGPT에서 영상 제작 자료를 직접 만들어야 한다는 결론이었다. ChatGPT Work 영상 생…
요즘은 블로그 글보다 짧은 영상이 먼저 눈에 들어올 때가 많다. 유튜브를 켜면 숏츠가 연달아 나오니 나도 한번 시류에 탑승해 볼까 싶었다. 소재를 새로 찾을 필요는 없었다. 그동안 AI와 협업하면서 겪었던 사건일지 중에는 글로 읽어도 황당한 이야기가 제법 있다. 특히 신입 GPT가 인수인계 문서를 잘못 이해해 후임 GPT의 업무까지 진행한 사건은 로봇 캐릭…
지난 9월, STM32의 제한된 SRAM에서 PnC(Plug and Charge) 기능을 구현하기 위해 메모리 확보 작업을 진행했다. 당시 SECC 통신을 담당하는 GQSE 모듈의 UART 수신 구조를 슬롯 방식에서 링버퍼로 변경하고, 송신은 512바이트 스트리밍 방식으로 재설계했다. RX 링버퍼는 기양산 모델에서 8KB, 신규 모델에서는 32KB를 사용하…
전기차 충전기 펌웨어에서 OCPP Configuration Key는 오랫동안 하나의 구조체와 테이블로 관리해 왔다. OCPP 표준 설정과 충전기 자체 기능을 제어하는 Custom Key를 한곳에 두고 읽기·쓰기 함수를 공용으로 사용하는 방식이었다. 처음에는 그 편이 단순했고, 관리하기에도 편했다. 그런데 충전기 기능이 늘어나면서 상황이 달라졌다. 충전사업자…
이번 주말 MyStock의 .env를 없애고 JSON Local Config로 바꾸는 작업을 하면서 예상하지 못했던 구조를 하나 발견했다. 처음에는 설정 파일 형식만 바꾸면 되는 작업이라고 생각했다. App Key와 Secret Key, 계좌정보처럼 GitHub에 올릴 수 없는 값을 .env 대신 로컬 JSON에 저장하고, 프로그램 안에서 사용자가 직접 등…
MyStock은 집과 회사처럼 여러 PC에서 같은 데이터를 사용하고 있었고, SQLite DB는 Dropbox를 통해 서로 오가고 있었다. Schema 7이라는 새 기준을 만든 순간부터 Local DB와 Remote DB가 서로 다른 상태로 존재할 가능성이 생겼다. 한 PC는 이미 새 구조를 사용하고 있는데 Dropbox에는 이전 Schema의 DB가 남아…
처음에는 App Key나 Secret Key처럼 외부에 공개할 수 없는 정보를 JSON으로 옮기고, 사용자가 직접 계좌정보를 등록할 수 있게 만들면 끝날 줄 알았다. 그런데 실제 코드를 따라가 보니 STOCK, ETF, ISA, IRP, FINANCIAL처럼 오래전부터 사용해온 계좌 이름과 슬롯이 단순한 설정값이 아니었다. API를 호출할 계좌를 고르는 기…
MyStock은 한국투자증권을 비롯해 여러 OpenAPI를 사용한다. App Key, Secret Key, API Key 같은 인증 정보가 필요했고, 초기에는 이런 값과 계좌 관련 설정을 .env 파일에 넣어 사용했다. .env에는 외부에 공개하면 안 되는 인증 정보가 들어 있기 때문에 GitHub에는 포함하지 않았다. 소스 코드는 GitHub를 통해 여러…