전체 글 8

AI 제목 생성: 프롬프트 예시가 문제였다, SEO 최적화 해결

내 자동화 블로그 https://write83676.tistory.com는 애드센스 승인을 목표로 돌리는 중이다. automoney 프로젝트의 핵심 파이프라인 중 하나인데, 발행 목표 30개 중 이제 두세 개 겨우 올렸을 때부터 이상한 낌새를 느꼈다.매일 아침 9시 30분, daily_run.py 스크립트가 백로그 소재를 가져와 글을 만들고 제목까지 뽑아 발행하는데, 제목이 매번 묘하게 비슷했다.AI 제목, 왜 자꾸 "쉬울 줄 알았다"고 할까? 🤔특히 "쉬울 줄 알았다" 같은 표현이 계속 튀어나왔다. 'Playwright 삽질기, 쉬울 줄 알았는데…', '로컬 LLM 설치, 쉬울 줄 알았는데…' 이런 식이었다.처음엔 내가 우연히 비슷한 주제를 다뤘나 싶었다. 아니면 AI가 요즘 유행하는 밈(meme)을..

AI·로컬 LLM 09:47:19

LLM 지식 그래프 오염: PKM 자동화 시스템 복구 경험

automoney 프로젝트를 시작하며 개인 지식관리 시스템(PKM)을 자동화하는 데 공을 많이 들였다. 궁극적인 목표는 내가 직접 개입하지 않아도 콘텐츠가 생성되고, 관리되고, 발행되는 파이프라인을 구축하는 거였다.이걸로 https://write83676.tistory.com에 글을 30개 채워 애드센스 승인을 받는 게 당면 과제였다. 이미 #5 라다 스왑 삽질기, #6 플레이라이트 경험 노트 등 몇 개의 글을 발행했지만, 그 뒤에는 복잡한 시스템이 돌아가고 있었다. 로컬 LLM이 자료를 조사하고, 정리하고, 지식 그래프를 업데이트하는 과정이 매일 오전 9시 30분 cron에 맞춰 publish/daily_run.py 스크립트를 통해 자동으로 진행됐다.초반에는 꽤 만족스러웠다. 새로운 자료가 들어오면 관..

AI·로컬 LLM 2026.08.22

삼성 990 PRO 가짜 SSD, 외장 케이스 인식 못 한 이유

얼마 전, 중고 마켓에서 삼성 990 PRO 1TB를 좋은 가격에 찾았다. 늘 그렇듯 작업용 외장 스토리지로 쓸 요량이었다.집에 남아있던 ORICO USB4 외장 케이스에 물릴 생각이었다. 이 케이스는 USB4 40Gbps에 ASMedia ASM2464 컨트롤러를 쓰는 꽤 괜찮은 녀석이었다. 20mm 팬도 달려있고, 최대 8TB까지 지원한다고 해서 망설임 없이 선택했다. SSD 인식이 안 돼서 뜯어봤더니... 🤨그런데 막상 조립하고 보니 인식이 안 되는 문제에 부딪혔다. 처음엔 케이스가 불량인가 싶었다.외장 케이스는 새 제품이었고, SSD도 판매자가 정상이라고 했으니 둘 중 하나겠지. 드라이버로 케이스를 열고 닫고, SSD를 다시 뺐다 꽂기를 몇 번. 이리저리 끼워봐도 맥북은 아무것도 찾지 못했다. 잠..

맥·홈서버 2026.08.21

Tailscale userspace-networking: 관리자 권한 없는 Mac 원격 접속

회사 정책상 관리자 권한은 어림도 없는데, 원격 접속 환경이 필요했다. 특히 갤럭시 탭으로 내 맥북에 붙어야 할 때가 잦았다.보안 팀에 VPN 요청해봐야 절차만 복잡해질 게 뻔하고, 개인용으로 뭔가 설치하고 싶어도 sudo 비밀번호가 없으니 답답할 노릇. 이래저래 궁리하다가 Tailscale의 userspace-networking 모드가 눈에 들어왔다. 관리자 권한 없이 일반 사용자 영역에서 VPN처럼 작동할 수 있다는 말에 솔깃했다.관리자 권한 없는 Mac, Tailscale이 답일까? 🤔먼저, brew install tailscale로 CLI 버전을 설치했다. GUI 앱은 cask로 설치해야 하는데, 그건 또 sudo가 필요했다. CLI 설치는 다행히 권한 문제 없이 잘 넘어갔다.문제는 그 다음부터..

맥·홈서버 2026.08.20

