연승 표시 바 — 개별 게임 페이지에서 현재 연승·최고 연승·게임별 1위를 표시하는 컴팩트 바. 3연승 이상 시 불타는 글로우 효과
신기록 축하 연출 — 연승 신기록 달성 시 풀스크린 오버레이(회전 링+파티클+불꽃놀이) 자동 재생. 탭/클릭으로 닫기
모바일 UX 최적화 — 연승 바, 축하 오버레이, 명예의 전당 페이지 모두 모바일 반응형 대응. 라이트 모드 호환
카지노 허브 섹션 안내 박스 — 수익왕·연승·최초 기록자 3개 섹션에 로직 설명 박스 추가. 초기화 주기(수익왕: 매주 월요일/연승·파이오니어: 영구), 기록 방식(배팅 골드별 독립), 세션 게임 연승 확정 조건 등을 간결한 안내 텍스트로 표시. 다크/라이트 모드·모바일 반응형 대응
MediaExtractor v4.9.1 — Gamer Network YouTube youtube-nocookie.com + data-src 패턴 추가 — Rock Paper Shotgun 등 Gamer Network 계열 사이트는 iframe에 src="youtube-nocookie.com/embed/..." + data-src="youtube.com/embed/..." 이중 속성 사용. 기존 패턴 2는 youtube.com/embed/만 매칭하여 RPS 기사에서 YouTube 비디오 미수집. data-src 우선 + youtube-nocookie.com 정규식 추가, .video-stage 외부 iframe도 검색하여 누락 방지. ReVamp 기사 (#88786) 테스트 결과 ijIg_qm3SmU 정상 추출 확인
MediaExtractor v4.9 — IGN 슬라이드쇼 갤러리 cURL 자동 추출 — IGN 처리된 HTML 내 data-transform="slideshow" + 슬러그 속성 감지 시 /slideshows/{slug} 페이지를 추가 cURL 요청하여 SSR된 태그에서 ignimgs.com 갤러리 이미지 자동 추출. Blight: Survival 기사 테스트 결과 10장 중 6장(feedImage 1 + SSR 갤러리 5) 자동 수집 성공(v4.8 대비 6배). 데이터 속성 유형별 분기: slideshow→갤러리 이미지 추출, ignvideo→비디오 URL 생성. IGN GraphQL API(mollusk.apis.ign.com/graphql) 조사 완료 — introspection 비활성화로 직접 쿼리 불가, 향후 역공학 시 전량 추출 가능성 확인
⚠️ 한계: IGN SSR은 슬라이드쇼 이미지의 약 50%만 렌더링 (나머지는 클라이언트 JS에서 lazy load). 전량 추출에는 headless browser 또는 GraphQL 역공학 필요
MediaExtractor v4.8 — IGN Next.js 데이터 JSON 기반 미디어 추출 — IGN은 Next.js SPA로 기사 본문이 HTML DOM에 렌더링되지 않고 내 JSON의 처리된 HTML 필드에 저장. cURL로 가져온 HTML에서 Next.js 데이터 JSON을 파싱하여: ① 처리된 HTML에서 HTML 태그 제거 후 본문 텍스트 추출(7,075자), ② youtu.be/xxx 링크에서 YouTube ID 추출, ③ 슬러그 속성 속성에서 IGN 자체 비디오 메타 참조, ④ JSON 전체에서 ignimgs.com 이미지 URL 수집. IGN 도메인 감지 시 extractFullContent에서 early return. 갤러리 이미지는 React 클라이언트 컴포넌트 전용(별도 API 호출)으로 cURL 추출 불가 — 수동 보정 필요
MediaExtractor v4.7 — Valnet CMS YouTube JS 동적 렌더링 대응 — DualShockers, TheGamer, GameRant, ScreenRant, CBR 등 Valnet 산하 15개 사이트에서 YouTube 비디오가 서버 사이드 HTML에 포함되지 않아(JS 동적 렌더링) 전량 미수집되던 구조적 한계에 대응. 도메인 인식 함수: 15개 Valnet 도메인 자동 인식. YouTube 추출 함수: window.youtubeEmbedCodes JS 변수, window.arrayOfEmbeds, 태그 내 직접 검색 3가지 패턴으로 YouTube ID 파싱. extractFullContent Step 1.57에서 노이즈 제거 전 JS 비디오 사전 추출. 단, 일부 기사는 youtubeEmbedCodes = [](빈 배열)로 완전 JS 렌더링이라 한계 존재 — 이 경우 Gematsu 등 교차 소스 참조로 수동 보정
MicroCollect v7.4 — RSS 짧은 본문 수집 시 media_extractor 재추출 보장 — RSS description/content:encoded에서 추출한 본문 데이터가 200~999자로 짧은 경우, cURL 접근 가능한 사이트(Game Rant 등)에서 미디어 상태 필드를 extracted로 조기 전환하여 media_extractor가 원문을 재방문하지 않던 근본적 문제 해결. 이제 본문 데이터 1,000자 미만 + cURL 가능 사이트는 pending 유지하여 media_extractor가 풍부한 본문(이미지+영상 포함)을 재추출. cURL 차단 사이트(GameSpot, DotEsports)는 기존대로 extracted 처리. Game Rant Wii 스포츠 기사에서 본문 데이터 435자→5,339자, 이미지 0→5개, 영상 0→1개 수집 확인
사이트 전체 "스트리머" → "방송 채널" 용어 일괄 변경 — 프론트엔드 4페이지(/streamers/, /streamer-register/, /wp-admin/, 관리 페이지), 플러그인 3개(스트리머 허브 플러그인, 스트리머 등록 플러그인, 대시보드 위젯 플러그인), 테마(테마 설정, 카테고리 페이지 템플릿), 어드민 메뉴(관리자 메뉴 모듈) 총 13개 파일에서 한국어 사용자 대면 텍스트를 "스트리머" → "방송 채널"로 일괄 변환. WP 페이지 #137 제목도 "방송 채널 등록"으로 변경. sed 변환 후 "방송 채널 채널을" 등 중복 문구 2건 수동 정리. 영문 코드명(함수명, URL slug, CSS 클래스)은 미변경
MediaExtractor v4.6 — Gamer Network .video-stage 비디오 사전 추출 패턴 확장 — Nintendo Life 등 Gamer Network 계열 사이트가 기존 a.video-facade 패턴 대신 .video-stage 안에 iframe[src*="youtube.com/embed/"] 또는 a[href*="youtube.com/watch"] 형태로 YouTube embed를 포함하도록 구조가 변경됨. .video-stage가 remove_selectors에 포함되어 노이즈 제거 시 비디오가 함께 삭제되는 문제를 해결하기 위해, 3가지 패턴(facade + iframe + 썸네일 링크)으로 노이즈 제거 전 사전 추출 로직 보강. 중복 방지 로직 추가
MicroCollect v7.3 — RSS 리스트/갤러리 구조 보존 + summary 폴백 + data-src 비디오 추출 — ① RSS description/content:encoded 내 태그를 "• " 줄바꿈으로, / 태그를 "### " 헤더로 텍스트 변환 시 보존하여, GameSpot 갤러리 등 구조화된 리스트 기사의 본문 데이터 품질 대폭 향상. ② 본문 데이터가 비어있고 summary가 200자 이상이면 summary를 본문 데이터 폴백으로 사용하여 갤러리형 RSS(content:encoded 없는 기사) 커버리지 확보. ③ GameSpot 특유의 패턴에서 YouTube URL 추출 지원 추가
MicroCollect v7.2 — RSS description HTML 폴백 수집 — content:encoded가 없는 RSS 피드(GameSpot 등)에서도 description CDATA에 포함된 HTML 본문 텍스트, YouTube iframe embed, 이미지를 자동 추출하도록 개선. GameSpot은 Cloudflare 차단(cURL 403)으로 HTML 직접 스크래핑이 불가능하지만, RSS description에 풍부한 본문과 YouTube-nocookie embed가 포함되어 이를 활용. "Continue Reading at GameSpot" 등 끝부분 링크 자동 제거
RSS 영상 URL 파싱 함수 youtube-nocookie.com 지원 — RSS 내 YouTube embed URL이 youtube-nocookie.com 도메인을 사용하는 경우에도 정상적으로 video ID를 추출하도록 패턴 확장
GameSpot blockedDomains 등록 — GameSpot이 cURL 접근 시 403을 반환하여 media_extractor의 불필요한 HTTP 요청(15초 타임아웃)을 방지. RSS description 폴백으로 수집 처리
Primary Footer ↔ Secondary Footer 여백 추가 — 3단 위젯 카드 영역(Primary Footer)과 하단 네비게이션 메뉴(Secondary Footer) 사이에 여백이 없어 밀착되어 있던 문제 해결. 데스크톱 32px·모바일 24px 간격 추가, 보라→핑크→시안 그라데이션 구분선(1px)으로 시각적 분리 강화
Primary Footer 여백 배경색 일관성 수정 — 여백을 margin-bottom으로 구현하여 부모 요소의 배경이 노출되던 문제를 padding-bottom으로 전환, primary-footer 자체 배경(#0c0c14 다크 코스믹 그라데이션) 안에서 간격이 생기도록 수정하여 스타일 일관성 확보
Secondary Footer 네비게이션 중앙 정렬 — 하단 네비게이션 링크가 수평·수직 중앙 정렬되지 않던 문제 해결. Flexbox 기반으로 컨테이너 전체(secondary-footer → af-container-row → footer-nav-wrapper → menu)에 display:flex; align-items:center; justify-content:center 적용, 이모지-텍스트 수직 정렬(inline-flex)까지 포함
PHP-FPM 자동 복구 설정 강화 — PHP-FPM 크래시 시 자동 재시작(Restart=on-failure) 설정 추가. 재시작 시 OPcache 파일 캐시 자동 정리(ExecStartPre)로 손상된 캐시로 인한 연쇄 크래시 방지. 5분 내 5회 재시작 제한으로 무한 루프 방어
🔬 PHP-FPM SIGSEGV 근본 원인 영구 조치 — 5계층 인과관계(OPcache file_cache 손상 → glibc 힙 오염 → Imagick EOL → Wordfence 부하 → 커널 업그레이드)를 분석하여 3개 영구 조치 적용: ① Imagick(ImageMagick 6.x EOL) FPM에서 비활성화 — SIGSEGV 유력 트리거 제거, WordPress 이미지 처리는 GD 2.3.3으로 안전 폴백. ② OPcache를 파일 캐시(file_cache_only)에서 공유메모리(SHM) 모드로 전환 — 파일 캐시 손상 원인 근본 차단, JIT는 비활성화 유지. ③ PHP 7.4 avif.so 누락 경고 제거. 재시작 후 SIGSEGV 0건, gameboy.kr TTFB 35~45ms 정상 확인
MediaExtractor v4.5 — Gamer Network 갤러리/비디오 수집 — Eurogamer, VG247, Rock Paper Shotgun, Nintendo Life 등 Gamer Network 산하 9개 사이트(계열)에서 갤러리 이미지와 YouTube 트레일러가 전혀 수집되지 않던 근본적 문제 해결. ① 도메인 인식 함수: 9개 도메인 자동 인식. ② 갤러리 추출 함수: div.gallery 컴포넌트 내 모든 이미지를 파일명 기반 중복 제거 후 gnwcdn.com URL 파라미터(width=100→1280)를 재설정하여 고해상도 추출. ③ YouTube video-facade 패턴 사전 추출: iframe이 아닌 a.video-facade[href] facade 구조에서 embed URL 파싱. ④ 본문 노드 탐색 함수 폴백에 본문 셀렉터 추가, 노이즈 제거 함수에 desktop_mpu, primis_wrapper, poll_wrapper 등 8개 Gamer Network 노이즈 셀렉터 추가. 비 Gamer Network 사이트는 기존 동작 100% 유지
Eurogamer 소스 프로필 노이즈 셀렉터 확장 — 소스 프로필 테이블 eurogamer.net의 remove_selectors를 7개→14개로 확장하여 광고 슬롯·비디오 광고·설문·사이드바 등 Gamer Network 전용 노이즈 정밀 제거
MediaExtractor v4.4 — Future PLC 제품 이미지 수집 개선 — GamesRadar, PCGamer, TechRadar 등 Future PLC 계열(12개 사이트) 기사에서 제품 이미지(aside.hawk-affiliate-link-productblock)가 전량 미수집되던 근본적 문제 해결. ① 제품 이미지 추출 함수: 노이즈 제거 전 제품 블록·갤러리 슬라이더·이미지 래퍼에서 이미지 선제 추출. ② 노이즈 제거 함수 aside 스마트 제거: Future PLC 도메인에서는 hawk-*/affiliate 클래스 aside 보존, 나머지만 제거. ③ 본문 노드 탐색 함수 폴백에 본문 셀렉터, 본문 셀렉터 추가. 비 Future PLC 사이트는 기존 동작 100% 유지