트윗의 답글을 프로그램으로 읽는 방법

트윗의 답글을 프로그램으로 읽는 방법
Unif Cookbooks team
Unif Cookbooks team

업데이트

모든 X 게시물의 공개 답글을 JSON이나 Markdown으로 반환하는 무료 엔드포인트. 인게이지먼트순 또는 시간순, 커서 페이징 지원.

한마디로: GET https://unifapi.com/tools/x/replies?id=<post id or URL>는 게시물과 그 아래의 공개 답글을 JSON으로 반환합니다. 로그인 없이, 계정 없이, API 키 없이 무료로 쓸 수 있으며, 방문자별 횟수 제한이 적용됩니다. sort=top(기본값)은 인게이지먼트순, sort=recent는 시간순으로 정렬합니다. 페이지는 답글 20건이고 nextCursor가 따라옵니다. 각 답글에는 작성자, 텍스트, 지표, 미디어, inReplyToPostId가 담겨 있어 스레드를 재구성할 수 있습니다. 무료 단일 게시물 엔드포인트 중 어느 것도 노출하지 않는 유일한 X 데이터이고, "이 스레드 읽어 줘"류의 에이전트 작업 대부분이 예전에는 헤드리스 브라우저로 끝나곤 했던 이유입니다.

게시물 아래 답글에 반응이 있습니다. 게시물 자체는 브랜드가 무슨 말을 했는지 알려주고, 답글은 사람들이 그것을 어떻게 생각하는지, 무엇이 고장 났는지, 무엇을 원하는지, 어떤 불만이 좋아요 4,000개를 받았는지 알려줍니다. 감성 분석, 고객 리서치, 장애 모니터링에서는 답글이 곧 데이터입니다.

동시에 계정 없이 읽기 가장 어려운 X의 영역이기도 합니다. FxTwitter와 vxTwitter는 게시물 하나를 읽습니다. syndication 엔드포인트도 게시물 하나를 읽습니다. X 자체 페이지는 답글을 나중에 JavaScript로 불러오므로 curl은 빈 껍데기를 받습니다. 공식 API는 유료 티어의 대화 검색을 통해 답글을 노출합니다.

요청

curl -s "https://unifapi.com/tools/x/replies?id=https://x.com/NASA/status/2107237881668313108"

id는 숫자 Post ID나 전체 x.com / twitter.com URL을 받습니다. 응답:

{
  "post": {
    "id": "2107237881668313108",
    "text": "Time to bring them home 🌎 …",
    "author": { "handle": "NASA", "name": "NASA", "verified": true },
    "metrics": {
      "likes": 7210,
      "reposts": 846,
      "replies": 262,
      "quotes": 60,
      "bookmarks": 197,
      "views": 2823329
    },
    "conversationId": "2107237881668313108"
  },
  "replies": {
    "items": [
      {
        "id": "2107252849688424504",
        "text": "@NASA @Space_Station @SpaceX Those space suits don't look right…",
        "createdAt": "2026-10-05T23:33:22.000Z",
        "author": {
          "handle": "Troyztoys",
          "name": "Tee Crenshaw",
          "verified": true,
          "followers": 1823
        },
        "metrics": {
          "likes": 15,
          "reposts": 1,
          "replies": 0,
          "quotes": 0,
          "bookmarks": 0,
          "views": 894
        },
        "media": [],
        "conversationId": "2107237881668313108",
        "inReplyToPostId": "2107237881668313108"
      }
    ],
    "hasMore": true,
    "nextCursor": "20@"
  }
}

post는 원본입니다. replies.items는 원본을 제외한 그 대화의 공개 게시물로, 직접 답글과 중첩 답글이 모두 포함됩니다. 각각 inReplyToPostId가 있으므로 답글의 답글은 부모를 가리키고, 스레드를 트리로 재구성할 수 있습니다.

정렬

sort=top(기본값)은 좋아요 + 리포스트 + 답글 수로 정렬하는데, X 자체의 "가장 관련성 높은" 탭이 대략 그렇게 하는 것과 비슷합니다. sort=recent는 최신순입니다. "반응이 어떤가"에는 top을, "지난 한 시간 동안 무슨 일이 있었나"에는 recent를 쓰세요.

