**속보 Push/Discord 알림 — 임시글(draft) 상태에서 알림 발송 방지** — AI 수집기가 기사를 임시글(draft)로 생성할 때, _is_breaking 속보 플래그가 설정되고 Discord 속보 알림이 발송되던 버그 수정. 속보 알림이 아닌 기사에 대해 속보 크롬 알림이 뜨는 문제 해결. **수정 내용**: (1) ai_publisher에서 속보 지정(\_is_breaking) 및 Discord 알림을 publish 상태에서만 실행하도록 변경 (2) Push 알림(OneSignal)에 기사 나이 확인(6시간 이내만 허용) + 게시물 상태 이중 확인 안전장치 추가 (3) 기존 임시글의 잘못된 속보 플래그 일괄 정리
**커뮤니티 보드 글쓰기 — 이미지·영상·링크카드 커서 위치 삽입 수정** — 글쓰기 에디터에서 이미지 붙여넣기, 영상 첨부, URL 링크 카드 삽입 시 커서 위치와 무관하게 항상 본문 맨 아래에 추가되던 버그 수정. **근본 원인**: 업로드 placeholder와 로딩 카드를 editor.appendChild()로 삽입하여 Selection/Range(커서 위치) 무시. **수정**: insertAtCursor() 헬퍼 함수 도입 — window.getSelection() Range API를 사용하여 현재 커서 위치에 정확히 삽입. 파일 대화상자 등으로 포커스 이탈 시에도 selectionchange 이벤트로 마지막 에디터 내 커서를 자동 보존·복원. 이미지 붙여넣기(Ctrl+V), 이미지 버튼(📷) 클릭 선택, 영상 버튼(🎬) 클릭 선택, 드래그 앤 드롭, URL 링크 카드(🪧/붙여넣기) 5가지 미디어 삽입 경로 모두 커서 위치 존중. board.js 전역 참조(window._gbbInsertAtCursor)로 크로스 스크립트 연동
Modrinth 기사 대표이미지 누락 수정 — modrinth_publish_to_wp()가 이미지 없이 즉시 publish 상태로 발행하던 문제 해결. icon/gallery 없는 프로젝트(BadOptimizations 등) 3건 수정 완료.
기존 게시글 평문 URL 미변환 버그 수정 — embed.php 5단계 정규식 lookbehind에서 > 문자 제거. <div>https://... 패턴에서 닫힌 HTML 태그 바로 뒤의 URL이 링크로 변환되지 않던 문제 해결. Discord, Naver Form 등 모든 일반 URL이 페이지 로딩 시 자동으로 <a> 태그로 변환됨.
🔧
개선 2
Modrinth 발행 안전장치 v2.2 — draft→이미지 확인→publish 전환 패턴 적용. Imagen AI 폴백 추가로 icon/gallery 없는 프로젝트도 자동 이미지 생성 후 발행.
글쓰기 폼 URL 제출 처리 개선 — 에디터에서 자동 생성된 링크(<a class=gbb-auto-link>)를 제출 시 평문 URL로 역변환하지 않고 링크 상태를 유지하도록 변경. 서버사이드 이중 변환 방지 및 저장 효율성 향상.
🆕
신규 기능 2
전역 대표이미지 안전망 v2.0 — transition_post_status 훅으로 모든 발행 경로 감시. 이미지 없이 publish 전환 시 Imagen AI 자동 생성 시도, 실패 시 draft 유지로 이미지 없는 기사 공개 원천 차단.
커뮤니티 게시판 URL 자동 링크화 시스템 — 글쓰기 에디터에서 URL 입력 시(Space/Enter) 자동으로 클릭 가능한 링크로 실시간 변환. 서버사이드에서도 저장 시 평문 URL을 <a> 태그로 자동 변환하여 누락 방지. 기존 HTML 태그/링크 카드/임베드는 보호 처리.
AI 발행 품질 전환 v4.5 — 일 ~80건 무제한 발행에서 일 10~20건 고품질 + 인간 편집 필수 체제로 전환. 크론 주기 45분→2시간, daily_max_publish 코드 실제 적용 (기존 미사용 버그 수정), 발행 상태 draft 전환, 관련도 80+·품질 70+ 기준 상향
Modrinth 파이프라인 품질 전환 v2.3 — (1) 모든 Modrinth 에이전트(업데이트/트렌딩/신규/기능/차트) 기사를 draft 상태로 전환, 편집장 검수 후 수동 발행 필수. (2) 업데이트 체커에 시맨틱 버전(semver) 패치 감지 추가 — 패치 업데이트(세 번째 자리만 변경, 예: v1.3.14→v1.3.15)는 기사 생성 스킵, 마이너/메이저 변경만 기사화. 검색 유입이 없는 저품질 업데이트 기사 대량 차단
🐛
버그 수정 1
daily_max_publish 미적용 버그 수정 — config.php에 daily_max_publish=40 설정이 존재했으나, ai_publisher.php에서 해당 값을 참조하는 코드가 전혀 없어 일일 발행 제한이 동작하지 않던 근본 원인 수정. 일일 발행 카운트를 wp_posts 테이블에서 실시간 조회하여 제한 적용
🆕
신규 기능 4
마인크래프트 가이드 카테고리 구조 생성 — MC 가이드 콘텐츠 전략 실행을 위한 4개 서브 카테고리 생성: 모드 가이드(87677), 서버 가이드(87678), 공략/팁(87679), 최적화(87680). 부모: 마인크래프트(30). Modrinth 허브(75808)는 별도 유지. CATEGORY_MAP에 신규 ID 등록 완료
마인크래프트 가이드 생성기 v1.0 (cron/mc-guide-generator.php) — Gemini AI 기반 심층 가이드 기사 초안 생성 시스템. 단건/배치(JSON) 모드 지원. Rank Math SEO 자동 설정(Focus Keyword, Meta Description, HowTo/Article Schema), 스크린샷 플레이스홀더, FAQ 섹션, 기존 MC 기사 50건 참조 내부 링크, Imagen AI 대표 이미지 자동 생성. 모든 기사 draft 상태로 저장 (편집장 검수 필수)
Modrinth 모드 가이드 생성기 v1.0 (cron/modrinth-mod-guide.php) — Modrinth 워치리스트 다운로드 상위 프로젝트에서 AI 심층 가이드 자동 생성. Modrinth API 상세정보 수집 → Gemini AI 한국어 가이드 → WP draft 저장 → Rank Math SEO. content_type=mod_guide로 이력 관리. API 라이브러리 자동 제외. modrinth_published ENUM에 mod_guide 추가. 첫 실행: Sodium/Iris Shaders/Entity Culling 3편 생성 성공
MC 가이드 발행 스케줄러 v1.0 (cron/mc-guide-scheduler.php + mc-guide-schedule.json) — 4주 발행 캘린더 기반 자동 가이드 생성. 월-금 07:00 크론(#36) 등록. 월·화 Tier 1, 수 Modrinth 모드 ×2, 목·금 Tier 2 패턴. slug 중복 방지, 스케줄 범위 밖 fallback 패턴 지원
**MC 서버 제어 — 예약 명령어 스케줄러 중복 실행 수정** — 예약 명령어 스케줄러에서 명령어가 동일 시간에 2번씩 실행되던 버그 수정. **근본 원인**: 시스템 cron(`cron-run-schedules.php`)과 WP Cron(`gbmc_cron_run_schedules` 액션)이 동일한 `gbmc_run_scheduled_commands()` 함수를 동시에 호출하여 같은 명령어가 2초 이내에 중복 실행. 활동 로그에서 동일 시각(초 단위)에 같은 명령어가 2건씩 기록되는 증상으로 확인됨. **수정**: transient 기반 실행 잠금(Lock) 메커니즘 도입 — 55초 TTL의 락을 획득한 첫 번째 실행만 진행, 두 번째 호출은 "이미 실행 중" 로그를 남기고 즉시 스킵. race condition 대응을 위한 2단계 락 검증(획득 후 재확인) 적용. 기존 예약 명령어 데이터는 100% 보존
**커뮤니티 보드 글쓰기 — 이미지·영상·링크카드 커서 위치 삽입 수정** — 글쓰기 에디터에서 이미지 붙여넣기, 영상 첨부, URL 링크 카드 삽입 시 커서 위치와 무관하게 항상 본문 맨 아래에 추가되던 버그 수정. **근본 원인**: 업로드 placeholder와 로딩 카드를 editor.appendChild()로 삽입하여 Selection/Range(커서 위치) 무시. **수정**: insertAtCursor() 헬퍼 함수 도입 — window.getSelection() Range API를 사용하여 현재 커서 위치에 정확히 삽입. 파일 대화상자 등으로 포커스 이탈 시에도 selectionchange 이벤트로 마지막 에디터 내 커서를 자동 보존·복원. 이미지 붙여넣기(Ctrl+V), 이미지 버튼(📷) 클릭 선택, 영상 버튼(🎬) 클릭 선택, 드래그 앤 드롭, URL 링크 카드(🪧/붙여넣기) 5가지 미디어 삽입 경로 모두 커서 위치 존중. board.js 전역 참조(window._gbbInsertAtCursor)로 크로스 스크립트 연동
Modrinth 기사 대표이미지 누락 수정 — modrinth_publish_to_wp()가 이미지 없이 즉시 publish 상태로 발행하던 문제 해결. icon/gallery 없는 프로젝트(BadOptimizations 등) 3건 수정 완료.
기존 게시글 평문 URL 미변환 버그 수정 — embed.php 5단계 정규식 lookbehind에서 > 문자 제거. <div>https://... 패턴에서 닫힌 HTML 태그 바로 뒤의 URL이 링크로 변환되지 않던 문제 해결. Discord, Naver Form 등 모든 일반 URL이 페이지 로딩 시 자동으로 <a> 태그로 변환됨.
🔧
개선 2
Modrinth 발행 안전장치 v2.2 — draft→이미지 확인→publish 전환 패턴 적용. Imagen AI 폴백 추가로 icon/gallery 없는 프로젝트도 자동 이미지 생성 후 발행.
글쓰기 폼 URL 제출 처리 개선 — 에디터에서 자동 생성된 링크(<a class=gbb-auto-link>)를 제출 시 평문 URL로 역변환하지 않고 링크 상태를 유지하도록 변경. 서버사이드 이중 변환 방지 및 저장 효율성 향상.
🆕
신규 기능 2
전역 대표이미지 안전망 v2.0 — transition_post_status 훅으로 모든 발행 경로 감시. 이미지 없이 publish 전환 시 Imagen AI 자동 생성 시도, 실패 시 draft 유지로 이미지 없는 기사 공개 원천 차단.
커뮤니티 게시판 URL 자동 링크화 시스템 — 글쓰기 에디터에서 URL 입력 시(Space/Enter) 자동으로 클릭 가능한 링크로 실시간 변환. 서버사이드에서도 저장 시 평문 URL을 <a> 태그로 자동 변환하여 누락 방지. 기존 HTML 태그/링크 카드/임베드는 보호 처리.
일간 매거진 3/28 미발행 장애 복구 (daily_magazine v3.3.1) — 3월 28일 일간 매거진(Vol.30)이 자동 발행되지 않은 장애 진단 및 수동 발행 복구. logrotate + shell redirect + 자체 로깅 충돌이 근본 원인. 수동 발행으로 Vol.30 Post #112344 복구 완료. 재발 방지: logrotate copytruncate 전환, cron redirect 제거, 오후 12:00 retry 추가, 엔진 v3.3.1 진단 로깅 강화
마비노기 모바일 1주년 기사 수정 — 불필요한 빈 게임정보 테이블 및 "아쉽게도 게임의 상세한 기종..." 잘못된 안내 텍스트 제거 (Post #111952)
🔧
개선 1
미디어 추출기 v5.0.0 — Ruliweb 이미지 고해상도 자동 변환(/img/ → /ori/) 및 소스 프로필 고도화. body_selector를 .news_content_wrapper로 정밀화하여 tbl_view(관련게임정보) 테이블 오염 방지
**커뮤니티 보드 글쓰기 — 이미지·영상·링크카드 커서 위치 삽입 수정** — 글쓰기 에디터에서 이미지 붙여넣기, 영상 첨부, URL 링크 카드 삽입 시 커서 위치와 무관하게 항상 본문 맨 아래에 추가되던 버그 수정. **근본 원인**: 업로드 placeholder와 로딩 카드를 editor.appendChild()로 삽입하여 Selection/Range(커서 위치) 무시. **수정**: insertAtCursor() 헬퍼 함수 도입 — window.getSelection() Range API를 사용하여 현재 커서 위치에 정확히 삽입. 파일 대화상자 등으로 포커스 이탈 시에도 selectionchange 이벤트로 마지막 에디터 내 커서를 자동 보존·복원. 이미지 붙여넣기(Ctrl+V), 이미지 버튼(📷) 클릭 선택, 영상 버튼(🎬) 클릭 선택, 드래그 앤 드롭, URL 링크 카드(🪧/붙여넣기) 5가지 미디어 삽입 경로 모두 커서 위치 존중. board.js 전역 참조(window._gbbInsertAtCursor)로 크로스 스크립트 연동
Modrinth 기사 대표이미지 누락 수정 — modrinth_publish_to_wp()가 이미지 없이 즉시 publish 상태로 발행하던 문제 해결. icon/gallery 없는 프로젝트(BadOptimizations 등) 3건 수정 완료.
기존 게시글 평문 URL 미변환 버그 수정 — embed.php 5단계 정규식 lookbehind에서 > 문자 제거. <div>https://... 패턴에서 닫힌 HTML 태그 바로 뒤의 URL이 링크로 변환되지 않던 문제 해결. Discord, Naver Form 등 모든 일반 URL이 페이지 로딩 시 자동으로 <a> 태그로 변환됨.
🔧
개선 2
Modrinth 발행 안전장치 v2.2 — draft→이미지 확인→publish 전환 패턴 적용. Imagen AI 폴백 추가로 icon/gallery 없는 프로젝트도 자동 이미지 생성 후 발행.
글쓰기 폼 URL 제출 처리 개선 — 에디터에서 자동 생성된 링크(<a class=gbb-auto-link>)를 제출 시 평문 URL로 역변환하지 않고 링크 상태를 유지하도록 변경. 서버사이드 이중 변환 방지 및 저장 효율성 향상.
🆕
신규 기능 2
전역 대표이미지 안전망 v2.0 — transition_post_status 훅으로 모든 발행 경로 감시. 이미지 없이 publish 전환 시 Imagen AI 자동 생성 시도, 실패 시 draft 유지로 이미지 없는 기사 공개 원천 차단.
커뮤니티 게시판 URL 자동 링크화 시스템 — 글쓰기 에디터에서 URL 입력 시(Space/Enter) 자동으로 클릭 가능한 링크로 실시간 변환. 서버사이드에서도 저장 시 평문 URL을 <a> 태그로 자동 변환하여 누락 방지. 기존 HTML 태그/링크 카드/임베드는 보호 처리.
MC 관리자 페이지 — 신청서 바로가기 링크 추가 — 신청서 목록 동작 컬럼에 🔗 아이콘 추가. 클릭 시 해당 신청서의 프론트엔드 폼 페이지(/mc-server/?form={id})로 바로 이동 가능. 플러그인 v1.9.6
🐛
버그 수정 1
MC 신청서 자동 마감 시간대 버그 수정 (Critical) — 마감일 비교 시 PHP time()(UTC)과 KST로 저장된 마감일을 비교하여 9시간 지연 발생. WordPress current_time()으로 통일하여 KST 기준 정확한 마감 처리. 5분 간격 wp_cron 자동 마감 기능 추가(기존에는 DB status 전환 로직 없었음). 관리자 목록에 실시간 기한초과 표시 추가
🔒
보안 1
마감된 신청서 폼 페이지 보안 강화 — 마감/기한초과 신청서 접근 시 신청 폼과 제출 버튼 완전 제거. 마감 안내 메시지 + 목록 복귀 버튼으로 교체. 마감 사유(기한초과/수동마감/일반마감) 구분 표시
일간 매거진 3/28 미발행 장애 복구 (daily_magazine v3.3.1) — 3월 28일 일간 매거진(Vol.30)이 자동 발행되지 않은 장애 진단 및 수동 발행 복구. logrotate + shell redirect + 자체 로깅 충돌이 근본 원인. 수동 발행으로 Vol.30 Post #112344 복구 완료. 재발 방지: logrotate copytruncate 전환, cron redirect 제거, 오후 12:00 retry 추가, 엔진 v3.3.1 진단 로깅 강화
마비노기 모바일 1주년 기사 수정 — 불필요한 빈 게임정보 테이블 및 "아쉽게도 게임의 상세한 기종..." 잘못된 안내 텍스트 제거 (Post #111952)
🔧
개선 1
미디어 추출기 v5.0.0 — Ruliweb 이미지 고해상도 자동 변환(/img/ → /ori/) 및 소스 프로필 고도화. body_selector를 .news_content_wrapper로 정밀화하여 tbl_view(관련게임정보) 테이블 오염 방지
CDN HEAD 미지원 이미지 검증 실패 수정 — cdn.gametoc.co.kr 등 일부 CDN이 HTTP HEAD 요청에 404를 반환하여 원본 이미지 사용 실패, AI 이미지로 대체되던 문제 수정. HEAD 404 발생 시 GET Range(0-1023) 폴백 검증 로직 추가로 125건+ gametoc 기사 이미지 수집 안정화
사이드바 영상 혼입 방지 — 소스 프로필이 등록된 도메인에서 전체 HTML 영상 폴백 추출을 비활성화하여, gametoc.co.kr 사이드바 위젯의 관련 없는 YouTube 영상(스타세이비어 CBT 등)이 기사에 삽입되는 문제 수정
🆕
신규 기능 1
gametoc.co.kr 소스 프로필 등록 — gn_source_profiles에 게임톡(www.gametoc.co.kr) 본문 추출 프로필 추가. body_selector: #article-view-content-div, 노이즈 요소 제거 설정 포함
🔧
개선 1
FC 온라인 엪온 자율학습 기사 이미지 교체 — AI 생성 이미지에서 출처(gametoc.co.kr) 원본 프로모션 이미지로 수동 교체 완료