좋아요로 거른 스레드 게시물 수집은 왜 엉뚱한 글을 골랐나?
좋아요로 거른 스레드 게시물 수집이 엉뚱한 글을 고른 이유는, 좋아요가 글의 쓸모가 아니라 그 계정 독자가 무엇에 반응하는지를 재기 때문입니다. 참고하려는 계정의 독자가 우리와 다른 사람들이라면, 좋아요가 높은 글일수록 우리와 먼 글일 수 있습니다. 이 글은 그 사실을 한 번의 품질 점검에서 발견하고, 필터를 고치고, 다시 잰 과정을 숫자 그대로 남긴 기록입니다.
스레드나 링크드인에서 남의 글을 모아 참고하는 일은 흔합니다. 작은 회사가 영업 문장을 다듬거나 콘텐츠 방향을 잡을 때, 먼저 같은 길을 간 사람들의 글을 읽는 것만큼 싼 방법이 없습니다. 다만 사람이 손으로 읽으면 계정 몇 개에서 멈추고, 자동으로 모으면 양이 너무 많아 무엇을 읽을지 골라야 합니다. 그 고르는 기준으로 가장 먼저 떠오르는 값이 좋아요 수입니다. 많은 사람이 반응한 글이 좋은 글일 가능성이 높다는 직관은 대부분 맞습니다.
우리 도구도 그렇게 만들었습니다. 계정마다 게시물을 모으고, 그 계정 안에서 좋아요가 중앙값 이상인 글만 후보로 남겼습니다. 계정마다 팔로워 규모가 다르니 절대값 대신 계정 안의 중앙값을 기준선으로 삼은 셈이고, 이 설계 자체는 합리적으로 보였습니다. 문제는 비용 쪽에서 드러났습니다. 이 도구가 고른 글을 믿고 영업 문장이나 콘텐츠 방향을 바꾸면, 잘못 고른 글 한 편이 그대로 우리 판단의 근거가 됩니다. 고르는 기준이 틀렸다면 틀린 교훈이 자동으로, 매번, 조용히 쌓입니다.
그래서 첫 실행 결과를 그대로 쓰지 않고 품질부터 점검했습니다. 첫 실행에서 나온 채택 후보는 16건이었고, 이 16건이 정말 원문이 말한 내용을 담고 있는지, 우리 사업에 정말 옮겨 쓸 수 있는지를 확인하는 것이 출발점이었습니다.