사람용 페이지 /tools/x-reply-viewer에는 같은 두 옵션이 알약 버튼으로 있고, /tools/x-reply-viewer?q=<id>&sort=recent&format=json은 API와 정확히 같은 것을 반환합니다.

페이징

답글은 페이지당 20건입니다. 이어서 받으려면 nextCursor를 cursor로 되돌려 보내세요. 첫 커서는 흔히 20@처럼 생겼는데, "이미 가져온 페이지의 다음 20건"이라는 뜻입니다. 그다음부터는 X 자체의 불투명한 커서입니다. 모두 불투명한 문자열로 취급하세요.

답글이 262개인 게시물은 약 14페이지입니다. 10분당 무료 20유닛 중 14유닛이므로, 헤더에서 X-RateLimit-Remaining을 읽고 충분히 모였으면 멈추세요. top으로 정렬한 첫 페이지에 보통 중요한 답글이 들어 있습니다.

답글 레코드에 담긴 것

필드의미
id, url답글의 id와 정식 x.com URL
textX가 저장한 그대로 앞머리 @멘션이 포함된 전체 텍스트
createdAtISO 8601, UTC
authorhandle, name, verified, followers, avatarUrl, …
metricslikes, reposts, replies, quotes, bookmarks, views
mediaX CDN의 크기와 MP4 URL이 포함된 사진과 동영상
inReplyToPostId이 답글이 답하는 게시물
conversationId대화의 루트 게시물
possiblySensitiveX 자체 플래그

모양은 검색, 프로필, 미디어 엔드포인트가 반환하는 post 레코드와 같으므로, 게시물에 점수를 매기는 함수는 답글에도 고치지 않고 그대로 작동합니다.

만들어 볼 세 가지

반응 요약. top 페이지를 가져와 텍스트 20개를 원본 게시물과 함께 모델에 넣고, 가장 흔한 감성 세 가지와 각각의 대표 인용 하나를 요청하세요. 답글 20개에 호출 한 번. 순위는 top 정렬이 이미 매겨 두었습니다.

불만 피드. 브랜드의 공지에 대해 10분마다 sort=recent를 폴링하고, 폴링 사이에 metrics.likes가 임계값을 넘어 오르는 답글을 골라 사람에게 전달하세요. 치솟는 답글이 곧 스크린샷으로 돌아다닐 답글입니다.

스레드 재구성. 모든 페이지를 훑어 id에서 답글로 가는 맵을 만든 다음, 각 답글을 inReplyToPostId에 붙이세요. 원본에 대한 답글은 깊이 1이고 나머지는 중첩됩니다. Markdown으로 렌더링하면 보고서에 쓸 수 있는 읽기 쉬운 대화 기록이 됩니다.

제한

  • 공개 답글만 포함됩니다. 보호된 계정의 답글과 삭제된 답글은 포함되지 않으며, 그 때문에 원본 게시물의 replies 수가 읽을 수 있는 수보다 클 수 있습니다.
  • 무료 제한은 모든 /tools/x/* 엔드포인트를 합쳐 방문자당 10분에 20회 조회이며, 검색은 2회로 계산됩니다. 429에는 Retry-After와 상한을 풀 수 있는 URL이 실립니다.
  • 물량, 이력, 보장은 워크스페이스 키를 쓰는 종량제 X / Twitter API이며, 필드 이름은 같습니다.

FAQ

Twitter API 없이 트윗의 답글을 받을 수 있나요?

네. 위 엔드포인트는 로그인 없이, 계정 없이, 키 없이 공개 답글을 무료로 읽으며, 방문자별 횟수 제한이 적용됩니다. 기본은 JSON이고, format=md를 붙이면 Markdown을 반환합니다.

X에는 답글이 262개라고 나오는데 왜 200개만 보이나요?

일부 답글은 보호된 계정의 것이고, 일부는 삭제되었고, 일부는 작성자가 숨겼습니다. 원본 게시물의 수는 X의 집계이고, 읽을 수 있는 집합은 공개된 것입니다.

인용 게시물도 포함되나요?

아니요. 인용은 답글이 아니라 별도의 게시물입니다. /tools/x/search?q=<post url>로 게시물 URL을 검색하면 찾을 수 있습니다.

모델에 넣을 텍스트로 답글을 읽을 수 있나요?

네. format=md는 원본 게시물과 각 답글을 작성자, 텍스트, 지표, URL이 포함된 Markdown 블록으로 반환합니다.