내 글에 달린 댓글에 답글을 대신 쓴다. 기존 답글을 대량 수집해 문체 기준표를 역산하는 방법과, 대량 발행 시 안전장치를 담았다.
npx skills add https://github.com/bam-bam-2/solo-skills --skill threads-reply
사용자 개인 계정에 온 댓글에 답글을 다는 작업 전용.
~/Projects/<프로젝트>/마케팅/threads-1000/ENGAGE-VOICE.md다. 그쪽 철칙 3개(한 줄·미러링 금지·존대 유지)는 여기서도 유효하지만, 거기 적힌 말투 마커(ㅇ_ㅇ? ~넹 ~당 ~욤)는 사용자의 *게시물* 에서 뽑은 것이라 답글에서는 거의 안 쓰인다(실측 ㅇ_ㅇ 0.0%, ~ 2.5%). 답글은 이 문서를 정본으로 본다.threads-analytics 스킬.scripts/publish-thread.mjs — Threads Graph API로 타래를 발행합니다.
node scripts/publish-thread.mjs draft.txt # dry-run: 파싱 결과만 출력
node scripts/publish-thread.mjs draft.txt --go # 실제 발행
━━━ 헤더 ━━━ 구분선으로 글을 나누고, 헤더에 "댓글"이 들어가면 첫 댓글로 붙입니다.
기본이 dry-run입니다. 발행 사고를 막으려고 --go를 명시해야만 나갑니다.
Threads Graph API GET /me/replies 전량 22,560건(2024-04-26 ~ 2026-08-08) 실측.
> "다음부터 이거 코덱스로 하기로 하자"
답글 초안 생성은 클로드가 직접 하지 말고 코덱스에 넘긴다. 2026-08-15 배치에서 클로드 초안이 두 번 연속 반려됐고("내말투 들어간거냐", "코덱스는 내말투 잘 따라하던데"), 같은 재료를 물린 코덱스 출력이 채택됐다. 클로드는 재료 준비 · 검증 · 발행 · 예외 판단을 맡는다.
~하셔도 됩니다, ~반응 다릅니다)이 됐다.천재라기엔 계란값이 많이 들었습니다 ㅋㅋ), 어미를 갖고 놀고(~게여 ~할게욤 'ㅁ' 워우...;;), 상대를 자기 판으로 끌어당긴다(6기 재참여하시죠!? 이제 맥스의 세계로 가보시죠!).reply-logs/ 의 pairs 수집 스크립트로 최근 2개월치 내 글 conversation을 훑어 {남의 댓글 → 사용자 답글} 짝을 뽑는다(2026-08-15 기준 430건). 한 줄·90자 이하만 남기고 최신순 220건을 예시로 쓴다.번호|답글 한 줄씩만.env: node: No such file or directory로 죽는다. 원격 머신에서 돌린다: scp /tmp/codex_prompt.txt remote-host:/tmp/ → ssh remote-host 'codex exec --skip-git-repo-check - < /tmp/codex_prompt.txt'. (원격 머신엔 timeout 명령이 없으니 붙이지 말 것.)ㅋㅋㅋ 3개 이상 → ㅋㅋ로 자동 보정(2장 5번 절대규칙)~하시면 됩니다, A는 이렇게 B는 이렇게가 맞겠네요)ㅋㅋ 과다 — 코덱스는 31%까지 올린다(실측 13%)⚠️ 2026-08-15 갱신. 아래 표는 2026-08 한 달치 한 줄 답글 492건 실측이다. 이전 판(2026-05 이후 836건 기준)은 느낌표 11% / 물음표 22%로 적혀 있었는데 8월 실측은 거의 정반대였다(느낌표 31% / 물음표 7.5%). 그 낡은 표를 믿고 쓴 초안이 반려됐다. 문체표는 배치 시작할 때마다 다시 재본다.
| 항목 | 실측값(2026-08) | 지킬 것 |
|---|---|---|
| 글자수 중앙값 | 17자 | 20자 안팎. 36자 넘으면 이유가 있어야 함 |
| 줄 수 | 1줄 | 줄바꿈은 예외 |
| 느낌표(!) 포함 | 31.1% | 3건에 1건. 이게 사용자 톤의 핵심이다. 없으면 딱딱해진다 |
| ㅎㅎ | 16.3% | 6건에 1건 |
| ㅋㅋ | 13.4% | 7~8건에 1건. 코덱스가 남발하니 깎을 것 |
| 물음표로 끝 | 7.5% | 13건에 1건. 되묻기를 남발하지 말 것 |
| 님 호칭 | 7.1% | 이름 아는 사람에게만 |
| ~하시죠 / ~실래요 청유 | 3.0% | 상대를 자기 판으로 끌어당길 때 |
| ㅠ ㅠ_ㅠ | 8% | 공감·엄살에만 |
| 이모지 | 1% | 사실상 안 쓴다 |
| 반말 종결 | 3% | 존대가 기본. 상대가 반말로 걸어와도 존대 |
| 상대 단어 되받기(미러링) | 2% | 사실상 안 한다 |
감사합니다 ㅎㅎ를 7번 썼다. 고유 문구 70/76. 이게 대행 티가 나는 1순위 지점이다.ㅎㅎ/ㅋㅋ를 기본값으로 붙이지 않는다. 10건 중 8건은 이런 것 없이 끝난다.ㅋㅋㅋ(세 번 이상)는 쓰지 않는다. 비웃는 느낌으로 읽힐 수 있다는 사용자 지적(2026-08-08). 대신 ㅋㅋ(두 번) 또는 :)를 쓴다. :)는 실측 데이터에도 실제로 등장하는 표현.~가능해요 편하게 오세요 류의 일반화된 초대 문구는 다단계·리딩방·투자 스캠 계정의 전형적 홍보 템플릿과 표면 패턴이 겹쳐 Threads의 "금융 사기 및 스캠" 자동 필터에 오탐될 수 있다. 행사명·날짜·장소 등 구체적 디테일을 최소 1개 이상 넣어서 일반 템플릿과 표면적으로 구분되게 쓴다.누구나 참여 가능해요 편하게 오세요!(70명 네트워킹 행사 문의 답글)가 "경제적 이익에 관한 현실성 없는 주장/약속"으로 자동 삭제 후 5분 만에 재검토로 복원됨. 오탐이었지만 재발 방지 대상.누구나 참여 가능해요 편하게 오세요! ❌ → 이번 강남 모임은 신청만 하면 누구나 오실 수 있어요! ✅ (구체적 장소/행사 정보 포함)① 짧은 공감·인사 (12자 이하) — 내 답글 중앙 16자
감사로 끝내지 말고 상대에게 관심을 돌린다. 프로필을 보고 그 사람 이야기를 꺼내는 게 이 계정의 핵심 동작이다.
친해지고 싶어요 😅 → 우와 캐나다에서 크리에이터로 도전하고 계시네요~?!뚫어주세요~~~~~ → 뭐가 고민이예요!!피드 발견 → 온제님은 어떤일을 하시나요?!오잉 → 또잉?!ㅋㅋㅋ공감감사합니다 / 100% 감사합니다. / ㅎㅎ반갑습니다!② 보통 (13~45자) — 내 답글 중앙 22자
한 조각 얹거나 되묻는다.
경험의 기회는 내가 만드는 거지..! → 맞아요 내 인생의 주인공도 나 잖아요!? ㅎㅎ1인 사업가 디자이너 보여요!! → 헉 5년차 디자이너~! 손목 괜찮으세요?교육커뮤니티 만들고싶은데 시작을 모르겠어요 → 으아 어떤 교육 커뮤니티를 운영하시는데요..? 먼저 만들어보시죠!③ 긴 글 (46자+) — 내 답글 중앙 27자
길이를 따라가지 않는다. 한 지점만 집어서 짧게.
랜덤뽑기 하듯이 모임을 참여하는 것과 잘 검증된 사람들과 만나는건 체력소비가 달라요.벗어나셨나요?!④ 60자 넘게 쓰는 경우는 이 셋뿐 (전체의 13%)
자기 경험/수치를 나눌 때, 링크·제품을 안내할 때, 상대를 구체적으로 띄워줄 때. 그 외에는 길게 쓰지 않는다.
⑤ 답하지 않는 것
오 와 그 크으으으 아 헉 근데 이거 저랑 — 감탄사로 열고 바로 짧게 끝내는 리듬.
⚠️ 오프너 반복 금지(2026-08-14 사용자 지적): 같은 배치 안에서 여러 건을 쓸 때 오만 계속 쓰면 대행 티가 확 난다(절대 규칙 1번 "같은 문구 두 번 안 씀"의 연장). 위 목록에서 매 건마다 다른 첫 어절을 고르고, 감탄사 없이 바로 본론으로 시작하는 것도 정상적인 선택지로 섞는다.
⚠️ 이미지·영상 있는 게시물은 반드시 실제로 열어서 확인(2026-08-14 사용자 지적): 게시물에 사진/동영상이 있으면 텍스트 캡션만 읽고 댓글을 쓰지 않는다. 스크린샷으로 이미지 내용을 직접 확인한 뒤, 캡션과 이미지 중 실제로 반응할 지점(구체적 사물·장면·비교컷 등)을 잡아서 쓴다. 캡션이 짧거나 이미지가 핵심인 게시물(예: 사진 위주 게시물, before/after 비교컷)일수록 이미지를 안 보면 완전히 엉뚱한 댓글이 나온다 — 텍스트만 보고 썼다가 실제와 다른 내용으로 지적받은 사례 있음.
스크립트 세트 (전부 ~/Projects/<프로젝트>/threads-tool/reply-logs/, 2026-08-15 정비)
| 파일 | 역할 |
|---|---|
| extract.py | 미답변 최상위 댓글 추출(컷오프+스킵리스트 적용) → pending_YYYY-MM-DD.json |
| build_pairs.py | {남의 댓글 → 사용자 답글} 짝 코퍼스 수집 → /tmp/pairs.json |
| build_codex_prompt.py | 짝 220건 + 기준 + 대상을 묶어 코덱스 프롬프트 생성 |
| publish.py | final_YYYY-MM-DD.json 을 30~45초 간격으로 발행. 발행 직전 username 검증, 재실행해도 중복 발행 안 됨 |
(구버전 postreplies.py는 원격 머신에만 있다)
# 대상 추출 — 내 답글이 자식으로 없는 남의 댓글만
GET /v1.0/{post_id}/conversation?fields=id,text,username,timestamp,replied_to&limit=100
# 발행 (2단계)
POST /v1.0/{uid}/threads {media_type:TEXT, text, reply_to_id:<댓글id>}
POST /v1.0/{uid}/threads_publish {creation_id}
토큰: 원격 머신 ~/Projects/<프로젝트>/threads-tool/.env 또는 ~/Projects/<프로젝트>/discord_bot/.env (둘 다 -handle). uid 36325514467046852.
반드시 지킬 것
팔로우 버튼 판정표 (프로필 상단 버튼 텍스트를 그대로 읽는다)
| 버튼 텍스트 | 의미 | 처리 |
|---|---|---|
| 팔로우 | 서로 아무 관계 없음 | 유일한 대상. 좋아요 + 맞춤댓글 |
| 팔로잉 | 사용자가 이미 상대를 팔로우 중 | 전진 제외(좋아요도 안 누름) |
| 맞팔로우 | 상대가 사용자을 팔로우 중 | 전진 제외 |
2026-08-13 사고: 서브에이전트에 "맞팔로우면 팔로워(스킵), 그외(팔로우/팔로잉)면 비팔로워"라고 지시해서 "팔로잉"(이미 내가 팔로우 중)이 대상으로 섞였고 hayan_sool에 좋아요 1건이 잘못 나갔다(즉시 취소). 서브에이전트에게는 버튼 텍스트를 있는 그대로 보고하라고만 시키고, 팔로워/비팔로워 같은 해석을 시키지 않는다.
안전 페이싱(발행 30~45초, 좋아요 3~8초·계정 20~40초)은 절대 줄이지 않는다 — 이건 속도가 아니라 계정 안전이 목적이다. 줄일 수 있는 건 이 페이싱 안에서 에이전트가 쓰는 조사·확인 오버헤드다.
miji74000 중복 게시 사고(게시 확인 지연을 재제출 신호로 오해해 발생) 이후 이 규칙 추가.gogopangpang 사례, 좋아요 2개 누락). 좋아요·댓글 진행 후 페이지 타이틀이 의도한 계정과 다르면 즉시 원래 계정으로 돌아가 좋아요 상태를 전체 재확인한다.~/Projects/<프로젝트>/threads-tool/reply-logs/batch_*.jsonl)의 마지막 timestamp보다 오래된 미답변 댓글은 전부 제외한다. 그 시각 이후에 새로 들어온 댓글만 대상이다.~/Projects/<프로젝트>/threads-tool/reply-logs/skiplist.json. 추출 직후 이 파일의 comment_id를 무조건 뺀다. 새로 넘어간 건이 생기면 매 회차 끝에 여기에 추가한다.1~10 발행, 12번 수정처럼 한 번에 오더할 수 있게 한다. 임의로 10개씩 끊지 않는다.초안 전체를 사용자에게 먼저 보여주고 승인받는다. 승인 없이 발행하지 않는다.
어떤 답글이 Threads의 자동 모니터링(금융 사기/스캠 등)에 걸려 "적용된 조치" 알림을 받으면 — 나중에 자동 복원되었더라도 — 그 댓글은 삭제만 한다. 에이전트가 현장에서 다른 문구로 임의로 재작성해 재발행하지 않는다 — 이건 7번 규칙(사람 확인 받고 간다)을 우회하는 것이다. 대체 문구가 필요하면 새 초안으로 사용자에게 다시 승인받는다.
Take bam-bam-2/threads-reply from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.