소개
현재 병원 블로그 마케팅 대행을 하고 있습니다. 관리하는 지점이 늘어날수록 관리사항이 늘어나면서 자동화를 하고 싶어 이 스터디에 참여하게 되었습니다.
7개 지점의 네이버 블로그 신규 글을 자동으로 모니터링해서 월별 통합 시트까지 한번에 업데이트되는 자동화를 만들고 싶었습니다.
참고로 저는 이과생이지만 코드는 잘 모릅니다.
진행 방법
어떤 도구를 사용했고, 어떻게 활용하셨나요?
도구
활용 포인트
n8n
RSS 수집 → 최근 7 일 필 터 → 중복 제거 → Google Sheets Append
Google Sheets
지점별 탭, 월별 집계 탭, QUERY / IMPORTRANGE 배열 공식
ChatGPT (o3)
Function 노드용 JS 스니펫·시트 공식 작성 & 디버깅
결국 가장 핵심은 중복이 되지 않게 새 글만 구글 시트에 적재하는 형태였는데,
필터링 기준은 블로그 링크를 기준으로 했고, RSS 를 통해 수집된 링크에서 뒷부분 쿼리스트링을 제거해서 중복 검사를 필터링 하는 코드를 넣었습니다.
“RSS에서 ?fromRss= 같은 쿼리스트링을 제거하고,
Google Sheet에 이미 있는 링크와 비교해 중복을 걸러주는
Function 노드 코드를 만들어줘.”// Function: Dedup + Format (중복 제거 & 시트행 포맷)
const sheetLinks = $items('Read Google Sheet (Links)', 0)
.map(r => (r.json.링크 || '').split('?')[0].trim());
return $input.all()
.filter(rss => {
const link = rss.json.link.split('?')[0];
return !sheetLinks.includes(link);
})
.map(rss => {
const d = new Date(rss.json.isoDate);
return {
json: {
월: `${d.getFullYear()}.${('0'+(d.getMonth()+1)).slice(-2)}`,
병원명: rss.json.blogName, // Merge 전 Set 노드에서 주입
제목: rss.json.title,
게시일: d.toISOString().slice(0,10),
비고: '자동 수집',
링크: rss.json.link.split('?')[0]
}
};
});
최종 워크 플로우입니다.
블로그 RSS Read 내용을 파싱해서 최근 7일치만 필터링, 기존 시트의 링크를 함께 대조해서 새 글만 시트에 Append 하는 워크플로우입니다.
이후에 구글시트 내에 지점별 탭 / 통합 탭이 있어서 통합 탭에서는 지점별 탭의 데이터들을 수집해서 한눈에 볼 수 있게끔 정리합니다.
결과와 배운 점
n8n은 입력 item 수만큼 노드가 반복되므로, RSS 호출을 1 회로 고정하려면 Set 노드로 “dummy 1 item”을 만든 뒤 HTTP Request에 연결하는 게 안전하다.
Google Sheets
Split-In-Items:false+ Merge(append) + Function 내부에서$items('...')참조 → “입력 2개 포트 제한”을 우회할 수 있다.시트 집계는
ARRAYFORMULA + COUNTIFS로 끝. 링크 빈값까지 조건에 넣으면 더미 행 오류도 해결.
(시행착오 & 배운점)
하나의 워크플로우로 간편하게 모든 지점을 순차 처리하려고 짜다보니, 굉장히 복잡해졌음. 토요일 오프 모임에서 멍멍님이 알려주신 내용을 토대로 지점별로 하나씩 워크플로우를 만들었더니 꽤나 단순해졌음. (멍멍님, 정기님 감사합니다!)
처음부터 GPT한테 모든 것을 의존하면서 만들면 산으로 갈 가능성이 높아서, 어느 정도의 워크플로우와 큰 줄기는 세팅해두고, 부수적으로 물어보거나 추가하는 형태가 낫다는 것을 다시한번 깨달음.
앞으로의 계획이 있다면 들려주세요.
지금 하고 있는 다른 업무들도 자동화 진행 예정임
도움 받은 글 (옵션)
(내용 입력)