진행하기전
관리가 안되는 Task 들이 생각보다 많이 존재하고 있습니다. 또한 진행중 업무에 대해 찾기에 불편함이 있어 따로 summary 하여 알려주는 기능을 AI 를 통하여 쉽게 구현한 내용을 공유합니다.
시작하기전에 Docker, Dooray Token 발급, Dooray MCP 연동이 완료되어야 합니다.
n8n 이란
오픈소스 기반의 노코드 자동화 도구로, 오픈소스기반 프로그램입니다.
- 장점
- 셀프 호스팅인 경우 workflow 실행 수 제한 없이 무료료 가능
- 데이터를 직접 서버에 저장 및 처리하므로 내부 데이터 유출 위험 없음
- 다양한 노드를 지원하며, 코딩을 통해 고도화된 로직 구현 가능
- 랭체인(LangChain)을 이용한 AI 에이전트 구축 및 API 연동이 용이
- 드래그 앤 드롭으로 복잡한 절차 설계 가능
- 단점
- 어느정도 러닝커브가 있음
- 서버를 지속적으로 켜놓지 않으면 예약 자동화 실행 불가능
- 커뮤니티나 공식 문서가 적다고 함
대규모 자동화가 필요하거나, 데이터 보안이 중요하고, 서버 운영이 가능한 개발자/기술자에게는 n8n이 제피어(Zapier)나 메이크(Make)보다 압도적인 비용 효율과 자유도를 제공하나 비 개발자에게는 진입 장벽이 높다.
n8n 설치 (with. docker)
// 컨테이너 실행
$ docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n --restart unless-stopped n8nio/n8n
http://localhost:5678/signin 접속하면 하기 이미지와 같은 페이지가 표시되고 계정을 생성합니다.

AI Agent 를 활용한 Workflow 작성
회원가입 후 생성된 계정으로 AI Agent를 활용하여 Workflow를 작성하게 합니다.
// AI prompt
http://localhost:5678/signin 로그인 후 아이디 패스워드 입력하고
- id: {아이디}
- password: {패스워드}
먼저 Dooray 에서 "호스팅--업무요청" 프로젝트에서
- 담당자가 "전봉근" 이다.
- 상태가 "업무요청" 이다.
- 상태가 "업무 진행 중" 이면서 등록일에서 +30일이 지나면서 아무 내용도 업데이트가 되지 않은 경우
인 Task 리스트들을 추출한 메세지를
Dooray 메신저에서 "전봉근 {팀이름}/{직급}"에게 매일 오전 10:00 에 전송하는 Workflow를 만들어줘
단, 메세지 내용 중 Task 제목은 링크로 제공해줘
생성된 Workflow 의 각 노드들을 설명
생성된 Workflow 는 하기 이미지와 같습니다.

- 매일 오전 10시 (Schedule Trigger)
- 타입: n8n-nodes-base.scheduleTrigger
- 역할: 워크플로우의 시작점. 매일 오전 10:00 (Asia/Seoul 기준)에 자동으로 워크플로우를 실행합니다.
- 설정: triggerAtHour: 10, triggerAtMinute: 0
- 업무요청 상태 조회 (HTTP Request)
- 타입: n8n-nodes-base.httpRequest
- 역할: Dooray API를 호출하여 “호스팅–업무요청” 프로젝트에서 backlog 상태(업무요청, 보류 포함)인 태스크를 조회합니다.
- API 호출:
- GET https://api.dooray.com/project/v1/projects/{MemberId 를 입력하세요}/posts
- 파라미터:
- toMemberIds=4126664213789651378 (담당자: 전봉근)
- postWorkflowClasses=backlog (backlog 클래스)
- size=100 (최대 100건)
- 출력: Dooray API 응답 JSON (태스크 목록 포함)
- 진행중 상태 조회 (HTTP Request)
- 타입: n8n-nodes-base.httpRequest
- 역할: Dooray API를 호출하여 working 상태(진행 중)인 태스크를 조회합니다.
- API 호출:
- GET https://api.dooray.com/project/v1/projects/{MemberId 를 입력하세요}/posts
- 파라미터:
- toMemberIds=4126664213789651378 (담당자: 전봉근)
- postWorkflowClasses=working (working 클래스)
- size=100 (최대 100건)
- 출력: Dooray API 응답 JSON (태스크 목록 포함)
- 필터링 및 메시지 포맷 (Code)
- 타입: n8n-nodes-base.code (JavaScript)
- 역할: 핵심 로직 노드. 2번, 3번 노드에서 가져온 데이터를 필터링하고 메시지를 생성합니다.
- 처리 로직:
a. 업무요청 필터링: 2번 노드(backlog) 결과에서 담당자(전봉근)의 워크플로우명이 정확히 “업무요청”인 태스크만 추출 (같은 backlog 클래스인 “보류” 상태는 제외)
b. 장기 미업데이트 필터링: 3번 노드(working) 결과에서 createdAt(등록일)과 updatedAt(수정일) 모두 30일 이전인 태스크만 추출 (등록 후 30일이 지났는데 아무런 업데이트가 없는 태스크)
c. 메시지 생성: 필터된 태스크들을 아래 포맷으로 구성
``` [호스팅–업무요청] 일일 업무 현황 알림-
-
- 기준
-
[업무요청] 상태 태스크:
- hadmin 로그인 세션 유지 관련
https://nhnent.dooray.com/task/{Task 번호}
[업무 진행 중] 30일 이상 미업데이트 태스크:
- AI 호스팅 개선 작업 (등록: 2025. 9. 25., 최종수정: 2025. 9. 30.)
https://nhnent.dooray.com/task/{Task 번호}
총 5건 (업무요청: 2건, 진행중 미업데이트: 3건)
``` -
- 출력: { message, hasContent, backlogCount, staleCount }
- 전송할 내용 확인 (IF)
- 타입: n8n-nodes-base.if
- 역할: 4번 노드의 hasContent 값이 true인지 확인합니다.
- true (첫 번째 출력) → 6번 노드로 이동 (메시지 전송)
- false (두 번째 출력) → 7번 노드로 이동 (스킵)
- 목적: 알림할 태스크가 하나도 없으면 불필요한 메시지를 보내지 않도록 방지
- 전봉근에게 메시지 전송 (HTTP Request)
- 타입: n8n-nodes-base.httpRequest
- 역할: Dooray Messenger API를 호출하여 전봉근에게 1:1 다이렉트 메시지를 전송합니다.
- API 호출:
- POST https://api.dooray.com/messenger/v1/channels/direct-send
- Body:
{ "text": "(4번 노드에서 생성된 메시지)", "organizationMemberId": "{MemberId 를 입력하세요}" }
- 결과: 전봉근의 Dooray 메신저에 태스크 현황 알림이 도착
- 전송할 내용 없음 (NoOp)
- 타입: n8n-nodes-base.noOp
- 역할: 아무 동작도 하지 않고 워크플로우를 정상 종료합니다.
- 목적: 5번 IF 노드에서 false일 때(알림할 태스크가 없을 때) 워크플로우가 깔끔하게 종료되도록 하는 종착점
전체 Flow 는 “매일 오전10시 실행 > 업무요청 상태 조회 > 진행중 상태 조회 > 필터링 및 메시지 포맷 > 전송할 내용 확인 (true or false) > true 시 전봉근에게 메세지 전송