기록 기록 전체 보기 →
파이프라인 기록 약 5분

한 매체가 9건 중 8건을 썼다. 막았어야 할 상한이 스스로 비켜섰다

한 매체가 하루 10건 중 3건까지만 실리도록 상한을 뒀습니다. 그런데 그 상한은 자리를 비워두느니 통째로 풀리도록 쓰여 있습니다. 28일 중 네 번 그렇게 됐고, 뉴스가 실제로 적었던 날은 그중 둘뿐이었습니다. 하나는 제 설정 실수였고 하나는 아직 원인을 모릅니다.

이 글은 뉴스 요약이 아니라 이 사이트를 만들면서 있었던 일에 대한 기록입니다.

이 사이트는 매일 아침 10건을 싣습니다. 한 매체가 가져갈 수 있는 자리는 3건까지입니다. 독자가 한 언론사의 1면이 아니라 여러 곳을 가로지른 단면을 받게 하려는 장치입니다. 28일치를 세어보니 이 제한이 다섯 번 깨졌고, 그중 네 번은 아슬아슬하게 넘긴 정도가 아니었습니다.

발행일쓰인 매체 수가장 많이 실린 매체
7월 28일 (화)3곳테크크런치 9건 중 6건
7월 29일 (수)5곳테크크런치 10건 중 4건
7월 31일 (금)2곳테크크런치 9건 중 8건
8월 10일 (월)2곳AI타임스 10건 중 6건
8월 16일 (일)2곳AI타임스 10건 중 7건
2026-07-23부터 2026-08-19까지 전체 28편. 나머지 23편은 한 매체당 3건 이하를 지켰습니다.

크게 무너진 네 편은 매체를 3곳 이하로만 쓴 편과 정확히 겹칩니다. 나머지는 모두 4곳에서 7곳을 썼습니다.

상한은 스스로 비켜서도록 쓰여 있다

선별은 후보를 점수 순으로 훑습니다. 그 매체가 아직 3건 미만이고 같은 사건이 아직 안 실렸을 때만 채택합니다. 이 한 바퀴로 10건을 못 채우면 같은 목록을 매체 상한 없이 한 번 더 훑습니다. 그래도 모자라면 같은 사건 확인까지 풀고 세 번째로 훑습니다.

if len(selected) < args.top_n:
    chosen_links = {a["link"] for a in selected}
    for article, cid in zip(candidates, cluster_ids):
        if len(selected) >= args.top_n:
            break
        if article["link"] in chosen_links or cid in used_clusters:
            continue
        selected.append(article)
scripts/fetch_articles.py의 두 번째 바퀴. 조건에서 매체 건수가 아예 빠져 있습니다.

일부러 그렇게 썼습니다. 10건을 약속해놓고 9건을 싣는 것은 눈에 보이는 실패이고 빈자리는 고장 난 것처럼 보입니다. 반면 한 매체 쏠림은 아무렇게도 보이지 않습니다. 그날 편은 여전히 10건이고 화면도 똑같이 그려집니다. 상한이 풀렸다는 기록은 어디에도 남지 않습니다.

원인은 둘인데 모양은 하나였다

8월 10일은 월요일, 8월 16일은 일요일이었습니다. 아침 실행은 직전 24시간을 봅니다. 그 날들의 24시간은 미국의 주말이라 영어권 매체가 거의 발행하지 않습니다. 8월 10일에는 12개 피드 중 후보를 하나라도 낸 곳이 두 곳뿐이었습니다.

7월 31일은 금요일이었고 뉴스가 적은 날이 아니었습니다. 그날 아침 피드 다섯 개가 403을 돌려줬습니다. 자동 실행은 네트워크 허용 목록을 거쳐 바깥에 나가는데, 다섯 중 적어도 셋은 같은 이유로 막혔습니다. 허용 목록에는 theverge.com, wired.com, technologyreview.com이 있었고 실제 피드 주소는 같은 사이트의 www 서브도메인이었습니다. 호스트 이름은 정확히 일치해야 통과하므로 그 피드들은 아예 응답하지 않았습니다. 그날 9건 중 8건이 테크크런치에서 나온 이유가 www 세 글자입니다.

7월 28일은 설명하지 못합니다. 피드별로 후보가 몇 건 나왔는지 기록하는 계측을 8월 8일에야 붙였습니다. 그래서 그 아침에 남은 기록은 발행된 편 하나뿐입니다. 매체 3곳, 그중 한 곳에서 6건.

넷 중 둘은 실제로 뉴스가 적었고, 하나는 제 설정 실수였고, 하나는 원인을 모릅니다. 상한은 셋을 똑같이 다뤘습니다. 이 장치가 던지는 질문이 "열 자리가 찼는가" 하나뿐이기 때문입니다.

독자가 실제로 받은 것

8월 16일에는 한 매체가 10건 중 7건을 채웠습니다. 그중 둘은 같은 회사가 같은 날 공개한 같은 모델 계열의 가중치 소식이었습니다. 다른 둘은 앤스로픽 워터마크 이야기로, 하나는 작동 방식이고 하나는 그에 반발해 구독을 취소한다는 내용이었습니다.

그러니 잃는 것은 빠진 아홉 매체만이 아닙니다. 한 언론사에서 열 건을 뽑으면 그 언론사의 중복까지 따라옵니다. 그날은 열 자리 중 넷이 두 가지 이야기로 채워졌습니다.

아직 안 고쳤다

이 장치는 지금 하나로 뭉뚱그리는 두 상황을 갈라야 합니다. 세상이 조용해서 모자란 것과 피드 다섯 개가 403을 돌려줘서 모자란 것은 다른 일이고, 후자는 한 매체에 그날 편을 통째로 넘길 이유가 되지 못합니다. 실패한 피드의 이름은 이제 매일 퍼널에 남습니다. 그 기록이 있어야 둘을 갈라볼 수 있고, 8월 20일 편부터 쌓입니다.

정말로 조용한 날에 무엇이 옳은지는 아직 모릅니다. 5개 매체에서 8건을 싣는 쪽이 2개 매체에서 10건을 싣는 쪽보다 나을 수 있습니다. 그건 버그가 아니라 이 사이트를 어떻게 굴릴지 정하는 문제라, 지금 짐작으로 정하기보다 새 기록을 몇 주 쌓고 그걸 보고 정하려 합니다.

순서는 이번에도 같습니다. 고치기 전에 먼저 씁니다. 그래야 위의 숫자를 나중에 그대로 재현할 수 있습니다. 무엇이 달라졌는지는 이 페이지에 덧붙입니다.

이 사이트가 무엇을 어떻게 고르는지는 소개에, 매일의 수집·발행 수치는 데이터에 공개돼 있습니다.