Confluence Wiki 페이지와 하위 페이지를 PDF로 저장하는 n8n 워크플로를 구성하려면 다음 단계를 따르면 됩니다. 이 과정은 Confluence API와 n8n의 HTTP Request 및 기타 노드를 사용합니다.
사전 준비
- Confluence API 활성화: Confluence Cloud 또는 Server에서 API 호출을 허용해야 합니다.
- API Token 생성: Confluence Cloud의 경우, Atlassian 계정에서 API Token을 생성하세요.
- n8n 설정: Confluence에 접근할 수 있는 HTTP Request 노드와 파일 저장용 기능을 사용할 수 있도록 설정하세요.
워크플로 구성 단계
1. HTTP Request 노드: 루트 페이지 ID 가져오기
- 목적: 지정한 Wiki 페이지의 ID를 가져옵니다.
- 설정
- Method:
GET
- URL:
https://<YOUR_CONFLUENCE_DOMAIN>.atlassian.net/wiki/rest/api/content?title=<PAGE_TITLE>
- Headers:
Authorization
:Basic <base64_encoded_email:api_token>
- Query Parameters:
expand
:body.export_view
- Method:
2. HTTP Request 노드: 하위 페이지 가져오기
- 목적: 루트 페이지의 하위 페이지 목록을 가져옵니다.
- 설정
- Method:
GET
- URL:
https://<YOUR_CONFLUENCE_DOMAIN>.atlassian.net/wiki/rest/api/content/<PAGE_ID>/child/page
- Headers:
Authorization
:Basic <base64_encoded_email:api_token>
- Query Parameters:
expand
:body.export_view
- Method:
3. Set 노드: PDF 변환 요청 준비
- 목적: PDF로 변환할 페이지의 내용을 정리합니다.
- 설정
- Key/Value: 페이지 제목, HTML 콘텐츠, 페이지 ID
4. HTML to PDF 노드
- 목적: HTML 콘텐츠를 PDF로 변환합니다.
- 설정
- HTML 입력: 이전 HTTP Request 노드에서 가져온 HTML 콘텐츠
- PDF 옵션: 필요에 따라 페이지 크기, 여백 등 설정
5. Write Binary File 노드
- 목적: PDF 파일을 지정된 위치에 저장합니다.
- 설정
- File Name:
{{$json["title"]}}.pdf
- File Path: 지정된 디렉토리 경로
- File Name:
6. Loop 노드: 하위 페이지 처리
- 목적: 모든 하위 페이지에 대해 동일한 프로세스를 반복합니다.
- 구성
- 이전 단계에서 가져온 하위 페이지 데이터를 배열로 받아 반복 처리
워크플로 구성 요약
- HTTP Request 노드로 지정된 페이지의 ID를 가져옵니다.
- 해당 페이지의 하위 페이지 목록을 API로 호출하여 가져옵니다.
- 각 페이지의 내용을 HTML로 추출하여 PDF로 변환합니다.
- 변환된 PDF를 파일로 저장합니다.
- 모든 페이지 및 하위 페이지에 대해 반복합니다.
Confluence API 예시
페이지 ID 가져오기
curl -X GET \
"https://<YOUR_CONFLUENCE_DOMAIN>.atlassian.net/wiki/rest/api/content?title=<PAGE_TITLE>" \
-H "Authorization: Basic <base64_encoded_email:api_token>"
하위 페이지 목록 가져오기
curl -X GET \
"https://<YOUR_CONFLUENCE_DOMAIN>.atlassian.net/wiki/rest/api/content/<PAGE_ID>/child/page" \
-H "Authorization: Basic <base64_encoded_email:api_token>"
워크플로가 실행되면 지정한 Wiki 페이지 및 모든 하위 페이지가 각각 PDF로 변환되어 저장됩니다. 추가적인 기능(예: 파일 압축, 이메일 전송 등)을 원하면 n8n의 다른 노드를 추가해 확장할 수 있습니다. 어제 변경된 페이지만 PDF로 저장하려면 Confluence API의 history
데이터를 활용하여 변경된 날짜를 확인한 뒤 PDF로 저장하는 작업을 진행해야 합니다. 다음은 n8n에서 이를 구현하기 위한 방법입니다.
워크플로 구성 단계 (어제 변경된 페이지만 PDF로 저장)
1. HTTP Request 노드: 페이지 및 하위 페이지 ID 가져오기
- 목적: 루트 페이지의 ID와 하위 페이지 목록을 가져옵니다.
- 설정
- Method:
GET
- URL
https://<YOUR_CONFLUENCE_DOMAIN>.atlassian.net/wiki/rest/api/content/<PAGE_ID>/child/page
- Headers
Authorization
:Basic <base64_encoded_email:api_token>
- Query Parameters
expand
:version,history.lastUpdated
- Method:
2. Function 노드: 어제 변경된 페이지 필터링
- 목적:
history.lastUpdated
데이터를 기준으로 어제 변경된 페이지만 필터링합니다. - 설정
- 스크립트
const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); yesterday.setHours(0, 0, 0, 0); // 어제의 00:00:00 const today = new Date(); today.setHours(0, 0, 0, 0); // 오늘의 00:00:00 return items.filter(item => { const lastUpdated = new Date(item.json.history.lastUpdated.when); return lastUpdated >= yesterday && lastUpdated < today; });
- 스크립트
3. HTTP Request 노드: 페이지 내용 가져오기
- 목적: 변경된 페이지의 HTML 내용을 가져옵니다.
- 설정
- Method:
GET
- URL
https://<YOUR_CONFLUENCE_DOMAIN>.atlassian.net/wiki/rest/api/content/<PAGE_ID>?expand=body.export_view
- Headers
Authorization
:Basic <base64_encoded_email:api_token>
- Method:
4. HTML to PDF 노드
- 목적: 변경된 페이지의 HTML 콘텐츠를 PDF로 변환합니다.
- 설정
- HTML 입력: 이전 단계에서 가져온 HTML 콘텐츠
- PDF 옵션: 필요에 따라 페이지 크기, 여백 등 설정
5. Write Binary File 노드
- 목적: PDF 파일을 지정된 위치에 저장합니다.
- 설정
- File Name:
{{$json["title"]}}_{{new Date().toISOString()}}.pdf
- File Path: 지정된 디렉토리 경로
- File Name:
6. Loop 노드: 변경된 페이지 반복 처리
- 목적: 어제 변경된 모든 페이지를 PDF로 저장합니다.
- 구성
- 필터링된 페이지 데이터를 반복 처리
변경된 페이지 필터링을 위한 Confluence API 호출 예시
curl -X GET \
"https://<YOUR_CONFLUENCE_DOMAIN>.atlassian.net/wiki/rest/api/content/<PAGE_ID>/child/page?expand=history.lastUpdated" \
-H "Authorization: Basic <base64_encoded_email:api_token>"
history.lastUpdated 데이터 예시
{
"id": "123456",
"title": "Example Page",
"history": {
"lastUpdated": {
"when": "2024-12-02T12:34:56.789Z"
}
}
}
결과
- 어제(
history.lastUpdated
) 변경된 페이지만 필터링하여 PDF로 저장됩니다. - 모든 변경된 페이지는 각각 PDF 파일로 지정된 디렉토리에 저장됩니다.
확장 가능성
- Custom GPTs에 학습 데이터를 추가
- 변경된 파일 목록을 이메일로 전송
- 저장된 PDF 파일 압축 후 업로드
- 클라우드 스토리지(예: AWS S3, Google Drive)에 업로드
위 설정을 기반으로 필요한 기능을 추가하거나 수정해 워크플로를 최적화할 수 있습니다.
728x90
댓글