처음 잰 숫자: 요약 4건 대조, 1건이 과장
측정 방법은 단순했습니다. 첫 실행 결과 16건 가운데 4건을 골라, 도구가 만든 요약과 스레드 원문을 한 줄씩 맞춰 봤습니다. 요약이 원문의 주장을 부풀리지 않았는지, 글의 시점과 글쓴이의 업종이 우리와 맞는지 두 가지를 봤습니다. 그리고 원문 대조와 별개로, 한 계정에서 뽑힌 교훈들을 게시 시기별로 나눠 세는 분해도 함께 했습니다.
원문 대조 결과는 4건 중 3건 정확, 1건 정정이었습니다. 링크드인 운영, 전통 산업, SI 재계약률을 다룬 3건은 요약이 정확했고 오히려 원문이 더 강하게 말하고 있었습니다. 링크드인 글 원문에는 「왜 스레드에서는 문의가 오지 않을까?」라는 문장이 그대로 들어 있었는데, 이는 우리가 예전에 따로 내린 결론과 같은 질문이었습니다. 서로 모르는 두 사업자가 같은 결론에 독립적으로 도달했다는 점에서 이 글은 좋은 참고였습니다.
정정한 1건은 전화영어로 월 120만원을 번 사례였습니다. 처음에는 이 글을 우리 케이스 스터디의 원료로 보고했는데, 원문을 다시 보니 2024년 11월 9일, 점검 시점 기준 21개월 전 글이었고, 글쓴이가 필리핀에서 한 부업 이야기였습니다. 우리의 B2B 서비스와는 업종도, 고객도, 시점도 달랐습니다. 요약 문장 자체는 틀리지 않았지만 우리에게 쓸모 있다는 판단은 과장이었고, 그 판단은 철회했습니다.
| 요약한 글 | 원문 대조 | 판정 |
|---|---|---|
| 링크드인 운영 | 요약 정확, 원문이 더 강함 | 유지 |
| 전통 산업 | 요약 정확, 원문이 더 강함 | 유지 |
| SI 재계약률 | 요약 정확, 원문이 더 강함 | 유지 |
| 전화영어 월 120만원 | 21개월 전 글, 필리핀 부업, 업종 다름 | 철회 |
요약의 문장보다 「우리에게 쓸모 있다」는 판단이 틀렸다.
여기까지만 보면 문제는 작아 보였습니다. 4건 중 1건, 그것도 요약 문장이 아니라 쓸모 판단이 틀린 경우였으니까요. 품질 점검을 여기서 끝냈다면 결론은 「요약은 대체로 정확하다, 시점 확인만 추가하자」였을 겁니다.
세운 가설: 요약이 틀렸나, 좋은 글을 놓쳤나?
처음 세운 가설은 두 가지였습니다. 첫째, 요약 단계가 글을 부풀려 우리에게 맞지 않는 글을 맞는 글처럼 보이게 한다. 둘째, 그 반대로 좋은 글이 요약 단계까지 오지 못하고 어딘가에서 빠진다. 전화영어 건은 첫째 가설을 지지하는 사례처럼 보였고, 그래서 처음에는 요약 쪽을 고치는 방향으로 기울었습니다.
첫째 가설이 맞다면 고칠 곳은 요약 단계입니다. 요약할 때 글의 게시 날짜와 글쓴이의 업종을 같이 뽑아, 오래된 글이나 업종이 다른 글에 표시를 달면 됩니다. 이 방향은 구현이 쉽고, 방금 발견한 1건을 정확히 막아 줍니다. 한 번 틀린 곳을 바로 막는 조치라 매력적이었습니다.
그런데 둘째 가설은 원문 대조만으로는 확인할 수 없었습니다. 원문 대조는 이미 후보로 올라온 글만 검사합니다. 후보에 오르지 못한 글은 대조 대상에 없으니, 그런 글이 있어도 이 점검에서는 영원히 보이지 않습니다. 그래서 대조와 별개로 시점별 분해를 했습니다. 한 계정에서 뽑힌 교훈을 게시 시기로 나눠, 시기마다 어떤 주제의 글이 몇 개의 좋아요를 받았는지 세어 보는 방식입니다.
두 가설은 서로 다른 흔적을 남깁니다. 첫째 가설이 맞다면 시기별로 나눠 봐도 특별한 모양이 나오지 않고, 오래된 글이나 업종이 다른 글이 여러 시기에 고르게 섞여 있어야 합니다. 둘째 가설이 맞다면 우리에게 쓸모 있는 글이 몰린 특정 시기가 후보 목록에서 비어 있거나 유난히 얇아야 합니다. 시기별 분해는 이 두 예측을 한 번에 가를 수 있는 측정이었습니다.
가설이 틀린 지점: 시기별로 세우니 좋아요가 거꾸로였다
분해 대상은 교훈이 가장 많이 나온 한 계정이었습니다. 여기서는 계정 J라고 부르겠습니다. 계정 J에서 나온 교훈 15건을 게시 시기별로 세워 보니 두 시기가 뚜렷이 갈렸습니다. 2024~25년에는 콘텐츠 제작을 주로 다룬 창작자 시기였고, 2026년에는 영업과 채널을 다루는 B2B AI 도입 시기였습니다. 글쓴이의 사업이 창작에서 기업 대상 서비스로 옮겨 간 것입니다.
좋아요는 정반대로 움직였습니다. 창작자 시기 대표 글 세 편의 좋아요는 423, 409, 364였고, B2B 시기 대표 글 세 편은 73, 75, 91이었습니다. 우리에게 가장 값진 쪽은 당연히 2026년 B2B 글입니다. 영업, 채널, 기업 고객 이야기라서 우리 사업에 그대로 옮겨 쓸 수 있습니다. 그런데 그 글들의 반응이 계정 안에서 가장 낮았습니다.

