자동화 파이프라인7 분 읽기

내 로테이션 엔진은 렌더가 아니라 '어디까지 했는지'를 기억하는 파일 하나에 달려 있었습니다

결과 페이지가 있는 웹앱 네 개를 순서대로 캡처해 발행 큐에 넣는 엔진을 붙였습니다. 캡처와 렌더는 원래 있던 단계를 이은 것이었고, 새로 정해야 했던 건 다음에 무엇을 올릴지와 지금 위치를 누가 기억하느냐였습니다. 답은 세션 바깥의 파일 하나였고, 검증한 건 아직 한 조합뿐입니다.

#automation#state#shorts#content-rotation#i18n
왼쪽은 실행할 때마다 첫 항목부터 다시 시작하는 순회, 오른쪽은 디스크의 상태 파일을 읽고 다음 테마 그룹으로 이어 가는 순회
순회를 이어 가게 하는 건 렌더러가 아니라, 세션 바깥에 있는 위치 파일 하나였습니다.

결과 페이지가 있는 앱 네 개를 돌리기로 했습니다

제 웹앱 중 몇 개는 결과 URL을 갖고 있습니다. 별자리, 동물상, 띠, 혈액형처럼 무언가를 입력하면 결과마다 고유한 페이지가 생기는 앱들입니다. 이 결과 페이지를 캡처해 짧은 영상으로 렌더하고 발행 큐에 넣는 작업을, 순서대로 자동으로 돌리는 엔진을 붙였습니다. 커밋 이름은 '웹앱 순차 로테이션 엔진'입니다.

캡처·렌더·큐 추가는 이미 있던 파이프라인 단계를 이어 붙이면 되는 일이었습니다. 새로 정해야 했던 건 두 가지였습니다. 다음 회차에 무엇을 올릴지, 그리고 지금 어디까지 했는지를 누가 기억하느냐입니다.

당신의 자동화가 오늘 멈춘 지점을, 내일 새로 뜬 프로세스는 어디서 알아냅니까?

여기에 '지난 세션이 기억하고 있다'고 답하면, 세션이 끊기는 순간 기억도 같이 끊깁니다. 에이전트 세션이든, 터미널이든, 스케줄러가 띄운 새 프로세스든 다음 실행은 이전 실행의 메모리를 갖고 있지 않습니다. 위치를 기억하지 못하는 순회는 실행할 때마다 처음부터 다시 시작합니다. 그러면 순회가 아니라 첫 항목을 계속 반복하는 것이 됩니다.

같은 걸 연달아 올리지 않는다는 조건

두 번째 조건은 비진정성이었습니다. 같은 앱의 비슷한 결과 화면을 연달아 올리면 자동화가 찍어낸 반복 콘텐츠처럼 보입니다. 커밋 메모에 '비진정성 회피'라고 적어 둔 이유입니다.

그래서 순회 단위를 결과 하나가 아니라 테마 그룹으로 잡았습니다. 원소, 삼합, 유형 같은 묶음입니다. 별자리라면 불의 원소에 속한 별자리들이 한 회차가 되고, 다음 회차에는 다른 그룹이 나옵니다. 매 회차 다른 테마 그룹이 걸리게 하는 것이 순서를 정하는 규칙입니다.

당신이라면?

위치를 어디에 두시겠습니까? 실행하는 쪽의 기억입니까, 실행과 상관없는 파일입니까?

위치는 파일 하나에 두었습니다

저는 파일을 골랐습니다. 순회 위치를 hook/rotation_state.json에 기록하고, 다음 실행은 이 파일을 읽어서 이어 갑니다. 커밋 메모에 적은 '세션무관'이 이 뜻입니다. 어느 세션이 언제 돌리든 위치는 디스크에 남아 있습니다. 같은 커밋에서 .gitignore에 한 줄이 추가됐고, 발행 큐 파일은 33줄 늘었습니다.

언어는 엔진 안에 넣었습니다. ko/en/ja 라벨과 훅 문구를 엔진에 내장했고, CLI에서 --lang, --n, --plan을 받습니다. 엔진 파일 하나가 183줄입니다.

값싼 수정으로는 안 풀리는 부분

만들고 나서 코드로는 해결되지 않는 부분이 보였습니다. 결과 URL형 앱이 내놓을 수 있는 결과는 개수가 정해져 있습니다. 별자리도, 띠도, 혈액형도 그렇습니다. 테마 그룹은 그 결과를 다시 묶은 것이라 개수가 더 적습니다. 위치를 파일에 기억시키면 같은 그룹을 곧바로 다시 올리는 일은 막을 수 있습니다. 하지만 로테이션은 반복 사이의 간격을 벌려 줄 뿐, 올릴 거리 자체를 늘려 주지는 않습니다. 모든 그룹을 한 바퀴 다 돈 다음에 무엇을 할지는 이 커밋이 답하지 않습니다.

자가진단 체크리스트

  • 자동화가 '어디까지 했는지'를 실행 프로세스의 메모리가 아니라, 디스크처럼 실행과 상관없는 곳에 기록하고 있습니까?
  • 순서 규칙상 연속된 두 회차가 같은 앱의 비슷한 화면으로 채워질 수 있지는 않습니까?
  • 순회 대상이 유한하다면, 한 바퀴를 다 돌았을 때의 동작을 정해 두었습니까?

솔직한 부분

검증한 건 한 조합뿐입니다. ko로 zodiac_fire 그룹 하나를 생성해 보고 정상인 것을 확인했습니다. en/ja 라벨과 훅, 나머지 세 앱, 여러 회차를 이어서 돌렸을 때 상태 파일이 제대로 넘어가는지는 이 커밋 시점에 확인한 기록이 없습니다. 테마 그룹을 바꿔 가며 올리는 방식이 플랫폼이 판단하는 비진정성을 실제로 피하는지도 모릅니다. 제 기준에서 반복처럼 보이지 않게 만든 것이지, 플랫폼의 판정을 확인한 것은 아닙니다. 이 엔진으로 올린 영상이 얼마나 노출됐는지에 대한 숫자도 아직 없습니다.

관련 글