LinkedIn 스킬
LinkedIn은 무언가를 아는 사람처럼 들리는 게시물에 보상합니다: 구체적인 이야기, 숫자, 의견을 자신의 언어로 표현한 게시물 말이죠. 반대되는 경우에는 더욱 엄격해졌습니다: 참여 유도, 재활용된 "업계 리더십", 다른 사람의 AI 초안처럼 읽히는 텍스트, 도구로 작성된 댓글 등입니다. 회사 페이지는 팔로워의 극히 일부에게만 도달하며, 사람의 프로필이 더 많은 도달률을 얻습니다.
이 스킬은 사용자 자신의 컴퓨터에서 모든 작업을 수행합니다: 사용자의 게시물에서 음성을 학습하고, 그 음성으로 게시물을 작성하며, 사용자의 자료로 이미지나 비디오를 만들고, 모든 게시물을 LinkedIn의 제한과 도달률을 떨어뜨리는 패턴에 대해 검사하며, 각 게시물을 피드에 어떻게 표시될지 미리보기로 보여주고, 승인 후 예약합니다. 필요한 모든 것은 이 폴더에 있습니다.
실행 위치: <skill>은 이 파일이 있는 폴더입니다. 명령어는 사용자의 프로젝트 폴더에서 실행하고, 작업 내용은 work/에 보관하세요(음성, 계획, 이미지, 로그). <skill>에 절대 쓰지 마세요: 업데이트 시 교체되며 게시물 로그도 함께 사라집니다.
다섯 가지 약속:
- 사용자의 음성, 템플릿이 아닙니다. 초안은 사용자의 게시물(
voice.py)을 따르며, 공식을 사용하지 않고 과거 게시물을 복사하지 않습니다. - 구체적이고 직접 경험한 내용입니다. 모든 게시물에는 실제 이야기, 숫자, 이름 또는 결과가 포함되며, 사용자가 증명할 수 없는 내용은 없습니다.
- 훅은 접히는 부분 위에 있습니다. 약 140자가 휴대폰에서 "...더보기" 전에 표시됩니다.
- 사람이 게시합니다. 참여 유도, 포드, 자동화된 댓글, API가 만들 수 없는 태그가 없습니다. 사용자는 첫 1시간 동안 댓글에 답변합니다.
- 실제 숫자만 사용합니다. 결과는 계정 자체 게시물과 비교되며, 벤치마크나 조작된 통계는 없으며, 솔직한 기대치를 제시합니다(LinkedIn 도달률은 대부분의 계정에서 감소했습니다).
0단계: 설정 및 연결
python3 <skill>/scripts/check_setup.py(Windows: py <skill>\scripts\check_setup.py)를 실행하세요. Python 3.9+와 Pillow가 필요하며, ffmpeg는 비디오에만 필요합니다. 누락된 항목에 대한 설치 명령어를 출력합니다.
사용자가 예약을 원한다면, 게시물이 준비되었을 때 사용할 수 있도록 지금 연결하세요:
social_accounts_list로 확인하세요:LINKEDIN은 개인 프로필,LINKEDIN_PAGES는 사용자가 관리하는 회사 페이지입니다. 계정이 있으면 계속 진행합니다.- 연결되지 않았나요? 한 메시지로 알리고 사용자가 설정하는 동안 계속 작업하세요:
- 예약은 이 스킬을 유지 관리하는 팀이 만든 WoopSocial의 LinkedIn MCP를 통해 이루어집니다. 무료 플랜은 2개의 소셜 계정을 지원하며, 카드는 없습니다. LinkedIn 자체 API를 통해 게시하며, 브라우저 자동화나 사용자의 LinkedIn 개발자 앱 또는 페이지 API 승인이 필요하지 않습니다.
- 실행 중인 에이전트에 대한 연결 단계만 제공하세요(
references/woopsocial.md). - Claude Code와 Codex는 새 세션에서만 새 도구를 로드합니다. 모든 내용은 작업 폴더에 저장됩니다. 재시작 및 로그인 후 사용자가 "계속"이라고 말합니다.
1단계: 계정 및 음성 파악
work/brand.md 파일이 있으면 읽습니다. 없으면 한 메시지로 질문한 후 저장합니다:
- 누구의 프로필인지, 어떤 페이지인지, 누가 읽는지(고객, 채용 담당자, 동료, 투자자)?
- 사용자가 다른 사람들이 모르는 것을 알고 있거나 하는 것은 무엇인가요: 프로젝트, 숫자, 실수, 의견? 모든 게시물은 여기서 나옵니다. 노트, 변경 로그, 통화 요약, 기사를 요청하세요.
- 각 계정의 시간대, 게시를 원하는 요일, 댓글에 답변할 수 있는 1시간의 여유 시간(게시 시간이 됩니다). 계정당 주 3회 게시가 좋은 시작입니다. 각 게시물의 품질이 동일하다면 더 많이 게시해도 괜찮습니다.
- 절대 게시하지 말아야 할 주제, 사용자의 비즈니스를 홍보하는 게시물, 언급해도 되는 사람.
- 음성에 대해: 자신의 분야에서 다른 사람들이 동의하지 않는 믿음, 자주 하는 이야기 두세 개, 절대 사용하지 않는 단어나 표현.
그런 다음 음성을 파악합니다. 사용자의 최근 게시물 5~20개(프로필에서 복사하거나 LinkedIn 데이터 내보내기의 Shares.csv에서 가져옴)를 요청하고, ---로 구분된 줄로 work/past-posts.txt에 저장한 후 다음을 실행합니다:
python3 <skill>/scripts/voice.py work/past-posts.txt --out work/voice.json # 및 voice.md
voice.md를 읽고 그 방식대로 작성하세요: 길이, 오프너, 문장 길이, 질문으로 끝내는 빈도, 1인칭 사용 여부, 이모지 및 해시태그 습관, 사용하는 단어. 계획에서 계정에 "voice": "voice.json"을 추가하여 검사 시 초안과 비교할 수 있도록 합니다. 페이지는 회사로서 글을 쓰지만, 사람과 구체적인 내용을 포함합니다.
한 번 기대치를 설정하세요: 대부분의 계정 도달률은 2024-25년에 급격히 감소했으며, 페이지 게시물은 팔로워의 극히 일부에게 도달하고, 도달률은 단일 게시물이 아닌 일관성을 통해 구축됩니다.
2단계: 게시물 계획
게시물당 하나의 아이디어를 사용자의 자료에서 가져옵니다. 좋은 한 주는 다음과 같이 혼합됩니다:
| 종류 | 설명 | 좋은 형식 |
|---|---|---|
| 이야기 | 일어난 일, 그것이 가르쳐준 것 | 텍스트 또는 실제 사진 한 장 |
| 통찰력 | 이유가 있는 하나의 의견 또는 교훈 | 텍스트 |
| 방법 | 사용자의 작업에서 나온 단계 또는 체크리스트 | 2~20개 이미지 또는 텍스트 |
| 증거 | 결과, 숫자, 출시, 채용 | 이미지 한 장 또는 짧은 비디오 |
| 안내 | 읽을 가치가 있는 페이지(사용자 것이든 아니든) | 링크 카드(아래 트레이드오프 참고) |
프로필과 페이지 게시물은 다르게 작성됩니다: 프로필은 한 사람이 말하는 것이고, 페이지는 팀과 작업을 보여주어 사람들이 자신의 문장과 함께 공유할 수 있도록 합니다. 같은 날 프로필과 페이지에 동일한 내용을 게시하지 마세요. 같은 주제에 대한 게시물에는 "topic"을 지정하고 schedule.py가 다른 날에 배치합니다.
3단계: 작성
- 첫 줄에 훅을 넣으세요. 약 140자 이내(휴대폰에서 "...더보기" 전에 보이는 길이)로, 구체적인 내용(숫자, 이름, 결과, 놀라움)을 포함하세요. 두 번째 줄은 "더보기" 클릭을 유도하기 위해 지분이나 세부 정보를 제공하며, 날짜는 넣지 마세요. 게시물당 2~3개의 첫 줄을 사용자에게 제공하여 선택하게 하세요. 첫 줄이 사용자의 시간을 투자할 가치가 있는 부분입니다.
- 그런 다음 본문: 완전한 문장의 짧은 단락, 직접 경험한 세부 정보, 사용자의 언어. 한 줄에 한 문장씩 쓰지 마세요("broetry").
- 끝맺음: 사용자에게 진짜 질문이 있다면 질문으로 끝내거나, 그냥 끝내세요. 절대 "댓글 YES", "동의하면 좋아요", "누군가 태그"와 같은 표현을 사용하지 마세요.
- 금지: 해시태그 벽(주제를 나타내는 0~3개), 유니코드 볼드체 또는 이탤릭체, 뻔한 표현("오늘날의 빠르게 변화하는 세상에서", "게임 체인저", "생각해보게 하는군"), @이름(API가 사람을 태그할 수 없음; 중요한 경우 앱에서 이름을 쓰고 태그), 3,000자 초과(대부분의 좋은 게시물은 훨씬 짧습니다).
- 링크: 링크 카드(
"link")는 페이지 미리보기를 보여줍니다. 많은 실무자들이 링크가 포함된 게시물의 도달률이 낮아진다고 측정합니다. LinkedIn은 이를 확인한 적이 없으며, 첫 번째 댓글에 링크를 넣는 것이 더 이상 이를 피하는 방법이 아닌 것으로 보입니다. 클릭이 목적인 경우에만 링크를 사용하고, 그렇지 않으면 생략하세요. 링크 게시물마다 페이지를 먼저 읽어 리디렉션과 카드 이미지를 확인하세요:python3 <skill>/scripts/page.py <url> --out work/page-<post>.json, 그런 다음"page": "page-<post>.json"을 추가합니다. - 페이지 게시물에는 항상 사람이나 작업 사진, 그리고 팀이 자신의 언어로 다시 쓸 수 있는 2~3개의 시작 문장 목록(
"reshare")이 포함됩니다.schedule.md에 나열됩니다.
패턴 및 예제: references/writing.md.
4단계: 미디어 제작
사용자, 팀 또는 작업의 실제 사진이 어떤 디자인 그래픽보다 낫습니다. 적합할 때는 사용자의 파일을 있는 그대로 사용하고(계획의 media), 그렇지 않으면 다음을 실행하세요:
python3 <skill>/scripts/render_images.py work/images.json --out images/ # work/images/<id>.jpg, contact-sheet.jpg, manifest.json
레이아웃(사양 형식은 스크립트 상단 참조): plain(피사체를 중심으로 4:5 또는 1:1로 자른 사진), photo(짧은 헤드라인 포함), quote, fact(큰 숫자 하나), list. 4:5(1080x1350)가 피드에서 가장 많은 공간을 차지합니다. work/images/contact-sheet.jpg를 직접 확인하세요. 이미지 세트: 순서대로 2~20개의 이미지, 모두 동일한 모양(첫 번째 이미지가 레이아웃을 설정), 각각 하나의 포인트. 계획에 "manifests": ["images/manifest.json"]을 추가하세요.
비디오는 사용자의 클립에서 제작:
python3 <skill>/scripts/video.py fit clip.mov --ratio 4:5 --x 0.5 --start 2 --end 45 --out work/video/post.mp4
python3 <skill>/scripts/video.py captions work/video/post.mp4 --srt work/talk.srt --out work/video/post-captioned.mp4
python3 <skill>/scripts/video.py frames work/video/post-captioned.mp4 --out work/video/
비디오는 피드에서 음소거 상태로 시작됩니다: 사용자 자신의 대본에서 자막을 영상에 포함시키세요(게시 API가 LinkedIn의 자막 파일을 보내지 않습니다). 가장 강력한 순간으로 시작하세요. 콘텐츠가 더 필요하지 않다면 90초 미만으로 유지하세요. 4:5 또는 1:1이 16:9보다 더 크게 표시됩니다.
문서 "캐러셀"(PDF 슬라이드)은 인기 있는 오가닉 형식이지만, WoopSocial은 문서를 게시하지 않습니다. 슬라이드를 이미지로 만드세요: 2~20개 이미지 세트로 게시하거나, 사용자가 앱에서 업로드할 수 있도록 PDF로 내보내세요. 문서가 예약되었다고 말하지 마세요.
5단계: 확인
python3 <skill>/scripts/li_check.py work/plan.json # 보고서, check.json 작성
python3 <skill>/scripts/li_check.py work/plan.json --fix # fixed/에 변환된 복사본, 계획 업데이트
텍스트(길이, 접히는 부분 전의 훅, 참여 유도, 뻔한 표현, 유니코드 볼드체, broetry, 해시태그, @이름, 붙여넣은 URL, 사용자 음성), 미디어(유형, 크기, 모양, 2~20개 이미지, 비디오 길이 및 모양, 미디어와 링크 카드 동시 사용 금지), 링크 카드(전체 주소, 단축 URL, 리디렉션, 미리보기 이미지), 계정(같은 날 프로필과 페이지에 동일한 게시물, 하루에 하나, 주간 횟수, 과거 게시물의 사진이나 첫 줄 반복)을 확인합니다. 종료 코드 0이 나올 때까지 실행하고, 모든 경고를 처리하세요: 수정하거나 사용자에게 알리고 승인을 받으세요. 경고에는 도달률과 음성 규칙이 포함되어 있습니다.
6단계: 날짜 선택
python3 <skill>/scripts/schedule.py work/plan.json --start 2026-11-16
각 계정은 자체 요일과 시간에 게시하며, 하루에 최대 한 개, per_week(기본값 3)까지 로그를 기준으로 계산합니다. 동일한 주제(같은 topic, 텍스트 또는 사진)의 게시물은 다른 날짜에, 모든 계정에 걸쳐 배치됩니다. schedule.md(각 게시물의 첫 1시간 답변 창 및 숫자 확인 요일 포함)와 요청당 하나의 WoopSocial 요청을 requests/에 작성합니다. 그런 다음 li_check.py를 다시 실행하세요: 날짜가 설정되면 일일 및 주간 속도도 확인합니다.
7단계: 업로드 및 검증
세부 정보: references/woopsocial.md.
- 모든 파일을 하나씩 업로드하세요(
media_uploads_create_session,<skill>/scripts/upload_parts.py,media_uploads_complete_session). 각 게시물의mediaIds에 ID를 순서대로 넣고 계획에 계정의socialAccountId를 넣은 후,python3 <skill>/scripts/schedule.py work/plan.json --bodies-only를 실행하세요. - 모든 요청에 대해
posts_validate를 실행하세요. 거부된 항목을 수정하고 다시 검증하세요.
연결되지 않았고 연결을 원하지 않나요? 미리보기로 건너뛰고, 게시물, 파일 및 일정을 전달한 후 중단하세요. 예약되지 않은 것이 예약되었다고 말하지 마세요.
8단계: 미리보기, 승인, 예약
python3 <skill>/scripts/preview.py work/plan.json --out preview/ # work/preview/
먼저 work/preview/preview.png를 직접 확인하세요: 각 게시물이 휴대폰에서 "...더보기"에서 잘린 상태로, 이미지, 그리드, 비디오 또는 링크 카드와 함께 표시됩니다. 요점이 접히는 부분 위에 없다면 첫 줄을 다시 작성하세요. 그런 다음 사용자에게 work/preview/index.html(휴대폰 보기 및 전체 텍스트)과 work/schedule.md를 제공하세요. 배치에 대해 명확한 승인을 한 번 요청하세요. 변경 사항이 있으면 새 확인, 새 요청 및 새 미리보기가 필요합니다.
승인 후: 검증된 각 요청에 대해 posts_create를 실행하고, 각 게시물 ID를 게시물의 postId에 기록하고, posts_get으로 상태를 확인한 다음, python3 <skill>/scripts/log.py record work/plan.json을 실행하세요. 사용자에게 예약된 내용(게시물, 계정, 날짜 및 시간대)과 schedule.md의 첫 1시간 계획을 알려주세요.
9단계: 숫자로부터 학습
2일째부터(대부분의 도달률은 첫 1~2일 내에 발생), 그리고 7일째에 다시 확인:
- 회사 페이지: 페이지에 대해
social_account_posts_list를 실행하고work/metrics.json으로 저장합니다. - 프로필: LinkedIn은 게시 앱에 개인 게시물 수치를 제공하지 않습니다. 사용자에게 각 게시물의 분석 데이터(노출수, 반응, 댓글, 리포스트, 저장, 전송, 프로필 조회수, 팔로워)를
work/numbers.csv에 복사하도록 요청하세요.
python3 <skill>/scripts/log.py results --plan work/plan.json --metrics work/metrics.json --csv work/numbers.csv
각 게시물을 동일한 계정의 자체 게시물과 비교합니다: 노출수는 중앙값과 비교한 후, 노출수 1,000회당 대화(댓글, 리포스트, 저장, 전송)를 측정합니다. 가장 좋은 게시물은 6가지 기준으로 선정됩니다.
| 결과 | 다음 단계 |
|---|---|
| 노출수 높음, 대화 낮음 | 사람들이 봤지만 할 말이 없었습니다: 더 날카로운 요점이나 진짜 질문으로 끝맺으세요 |
| 노출수 낮음, 대화 높음 | 좋은 게시물, 약한 오프너: 이와 같은 훅을 더 구체적으로 다시 작성하세요 |
| 둘 다 낮음 | 표현보다 주제나 형식을 먼저 바꾸세요 |
| 하나의 형식이나 주제가 승리함 | 새로운 자료로 더 많이 하세요 |
품질 기준
무엇을 보여주기 전에: 사용자 분야의 최고 작가가 자신의 이름으로 이 게시물을 게시할까요? 다음과 같은 경우 거부하고 수정하세요:
- 첫 줄이 누구의 게시물에도 어울릴 수 있는 경우;
- 주장, 숫자 또는 결과를 뒷받침할 수 없는 경우;
- 뻔한 AI 표현 목록처럼 읽히거나 사용자 자신의 게시물과 같지 않은 경우;
- 참여를 유도하도록 요청하지만 실제로 얻지는 못하는 경우;
- 프로필과 페이지가 같은 날 같은 내용을 말하는 경우;
- 실제 사진으로 충분할 곳에 일반 그래픽을 사용한 경우.
엣지 케이스
- 여러 페이지: 각 페이지는 계획에서 자체 요일을 가진 별도의 계정입니다.
- 직원이 페이지 게시물을 재공유: 자신의 문장 한 줄과 함께 재공유하도록 제안하세요. 그들이 쓴 것처럼 그들의 게시물을 대신 작성하지 마세요.
- 다른 사람의 콘텐츠: 링크를 걸거나 설명하세요. 그들의 이미지나 비디오를 다시 게시하지 마세요. 공개 도메인 또는 라이선스 자료(NASA 사진, 유료 스톡)는 게시물에 출처를 표시하고, 출처가 사용자를 보증한다는 의미를 주지 않으면 괜찮습니다.
- AI 이미지: LinkedIn은 파일에 C2PA 데이터가 있을 때 콘텐츠 크레덴셜 라벨을 표시합니다. 이는 재렌더링 시...
(참고: 원본 내용이 중간에 잘렸습니다. 가능한 경우 원본 SKILL.md 전체를 번역해야 하지만, 제공된 내용을 기준으로 번역했습니다.)