이 숫자는 글의 품질을 말하지 않습니다. 이 계정의 독자는 창작자 시기에 모인 콘텐츠 창작자들이라, 글쓴이가 B2B 이야기를 시작하자 독자가 반응할 이유가 줄었을 뿐입니다. 좋아요는 글이 좋은지가 아니라 지금 모여 있는 독자와 글의 주제가 맞는지를 잽니다. 독자층이 그대로인 채로 글쓴이의 주제만 바뀌면, 새 주제의 글은 좋은 글이어도 반응이 낮게 나옵니다.
여기서 첫째 가설이 틀렸다는 사실이 분명해졌습니다. 전화영어 건 하나를 막으려고 요약 단계만 고쳤다면, 이 계정의 2026년 글은 여전히 후보에 오르지 못했을 겁니다. 문제의 중심은 요약이 아니라 요약 앞에 있는 필터였습니다. 반증된 가설을 지우지 않고 남겨 두는 이유는, 가장 먼저 눈에 띈 오류가 가장 큰 오류가 아닐 수 있다는 사실을 이 과정이 그대로 보여 주기 때문입니다.
진짜 원인: 계정 중앙값 필터는 무엇을 밀어내나?
후보 필터의 규칙은 「그 계정의 좋아요 중앙값 이상」이었습니다. 이 규칙은 계정 안의 글들이 비슷한 독자에게 비슷한 조건으로 읽혔다고 가정합니다. 그 가정이 맞으면 중앙값 이상은 곧 그 계정에서 잘 쓴 글입니다. 하지만 계정 J처럼 시기에 따라 독자와 주제가 어긋난 계정에서는 중앙값이 과거 창작자 시기 글들의 높은 반응에 끌려 올라갑니다.
그 결과는 구조적입니다. 좋아요가 400 안팎인 옛 글들이 중앙값을 끌어올리고, 좋아요가 100이 안 되는 2026년 글들은 그 선을 넘지 못합니다. 한두 편이 운 나쁘게 빠진 것이 아니라, 우리와 가장 닮은 시기의 글이 규칙에 의해 체계적으로 밀려나는 구조였습니다. 게다가 이 탈락은 어떤 로그에도 남지 않았습니다. 필터에 걸린 글은 요약도 채택 판단도 거치지 않으니, 도구의 결과만 보는 사람은 그런 글이 있었다는 사실조차 알 수 없습니다.
이 편향이 첫 실행 전에 드러나지 않은 이유도 같은 구조에 있습니다. 좋아요가 높은 글은 대체로 잘 쓴 글이라, 후보 목록만 훑어보면 결과가 그럴듯해 보입니다. 나온 글 하나하나에는 흠이 없었습니다. 잘못은 목록에 없는 글 쪽에 있었고, 없는 글은 아무리 목록을 꼼꼼히 읽어도 보이지 않습니다. 시기별로 다시 세어 보는 분해를 하지 않았다면, 이 도구는 계속 정확해 보이는 결과를 내면서 우리와 닮은 글을 빠뜨렸을 겁니다.
정리하면 원인은 두 겹이었습니다. 첫째, 좋아요는 글의 쓸모가 아니라 독자와 주제의 일치도를 잰다. 둘째, 계정 전체의 중앙값을 기준선으로 쓰면 독자층이 바뀐 계정에서는 새 시기의 글이 옛 시기의 기준으로 평가받는다. 우리는 「계정 J의 최근 B2B 글」을 원했지만, 필터는 「계정 J의 독자가 좋아한 글」을 골라 주고 있었습니다.
좋아요는 글이 좋은지를 재지 않는다. 지금 모여 있는 독자와 그 글의 주제가 맞는지를 잰다.
조치: 기간 필터를 만들고 좋아요 하한을 풀었다
조치는 명령줄 옵션 하나였습니다. 수집할 게시물의 시작 시점을 연도 또는 연월로 지정하는 기간 옵션(--since)을 새로 만들고, 이 옵션을 주면 좋아요 하한을 해제하도록 했습니다. 예를 들어 2026년 이후 글만 보겠다고 지정하면, 그 기간 안의 글은 좋아요가 중앙값에 못 미쳐도 후보에 오릅니다.
좋아요 하한을 아예 없앤 이유는 이렇습니다. 기간으로 이미 표본을 줄였다면, 좋아요로 한 번 더 걸러야 할 이유가 사라집니다. 기간 필터는 「우리와 닮은 시기」를 고르는 장치이고, 좋아요 필터는 「그 계정 독자가 좋아한 글」을 고르는 장치입니다. 두 필터를 겹치면 우리와 닮은 시기 안에서도 옛 독자 취향에 맞는 글만 남습니다. 그러면 방금 발견한 편향이 기간 안에서 다시 생깁니다.
기간 옵션을 주지 않으면 기존 동작, 즉 계정 중앙값 필터가 그대로 돕니다. 기존 실행 방식을 깨지 않고, 편향이 의심되는 계정에만 기간을 지정해 다시 캘 수 있게 한 셈입니다. 아래는 동작을 단순화한 개념 코드입니다.
기간을 어디서 자를지는 계정마다 사람이 정합니다. 글쓴이의 주제가 언제 바뀌었는지는 계정마다 다르고, 그 전환점을 자동으로 찾는 장치는 이번에 만들지 않았습니다. 계정 J는 2026년부터 영업·채널 글이 나왔으니 그 해를 기준으로 삼았습니다.