AI 영상 복원 검증법: 길이만 봐선 안 되는 이유 (pts, fps)

맥미니 한 대로 AI 영상 복원 파이프라인을 돌리고 있다. 오래된 저화질 영상을 업스케일·노이즈 제거하는 작업인데, 한 편에 짧으면 두어 시간, 400분짜리 대작은 하루 가까이 걸린다.이런 걸 수백 편 단위로 배치를 돌리다 보면 결과물이 수백 기가씩 쌓이고, 사람이 일일이 열어볼 수 없으니 검증도 자동화가 된다.초반의 검증은 단순했다. 복원이 끝나면 원본과 결과물의 재생 길이를 비교해서 차이가 없으면 통과. 몇 주 동안 아무 문제도 없었다.그러다 어느 날, 통과 판정을 받은 결과물 하나를 우연히 뒤쪽부터 확인해봤다. 재생바를 후반부로 끌었더니 화면이 마지막 프레임에 얼어붙은 채 소리만 계속 나왔다.실측을 해보니 이랬다.비디오 스트림 길이: 7,180.42초오디오 스트림 길이: 7,423.98초컨테이너(파..

AI·로컬 LLM 2026.08.19

launchd, screen으로 디스코드 봇 24시간 상주시키기

얼마 전, 클로드 기반의 디스코드 챗봇을 하나 만들었다. 꽤 쓸만했다.이걸 내 맥에서 24시간 내내 돌리고 싶었다. 내 터미널을 점유하지 않으면서, 맥을 껐다 켜도 자동으로 다시 살아나는 방식으로 말이다.macOS 환경에서 데몬을 띄우는 표준 방식은 launchd를 쓰는 거다. 그리고 터미널 기반 앱을 백그라운드에서 돌리려면 screen이 딱이지. 완벽한 조합이라고 생각했다.시작은 창대했지만... 뭐가 문제였을까? 🤔자신만만하게 launchd plist 파일을 만들었다. 봇 실행 스크립트를 지정하고, KeepAlive 옵션도 넣었다.그런데 뭔가 이상했다. 봇이 디스코드에 '온라인'으로 뜨긴 하는데, 메시지에 전혀 반응이 없는 거다.혹시나 싶어 screen -r로 세션에 들어가 봤다. 화면은 깨져있었고,..

맥·홈서버 2026.08.18

티스토리 자동 발행, Playwright로 구현하기 (오픈API 종료 대응)

애드센스 승인을 목표로 티스토리 블로그를 꾸준히 운영하기로 했다. 글쓰기 과정을 효율화하면 좋겠다는 생각에 자동화를 구상했다. 처음엔 당연히 공식 API가 있을 줄 알고 찾아봤다.티스토리 API, 벌써 죽었니? 😱문제는 여기서부터 시작됐다. 있을 거라 확신했던 티스토리 오픈 API는 이미 서비스 종료 상태였다.문서를 찾아보니 모든 엔드포인트에 deprecated 딱지가 붙어 있었다. 이걸 확인하는 순간 머리가 띵했다.그렇다면 남은 길은 브라우저 자동화뿐. 바로 Playwright를 꺼내 들었다.예상치 못한 장벽에 부딪혔지만, 뭐, 개발자에게 이런 건 일상이다.덕분에 새로운 도전을 시작했다.카카오 로그인 세션, 왜 자꾸 말썽일까? 🤔Playwright로 처음 시도한 건 헤드리스 모드였다. 백그라운드에서..

자동화 삽질기 2026.08.18

Mac mini AI 영상 복원, 스왑 지옥 탈출법

Mac mini로 AI 영상 복원 파이프라인을 돌리다 겪은 일이다. 처음엔 야심 차게 수 시간짜리 영상 하나를 통으로 넣고 돌렸다.애플 실리콘의 MPS(Metal Performance Shaders) 성능을 믿었고, 48GB 램이면 충분하리라 생각했다. 하지만 몇 시간쯤 지나면 여지없이 스왑 메모리가 48GB까지 차오르고, macOS가 프로세스를 SIGKILL로 죽여버리는 거였다. 😱 문제는 결과물이었다. 아니, 이게 뭐야?문제는 결과물이었다. mp4 파일은 헤더에 moov atom이라는 정보가 있어야 한다. 이 정보는 영상의 전체 길이, 트랙 정보 등을 담고 있는데, 프로세스가 강제 종료되면 이 moov atom이 제대로 기록되지 않아 영상 전체가 열리지 않았다.몇 시간을 돌렸는데 아무것도 건지지 ..

AI·로컬 LLM 2026.08.18