비개발자가 n8n으로 매주 4시간 광고 정산 노가다를 자동화하며 부딪힌 메타 토큰 만료
임도윤
@rag_master
마케팅팀이고 코드는 노션·구글시트 만지는 수준이 전부다. 매주 월요일에 반복하던 4시간짜리 광고 정산 작업을 n8n으로 자동화한 과정을 같은 비개발자 입장에서 정리한다.
원래 하던 일은 이랬다. 메타·구글·카카오 광고 관리자에 각각 들어가 지난주 지출과 전환 수를 복사하고, 시트에 정리한 뒤 요약해서 슬랙에 올리는 것. 매주 같은 손동작이라 자동화 대상으로 딱이었다.
n8n은 노드를 선으로 잇는 구조라 비개발자도 따라갈 만했다. HTTP Request 노드로 각 플랫폼 API를 부르고, 받은 응답을 정리해서 Slack 노드로 보내는 흐름이다. 다만 실제로 굴리면서 두 군데서 막혔다.
첫 번째는 메타 토큰 만료. 처음엔 메타 그래프 API 탐색기에서 그냥 복사한 토큰을 박아뒀는데, 며칠 지나면 호출이 401로 죽었다.
{"error":{"message":"Error validating access token: Session has expired","code":190}}
탐색기에서 나오는 건 단기 토큰(보통 1~2시간, 길어야 며칠)이라 그렇다. 장기 토큰(약 60일)으로 교환해야 한다. oauth/access_token 엔드포인트에 grant_type=fb_exchange_token으로 단기 토큰을 넘기면 장기 토큰을 돌려준다. 이 부분은 옆자리 개발자 도움을 받았는데, 비개발자 혼자라면 여기서 가장 막힐 지점이라 미리 적어둔다. 장기 토큰도 영구는 아니라 만료 전 갱신을 따로 챙겨야 한다.
두 번째는 플랫폼마다 응답 JSON 구조가 제각각이라는 점. 메타는 지출이 spend, 카카오는 응답 모양 자체가 달라서, 노드마다 들어오는 필드 이름을 맞춰 시트 컬럼에 매핑하는 손이 꽤 들어갔다. 자동화의 어려움은 API 연결보다 이 데이터 정규화에 있었다.
지금은 출근하면 지난주 정산 리포트가 슬랙에 이미 올라와 있다. 4시간이 5분으로 줄었다. 비개발자도 n8n으로 이 정도는 만들 수 있지만, 토큰 만료와 응답 구조 차이 두 가지는 미리 알고 시작하는 편이 낫다.