구글 애드센스 도전기 #1 윈도우 자동화를 맥으로 옮길 때 brew not found부터 볼 것

구글 애드센스 도전기6편 중 1번째

Homebrew를 깔고 .zprofile에 PATH를 적어도 Claude Code가 여는 셸은 그걸 못 읽는다. 설치가 끝난 뒤에 brew not found가 또 나오면 다시 깔지 말고 명령 앞에 export PATH를 붙인다.

구글 애드센스에서 반려당한 사이트(koreaverified.com)가 2주째 멈춰 있었다. 회사를 나와 AI로 사업을 만드는 중이고, 이 사이트는 거기서 잡아둔 첫 수익 후보다. 반려 사유는 콘텐츠 부족, 조회수는 1주일간 0, 마지막 커밋은 8월 13일 3b51225. 윈도우에서 굴리던 저장소를 11시 28분에 맥으로 클론했고, 그날 오후에 실제로 만진 것은 콘텐츠가 아니라 콘텐츠를 만드는 스크립트의 확장자였다.

큰 숫자 0회. 애드센스에서 반려당한 사이트의 1주일간 조회수가 0이었다.

클론은 https로 우회해서 됐다

깃허브 명령줄 도구(gh)가 없었다. 11시 28분에 gh not found가 떴고, 깃허브 API는 "message": "Not Found",로 답했다. 클론은 https 주소로 그냥 됐고, 11시 35분 커밋 로그에 3b51225가 찍혔다.

automation 폴더를 열었더니 run-daily.ps1과 run-insights.ps1이 있었다. 이 사이트의 글을 매일 뽑아내는 장치 전체가 PowerShell이었다. 심사에 적힌 반려 사유는 콘텐츠 부족인데, 그 콘텐츠를 찍어내는 장치는 지금 켜 놓은 기계에서 한 줄도 안 도는 상태였다.

설치된 것과 셸이 찾는 것은 다른 상태다

gh not found는 그날 세 번째로 본 모양이었다. 10시 40분에 yt-dlp not found, 같은 10시 40분과 10시 53분에 brew not found, 11시 28분에 gh not found. 도구 이름만 바뀌고 문장은 같았다.

첫 번째는 그 자리에서 넘어갔다. 10시 41분에 pip3로 yt-dlp를 깔았고, 그 뒤로는 yt-dlp를 부르는 명령마다 사용자 설치 경로를 앞에 붙였다.

pip3 install --user --break-system-packages yt-dlp 2>&1 | tail -20
export PATH="$HOME/Library/Python/3.9/bin:$PATH"; yt-dlp --version

--user로 깐 실행 파일은 ~/Library/Python/3.9/bin에 들어가고, 그 폴더는 PATH에 없다. 10시 44분에 막힌 자리는 이름을 못 찾는 문제에서 유튜브가 페이지를 다시 불러오라는 에러로 넘어갔으니 앞에 붙인 줄은 제 일을 했다. 그때 나는 이걸 yt-dlp 하나의 사정으로 읽었다.

10시 52분에 Homebrew 설치 안내문을 통째로 붙여 넣어 깔았고, 10시 58분에 /opt/homebrew/bin/brew가 그 자리에 있는 것을 눈으로 확인했고, .zprofile에 PATH도 적어 뒀다. 그런데 30분 뒤 다른 세션에서 또 brew가 없다고 했다.

원인은 확정하지 못했다. 11시 28분에 ~/.zshrc~/.zprofile을 다시 뒤진 것까지가 그날 한 일이고, Claude Code가 여는 셸이 .zprofile을 읽지 않는 것 같다는 추정에서 멈췄다. 재현 조건은 이렇다. brew를 깔고 PATH를 .zprofile에만 적은 다음, 새로 뜬 세션에서 brew를 이름으로 부른다.

16시 25분에 우회로 정착했다. 명령 앞에 경로를 직접 붙이는 것이다.

export PATH="/opt/homebrew/bin:$PATH"

아침에 yt-dlp에 붙였던 줄과 경로만 다르다. 이걸 붙이고 나서야 /opt/homebrew/bin 아래 ffmpeg, yt-dlp, ffprobe가 전부 있다는 게 확인됐다. 첫 실패는 10시 40분, 우회 정착은 16시 25분이다. 파일은 분명히 그 자리에 있는데 이름으로는 안 잡히는 상태가 따로 있다는 걸 그때는 몰라서, 그 사이 시간의 대부분을 나는 설치가 덜 됐을 가능성만 의심하며 같은 설치 절차를 다시 확인하는 데 썼다.

설치 명령이 성공했는데 도구를 못 찾는다는 말이 나오면, 다시 깔기 전에 그 세션 안에서 which로 한 번 보세요. 경로는 나오는데 이름으로는 안 잡히면 재설치로 풀리지 않습니다. 명령 앞에 export PATH를 한 번 붙여 보면 둘 중 어느 쪽인지 갈립니다.

옮길 것은 스크립트만이 아니었다

손댄 파일 8개 중 셋이 automation 아래 셸 스크립트다. run-daily.sh, run-insights.sh, 그리고 install-launchd.sh. launchd는 맥 쪽 스케줄러이고, 이 파일이 목록에 들어간 것이 이식의 실제 크기였다. .ps1을 .sh로 바꾸는 데서 끝나지 않고 그걸 매일 깨우는 쪽까지 새로 만들어야 했다.

그다음 막힌 쪽은 사람이었다. 16시 17분 “자격증명 3개가 뭐지?”, 16시 20분 “윈도우에서 가져올려는데 뭐라고 시키면 되나? 그대로 복사 할 수 있는걸 줘”, 16시 26분 “야 뭐라는지 모르겠다 초보에게 알려주듯이 그냥 처음부터 알려줘”. 설명이 세 번 만에 통했고, 16시 30분에 나는 값 세 개를 채팅창에 그대로 붙여 넣었다. 그 로그는 평문으로 남았다.

다음

16시 56분에 커밋을 요청했는데 실제로 커밋됐는지는 확인하지 못했다. 그것부터 보고, install-launchd.sh로 run-daily.sh를 launchd에 걸어 하루 돌린 뒤 글 수가 늘어나는지 센다.

← 전체 글