Skip to content

에펨코리아(FMKorea) 추출 규칙

에펜코리아(fmkorea.com) 게시글의 본문을 Shorts 패널에서 볼 수 있는 블록 구조로 변환하는 규칙입니다.

게시글의 루트 컨테이너인 #bd_capture를 기준으로 이미지·동영상·텍스트를 분리 추출하고, 비디오 플레이어 컨트롤 같은 노이즈를 깔끔하게 걸러냅니다.

URL 매칭

아래 정규식으로 에펜코리아 사이트와 개별 게시글을 판별합니다.

항목패턴 / 조건
사이트 매칭/https?:\/\/(www\.)?fmkorea\.com\//i
게시글 매칭베스트(/best/) 경로, 숫자 document_srl, 또는 쿼리에 document_srl= 포함 여부로 판단합니다

주요 선택자와 Root

본문 추출의 출발점이 되는 루트 컨테이너는 #bd_capture입니다.

  • #bd_capture .xe_content가 존재하면 이 요소를 본문 영역으로 우선 사용합니다.
  • 없으면 #bd_capture 루트 자체를 본문으로 간주합니다.
  • 제목은 h1, h2, h3 태그에서 추출하고, 찾지 못하면 document.title을 폴백으로 사용합니다.

처리 순서

콘텐츠 추출은 비디오 유무에 따라 다른 파이프라인을 탕니다.

비디오가 있는 경우

  1. 본문 내 모든 비디오의 src를 수집하고 중복을 제거한 뒤, 순서대로 video 블록을 먼저 추가합니다.
  2. 마지막 비디오 이후에 있는 실제 텍스트만 추출합니다. 이때 플레이어 컨트롤에서 나오는 재생 시간(00:12 / 01:34)이나 배속(1.00x) 같은 텍스트는 노이즈로 판단해 제거합니다.

비디오가 없는 경우

전통적인 DOM Walk 방식으로 처리합니다.

  • 이미지, 비디오, pre 태그를 만나면 즉시 flush하고 블록으로 분리합니다.
  • p 태그 경계에서 문단을 나누고, 간격용 <br>은 최대 2개까지만 허용합니다.
  • 중복 텍스트나 이미지는 Set으로 관리해서 제거합니다.

src 정규화

//로 시작하는 경로에는 프로토콜을, /로 시작하는 경로에는 origin을 붙여서 정상적인 절대 URL로 만듭니다.

노이즈 필터링

에펜코리아 특유의 비디오 플레이어 UI에서 발생하는 노이즈를 걸러내는 것이 이 규칙의 핵심 중 하나입니다.

  • 비디오 컨트롤에서 추출되는 시간 표기(00:12 / 01:34), 재생 속도(1.00x) 등의 텍스트를 패턴 매칭으로 제거합니다.
  • 빈 문단과 중복 문단을 제거하고, 연속 개행은 최대 2개로 축소합니다.

Hooks

에펜코리아 규칙에는 두 가지 Hook이 있습니다.

Hook동작
prePrepare원본 페이지의 비디오 자동재생을 중지하고, 현재 볼륨 값을 스냅샷으로 저장합니다. 쇼츠 패널이 열릴 때 원본 비디오와 소리가 겨치는 것을 방지하기 위해서입니다.
postShortsMounted쇼츠 패널의 비디오에 autoplay를 적용하고, 아까 저장해 둔 원본 볼륨을 복원합니다. 가능하면 음소거도 해제를 시도합니다.

반환 예시

최종적으로 아래와 같은 구조의 데이터가 반환됩니다.

json
{
  "title": "게시글 제목",
  "blocks": [
    { "type": "video", "src": "https://...mp4", "poster": "" },
    { "type": "image", "src": "https://...jpg", "alt": "" },
    { "type": "html",  "html": "문단1<br>문단2" }
  ]
}

한계 / 주의

알아두세요

  • 투표나 위젯 같은 복잡한 embed 콘텐츠는 현재 통째로 건너뜁니다.
  • iframe 내부의 콘텐츠는 추출 대상이 아닙니다.
  • 에펜코리아 측에서 레이아웃을 변경해 #bd_capture ID 이름이 바뀌면 규칙 수정이 필요합니다.

개선 아이디어

  • 코드 하이라이트: 코드블록(pre > code)에 syntax highlighting을 적용하면 개발 관련 게시글의 가독성이 좋아질 것입니다.
  • ALT 정리 확대: 이미지 ALT 텍스트가 해시값이나 의미 없는 문자열일 때 걸러내는 heuristic을 더 넓히면 좋겠습니다.
  • 비디오 썸네일 생성: poster 이미지가 없는 비디오에 대해 첫 프레임을 캐처해서 썸네일로 사용하는 기능도 고려해 볼 만합니다.

Released under the EULA License