재측정 결과: 원래 안 보이던 글 2건이 올라왔다
재측정은 비교 조건을 하나만 바꿔서 했습니다. 대상 계정은 앞에서 시기별로 분해한 계정 J 그대로이고, 요약과 채택을 정하는 뒤쪽 단계도 손대지 않았습니다. 바뀐 것은 후보 필터 하나, 즉 좋아요 중앙값 대신 2026년이라는 기간으로 거른 것뿐입니다. 그래야 새로 올라온 글이 필터 덕분인지 다른 변화 덕분인지 가를 수 있습니다.
같은 계정 J를 2026년 이후 글로 한정해 다시 캤습니다. 후보는 41건이 나왔고 그중 3건을 채택했습니다. 채택한 3건 가운데 2건은 좋아요가 45와 39였습니다. 둘 다 기존 계정 중앙값 필터였다면 걸러졌을 글, 다시 말해 원래는 보이지 않던 글입니다. 이 재측정으로 교훈 목록 파일의 채택 누계는 31건이 됐습니다.
편향은 실재했지만 크기는 크지 않았습니다. 새로 드러난 글은 2건이고, 채택은 3건입니다. 이 숫자를 부풀리지 않는 것이 중요합니다. 기간 필터가 대량의 숨은 보석을 찾아낸 것은 아니었습니다. 다만 그 2건은 좋아요 45와 39라는 낮은 반응 때문에 영원히 보이지 않았을 글이고, 우리와 가장 닮은 시기의 글이었습니다. 작은 숫자여도 방향이 맞는 글을 되찾았다는 점에 의미가 있습니다.

같은 기간에 부수 실험도 하나 했습니다. 좋은 글을 놓치는 문제라면, 그냥 더 많이 긁으면 해결되지 않을까 하는 질문이었습니다. 계정 J의 게시물을 341건에서 1,282건으로, 3.8배 더 모았습니다. 채택률은 9.4%에서 16.7%로 올랐습니다. 숫자만 보면 더 긁은 쪽이 확실히 나아 보입니다.
하지만 새로 채택한 10건을 열어 보니 9건이 2024~25년 창작자 시기 글이었습니다. 스레드는 최신 글부터 보여 주기 때문에, 더 깊이 긁을수록 과거 글로 내려갑니다. 그리고 계정 J에서는 과거일수록 우리와 덜 닮았습니다. 채택률이 오른 이유도 결국 좋아요가 높은 옛 창작자 글이 더 많이 들어왔기 때문으로 읽힙니다. 더 많이 긁는다고 더 쓸모 있는 글이 나오지 않았습니다.

