109 lines
4.2 KiB
Markdown
109 lines
4.2 KiB
Markdown
# wp-post-automation
|
|
## 목적
|
|
* 워드프레스 포스팅 자동화 기능 구현.
|
|
|
|
## 주요내용
|
|
### 프로젝트 소개
|
|
2025.01.19 - 네이버 블로그 스크랩 및 워드프레스 임시글 등록 기능 구현
|
|
* 초기 기능 구현 완료.
|
|
2024.10.04 - 테스트 완료. 프로젝트 1차 종료.
|
|
* 워드프레스 포스팅 자동화 프로젝트.
|
|
* make.com을 이용해서 만든 AutoMation Flow를 Python을 이용하여 변환.
|
|
|
|
### 사용방법
|
|
* sample.env.dev를 복사하여 루트 디렉토리에 .env.prd | .env.dev | .env 중 하나로 생성하여 사용 합니다.
|
|
* main.py가 기본 자동화 프로세스 입니다.
|
|
* 크롤링된 게시물을 OpenAI가 변형하여 마크다운으로 등록합니다.
|
|
* main_naver_blog_html은 네이버 블로그 전용 프로세스 입니다.
|
|
* 크롤링된 게시물을 그대로 마크다운으로 등록합니다.
|
|
|
|
---
|
|
## 참고 워크 플로우
|
|
* MariaDB에 저장된 최신 참고 url정보를 얻어온다.
|
|
* HTTP모듈을 이용하여 참고 자료를 가져온다.
|
|
* 가져온 HTML형태의 자료를 Text만 추출한다.
|
|
* OpenAI를 이용하여 블로그 형태로 변환한다.
|
|
* OpenAI를 이용하여 블로그 제목을 생성한다.
|
|
* OpenAI를 이용하여 제목을 참고하여 섬네일을 생성한다.
|
|
* 생성된 자료들을 이용하여 HTML형식으로 변환한다.
|
|
* WordPress에 이미지를 등록한다.
|
|
* WordPress에 포스팅을 한다.
|
|
|
|
## 개발 계획
|
|
### 2025.01.19
|
|
* 네이버 블로그 포스트를 크롤링한다.
|
|
* API로 워드프레스에 임시글로 등록한다.
|
|
### 2024.10.04
|
|
* 기존 Flow를 Python으로 개발한다.
|
|
* 트리거가 발생하면 실행시키는 컨테이너로 빌드한다.
|
|
* kubectl create -f file.yaml을 이용하여 1회성 동작 하도록 구현한다.
|
|
|
|
## Python 개발 순서
|
|
### 2025.01.19
|
|
* 현재 DB연동 기능은 없음. 실행시키면 URL을 넣어야동작합니다(완료).
|
|
* url을 이용해서 파싱하고 텍스트만 추출하는 기능 구현(완료).
|
|
* 마크다운 형태로 추출(완료).
|
|
* HTML문서 변환 코드 작성(완료).
|
|
* 워드프레스 API를 이용한 임시 포스트 등록(완료).
|
|
### 2024.10.04
|
|
* DB에서 url을 가져오는 코드작성(완료).
|
|
* url을 이용해서 파싱하고 텍스트만 추출하는 기능 구현(완료).
|
|
* OpenAI이용 코드 작성(완료)-비용 절감을 위하여 제목, 이미지 생성 제외.
|
|
* HTML문서 변환 코드 작성(완료).
|
|
* 워드프레스 등록 플로우 코드 작성(완료).
|
|
|
|
## 코드 리팩토링.
|
|
### 2024.10.04
|
|
* 전체 리팩토링(완료).
|
|
* 모듈화, 패키지화(완료).
|
|
|
|
## Docker Image Build
|
|
### 2024.10.04 업데이트
|
|
* Dockerfile 추가(완료).
|
|
|
|
## Kubernetes manifests
|
|
### 2024.10.04 업데이트
|
|
* 샘플 템플릿 작성(완료)
|
|
* 쿠버네티스 환경 테스트(완료).
|
|
|
|
---
|
|
|
|
## 코드 이슈
|
|
* 특이사항 없음.
|
|
|
|
---
|
|
|
|
## 라이선스
|
|
### 라이선스 검토 대상
|
|
2024.10.02 기준 패키지 라이선스 목록:
|
|
```
|
|
annotated-types (0.7.0): MIT License
|
|
anyio (4.6.0): MIT License
|
|
beautifulsoup4 (4.12.3): MIT License
|
|
certifi (2024.8.30): Mozilla Public License 2.0 (MPL-2.0)
|
|
charset-normalizer (3.3.2): MIT License
|
|
colorama (0.4.6): BSD License
|
|
distro (1.9.0): Apache License 2.0
|
|
exceptiongroup (1.2.2): MIT License
|
|
h11 (0.14.0): MIT License
|
|
httpcore (1.0.6): BSD License
|
|
httpx (0.27.2): BSD License
|
|
idna (3.10): BSD License
|
|
jiter (0.5.0): MIT License
|
|
mysql-connector-python (9.0.0): GNU General Public License v2.0 (GPL-2.0)
|
|
openai (1.51.0): MIT License
|
|
pydantic (2.9.2): MIT License
|
|
pydantic_core (2.23.4): MIT License
|
|
python-dotenv (1.0.1): BSD License
|
|
requests (2.32.3): Apache License 2.0
|
|
sniffio (1.3.1): MIT License
|
|
soupsieve (2.6): MIT License
|
|
tqdm (4.66.5): MPL-2.0
|
|
typing_extensions (4.12.2): Python Software Foundation License
|
|
urllib3 (2.2.3): MIT License
|
|
```
|
|
|
|
### 라이선스 이슈
|
|
mysql-connector-python이 GPL-2.0 라이선스를 따릅니다. 이 라이선스는 강력한 '카피레프트' 성격을 가지고 있으며, 프로젝트 전체를 GPL-2.0으로 배포해야 할 의무가 있습니다. 이 라이선스를 사용하는 패키지를 포함한 프로젝트를 배포할 때는 소스 코드 공개 및 동일한 라이선스로 배포해야 합니다.
|
|
|
|
PyMySQL, mysqlclient 검토 필요. |