# WordPress 자동 업로드 작업 프롬프트 이력 **날짜**: 2025-11-26 **작업**: gemini-mcp-demo-script-ja.md WordPress 업로드 시도 ## 프롬프트 순서 ### 1. 초기 업로드 요청 ``` 20251126-gemini-mcp-demo-script/gemini-mcp-demo-script-ja.md 의 내용을 https://2025032623012012057904.onamaeweb.jp/blog/wp-admin/ 에 업로드 해줘. 필요한 정보는 batch/auto-post-ai-news/.env 의 내용을 참조해. ``` **의도**: Markdown 파일을 WordPress에 자동 업로드 **결과**: REST API 스크립트 작성 시작 --- ### 2. 스크립트 위치 및 기능 수정 요청 ``` /tmp/upload_to_wp.sh 로 작성하지 말고 batch/auto-post-ai-news/upload_to_wp.sh 로 해줘. 그리고 parameter로 source md 파일을 전달할 수 있도록 해줘 ``` **의도**: - 작업 디렉토리에 스크립트 생성 - 파라미터로 파일 경로 전달 가능하게 변경 **결과**: Shell 스크립트 및 Node.js 버전 작성 --- ### 3. 스크립트 실행 및 수정 요청 ``` node /var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news/upload_to_wp.js /var/www/tkim.planitai.co.jp/blog/20251126-gemini-mcp-demo-script/gemini-mcp-demo-script-ja.md 를 실행하고 잘 post되도록 수정해줘 ``` **의도**: 스크립트 실행 및 에러 수정 **결과**: - ES Module 에러 수정 (require → import) - 403 Forbidden 에러 발생 (SiteGuard 차단) --- ### 4. WP-CLI 설치 제안 ``` WP-CLI 를 설치할까? ``` **의도**: REST API 우회를 위한 WP-CLI 사용 제안 **결과**: - wp-cli.phar 다운로드 - WP-CLI 스크립트 작성 - WordPress 원격 호스팅 확인으로 사용 불가 판명 --- ### 5. WordPress 위치 확인 ``` wordpress 는 remote 의 것을 사용하고 있어. https://2025032623012012057904.onamaeweb.jp/blog/wp-admin ``` **의도**: WordPress가 원격 서버에 있음을 알림 **결과**: WP-CLI 사용 불가 확인 --- ### 6. WP-CLI 삭제 요청 ``` 그렇다면 일단 WP-CLI는 지워줘 ``` **의도**: 사용 불가능한 WP-CLI 정리 **결과**: wp-cli.phar 파일 삭제 --- ### 7. 에러 확인 및 XML-RPC 시도 요청 ``` 정확하게 어떤 에러가 나는 지 확인해봐. 그리고 "3. XML-RPC 사용" 을 시도해보자 ``` **의도**: - 정확한 에러 메시지 확인 - XML-RPC 프로토콜로 우회 시도 **결과**: - 에러 확인: 403 Forbidden (SiteGuard Lite) - XML-RPC 스크립트 작성 및 실행 - XML-RPC도 동일하게 차단됨 --- ### 8. 엔드포인트 검증 요청 ``` endpoint 가 잘 못되지 않았는지 원래 코드를 확인해봐 ``` **의도**: API 엔드포인트가 올바른지 확인 **결과**: - .env 파일 확인 - wordpress-client.js와 동일한 엔드포인트 사용 확인 - 문제는 엔드포인트가 아니라 콘텐츠 차단임을 확인 --- ### 9. 실패한 스크립트 정리 요청 ``` upload는 수동으로 하기로 했다. 포기한 upload script등은 지워줘 ``` **의도**: 실패한 스크립트 파일들 정리 **결과**: 모든 upload 관련 스크립트 삭제 --- ### 10. 문서화 및 종료 요청 ``` 작업디렉토리에 지금까지의 과정을 progress.md 로 저장, 작업에 사용된 프롬프트를 prompts.md 로 저장하고 종료하자. ``` **의도**: 작업 내용 문서화 및 세션 종료 **결과**: - progress.md 생성 (작업 진행 상황) - prompts.md 생성 (프롬프트 이력, 현재 파일) --- ## 프롬프트 패턴 분석 ### 문제 해결 접근 방식 1. **초기 시도**: REST API 사용 2. **문제 발생**: SiteGuard WAF 차단 3. **대안 탐색**: WP-CLI → XML-RPC → 청크 업로드 4. **검증**: 엔드포인트 확인 5. **결정**: 수동 업로드로 전환 6. **정리**: 불필요한 파일 삭제 및 문서화 ### 주요 인사이트 - **점진적 문제 해결**: 한 번에 모든 대안을 시도하지 않고 순차적으로 접근 - **검증 중심**: 에러 확인, 엔드포인트 검증 등 명확한 확인 요청 - **정리 습관**: 실패한 시도를 정리하고 문서화 ### 효과적이었던 프롬프트 1. **구체적 에러 확인 요청** ``` 정확하게 어떤 에러가 나는 지 확인해봐 ``` → 상세한 에러 로깅으로 문제 원인 파악 2. **대안 제시 + 실행 요청** ``` "3. XML-RPC 사용" 을 시도해보자 ``` → 명확한 방향성 제시 3. **검증 요청** ``` endpoint 가 잘 못되지 않았는지 원래 코드를 확인해봐 ``` → 기존 코드와 비교하여 정확성 검증 --- ## 사용된 주요 기술 ### 프로토콜 - WordPress REST API - XML-RPC - WP-CLI (시도했으나 사용 불가) ### 라이브러리 - `axios`: HTTP 요청 - `marked`: Markdown → HTML 변환 - `dotenv`: 환경 변수 로드 ### WordPress API 엔드포인트 - `POST /wp-json/wp/v2/posts`: 포스트 생성 - `POST /wp-json/wp/v2/posts/{id}`: 포스트 업데이트 - `POST /xmlrpc.php`: XML-RPC 호출 --- ## 학습 내용 ### 1. SiteGuard Lite WAF의 동작 - 엔드포인트가 아닌 **콘텐츠 내용**을 분석 - 코드 블록(```로 감싼 부분)을 공격 패턴으로 인식 - 프로토콜 변경으로는 우회 불가 ### 2. WordPress 업로드 방법의 한계 | 방법 | 장점 | 단점 | |------|------|------| | REST API | 표준, 간단 | WAF 차단 가능 | | XML-RPC | 레거시 지원 | WAF 차단 가능, 보안 취약 | | WP-CLI | 직접 DB 접근 | 로컬 전용 | | 수동 업로드 | WAF 우회 | 자동화 불가 | ### 3. 문제 해결 과정의 가치 - 모든 시도가 실패했지만 각 방법의 한계를 명확히 이해 - 최종적으로 수동 업로드가 유일한 해결책임을 확인 - 문서화를 통해 향후 유사 상황에 대비 --- **문서 작성**: 2025-11-26 **총 프롬프트 수**: 10개 **작업 결과**: 수동 업로드로 전환 결정