이 실험에서 얻은 기준은 이렇습니다. 계정 단위 수집의 목표는 「전수」가 아니라 「우리와 닮은 시기」입니다. 수집량을 늘리는 레버와 수집 범위를 좁히는 레버는 서로 다른 문제를 풉니다. 우리 문제는 범위였고, 그래서 기간 필터가 맞는 레버였습니다.
남는 한계: 씨앗 계정 60개는 누구의 이웃인가?
고치지 않은 편향도 하나 남아 있어, 숨기지 않고 적습니다. 수집을 시작하는 씨앗 계정 60개는 전부 한 개발자 계정의 상호작용 그래프에서 나왔습니다. 그 계정과 댓글이나 반응을 주고받은 계정들을 따라가 목록을 만들었다는 뜻이고, 그래서 씨앗 목록은 사실상 개발자의 이웃입니다.
그 흔적은 채택 누계에 그대로 보입니다. 전체 31건 중 제작·콘텐츠 주제가 22건이고, 영업·채널처럼 사업에 바로 이어지는 글은 8건뿐입니다. 더 나쁜 점은 그 8건 중 7건이 계정 J 혼자에게서 나왔다는 사실입니다. 사업 쪽 교훈의 공급원이 사실상 계정 하나라서, 계정 J가 글을 멈추거나 주제를 또 바꾸면 이 도구의 사업 쪽 산출은 거의 0으로 떨어집니다.

이 편향은 기간 필터로 풀리지 않습니다. 기간 필터는 이미 목록에 있는 계정 안에서 어느 시기를 볼지 고르는 장치이고, 애초에 어떤 계정을 볼지는 씨앗 목록이 정합니다. 다음 개선은 씨앗을 영업하는 사람, 작은 회사를 운영하는 사람 쪽으로 넓히는 일입니다. 다만 이것은 코드 수정이 아니라 어떤 데이터 소스를 믿을지 고르는 사업 판단이라, 이번 작업에서는 고치지 않고 한계로 명시해 두었습니다.
씨앗을 넓혔을 때 무엇으로 성공을 판정할지도 미리 정해 둘 필요가 있습니다. 이번 측정의 기준선은 채택 누계 31건 중 영업·채널 8건, 그리고 그 8건 중 7건이 한 계정이라는 분포입니다. 씨앗을 바꾼 뒤 같은 방식으로 세었을 때 영업·채널 비중이 늘고, 그 글들이 여러 계정에서 나온다면 개선입니다. 반대로 건수만 늘고 여전히 계정 J 한 곳에 몰린다면, 씨앗을 넓힌 효과는 없는 셈입니다.
스레드에서 반응이 높은 글 유형을 따로 쟀던 기록은 스레드 인기 글 유형 측정에 정리해 두었습니다. 반응 지표를 고르는 기준에서 이번 글과 같은 문제를 다른 각도로 다룹니다.
참고 글 수집 도구를 만든다면 무엇부터 확인해야 하나?
이번 일에서 다른 팀이 바로 가져갈 수 있는 점검 순서를 정리하면 세 가지입니다. 모두 이번 측정에서 실제로 걸린 지점입니다.
- 원문 대조만으로 끝내지 않는다 — 대조는 후보에 오른 글만 검사한다. 필터에서 떨어진 글은 시기별·주제별로 따로 세어 봐야 보인다.
- 좋아요 기준선이 무엇을 재는지 확인한다 — 계정 중앙값은 그 계정 독자의 취향이다. 독자층이 바뀐 계정에서는 새 시기의 글이 옛 기준으로 평가받는다.
- 더 긁기 전에 범위부터 본다 — 341건을 1,282건으로 늘리자 채택률은 올랐지만 새 채택 10건 중 9건이 과거 글이었다. 양은 범위 문제를 풀지 못한다.
무엇보다 필터가 조용히 버린 글은 결과 화면에 나오지 않는다는 점을 기억해야 합니다. 이번에도 사람이 결과물의 품질을 한 번 되묻지 않았다면, 좋아요 45와 39짜리 글 2건은 계속 목록 밖에 있었을 겁니다. 자동 수집 도구의 품질 점검은 「나온 것이 맞는가」와 함께 「안 나온 것 중에 필요한 것이 있는가」를 같이 물어야 합니다.
사내에서 경쟁사 글이나 업계 게시물을 모아 영업·마케팅 자료로 쓰는 흐름을 자동화하려는데 기준을 어떻게 잡을지 막막하다면, 상담에서 지금 쓰는 방식부터 같이 점검해 볼 수 있습니다.