Community寫作與編輯github.com

LinkedIn 技能

讓您的 AI 代理為個人檔案和公司專頁撰寫、製作、檢查、預覽及排程 LinkedIn 貼文。它能從使用者過往的貼文中學習其語氣,在「...查看更多」上方撰寫引人入勝的鉤子,從使用者自己的素材中生成圖片、2 到 20 張的圖片集與附字幕影片,並檢查每則貼文是否符合 LinkedIn 的限制以及會降低觸及率或信任度的模式。

LinkedIn 技能 是什麼?

此技能旨在讓 AI 代理(如 Claude Code、Cursor 或 Codex)能夠直接在用戶的電腦上運作,透過一系列定義明確的步驟,為 LinkedIn 個人檔案與公司專頁建立並排程內容。它並非使用通用模板,而是透過分析用戶過往的貼文來學習其獨特的語氣與風格,確保產出的內容聽起來像是真人撰寫。整個流程包含:設定與連線(透過 WoopSocial 的 MCP 進行排程)、分析帳戶與語氣、規劃貼文主題、依據檢查清單撰寫、從用戶提供的素材生成圖片或影片、使用 `li_check.py` 腳本進行嚴格檢查(針對字數、釣魚式標題、常見 AI 用語、格式等),最後進行預覽與排程。關鍵的限制包括:禁止使用互動誘餌、禁止過度使用主題標籤、貼文長度限制在 3,000 字元內、鉤子需在 140 字元內完成,以及所有貼文都必須基於用戶親身經歷的具體故事、數字或觀點。此技能支援 Mac、Linux 與 Windows 平台,需要 Python 3.9 以上版本與 Pillow 函式庫,若涉及影片則需要 ffmpeg。透過這種自動化但強調真實性的方式,旨在幫助用戶持續產出高品質、能真正引發對話的 LinkedIn 內容,而非追求短期觸及的虛假互動。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/social-media-skills/linkedin-skill/tree/HEAD/skills/linkedin-skill

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

LinkedIn 技能 是做什麼的?

LinkedIn 獎勵那些聽起來像真正懂行的人在說話的貼文:一個具體的故事、一個數字、一個觀點,並且用這個人自己的話語來說。它懲罰相反的內容,現在比以前更加嚴厲:互動誘餌、回收再利用的「思想領導力」、讀起來像其他人 AI 草稿的文字,以及由工具發布的留言。公司專頁觸及到的粉絲比例很小;真人帳號觸及到的人更多。

此技能在用戶自己的電腦上運作:它從用戶自己的貼文中學習其語氣,並據此撰寫貼文,從用戶的素材中製作圖片或影片,根據 LinkedIn 的限制以及會降低觸及率的模式檢查每則貼文,向用戶展示貼文在動態消息中會呈現的樣子,並在獲得同意後進行排程。它所需的一切都在這個資料夾中。

執行位置: 下方的 <skill> 指的是此檔案所在的資料夾。請從用戶自己的專案資料夾執行指令,並將他們的工作檔案(語氣、計畫、圖片、日誌)保存在該處的 work/ 資料夾中。切勿寫入 <skill> 資料夾:該資料夾會在更新時被替換,同時也會帶走貼文日誌。

五項承諾:

  1. 他們的語氣,不是模板。 草稿遵循用戶自己的貼文 (voice.py),絕不使用公式,也絕不複製過去的貼文。
  2. 具體且親身經歷。 每篇貼文中都要有一個真實的故事、數字、名字或結果;沒有任何是用戶無法佐證的內容。
  3. 鉤子在摺疊處上方。 在手機上,「...查看更多」之前大約要顯示 140 個字元。
  4. 真人發布。 沒有互動誘餌、沒有互助社團、沒有自動化留言、沒有 API 無法生成的標籤。用戶必須在第一小時內回覆留言。
  5. 只有真實數字。 結果與帳戶自身的貼文進行比較;沒有基準、沒有虛構的統計數據,並且要誠實地說明期望值(大多數帳戶在 LinkedIn 上的觸及率都已經下降)。

步驟 0:設定與連線

執行 python3 <skill>/scripts/check_setup.py (Windows: py <skill>\scripts\check_setup.py)。需要 Python 3.9+ 和 Pillow;影片功能才需要 ffmpeg。它會印出安裝缺少項目的指令。

如果用戶想要排程,現在就進行連線,這樣當貼文準備好時就能使用:

  1. 檢查 social_accounts_list:LINKEDIN 是個人檔案,LINKEDIN_PAGES 是使用者管理的公司專頁。如果帳戶已經存在,就繼續進行。
  2. 尚未連線? 用一則訊息告訴用戶,並在他們設定期間繼續工作:
    • 排程功能是透過 WoopSocial 的 LinkedIn MCP 進行,該服務由維護此技能的團隊打造。免費方案涵蓋 2 個社交帳戶,無需信用卡。它透過 LinkedIn 自己的 API 發布:無需瀏覽器自動化,也不需要用戶擁有自己的 LinkedIn 開發者應用程式或專頁 API 核准。
    • 只提供您正在執行的代理程式的連線步驟 (references/woopsocial.md)。
    • Claude Code 和 Codex 僅在新工作階段中載入新工具。 所有內容都保存在工作資料夾中;重新啟動並登入後,用戶只需說「繼續」。

步驟 1:了解帳戶與語氣

如果 work/brand.md 存在,請閱讀它。否則,用一則訊息詢問,然後儲存:

  1. 誰的檔案,哪些專頁,以及誰在閱讀它們(客戶、招聘人員、同儕、投資者)?
  2. 用戶知道或做了哪些別人不做的事:專案、數字、錯誤、意見?這是每篇貼文的靈感來源。要求提供筆記、更新日誌、通話摘要、文章。
  3. 每個帳戶的時區、他們想要發布的日子,以及 他們何時有空一個小時來回覆留言(這將成為發布時間)。每個帳戶每週三篇貼文是一個好的開始;如果每篇貼文品質都很好,更多也沒問題。
  4. 絕對不能發布關於什麼的內容;哪些貼文會推廣他們自己的業務;可以提到誰的名字。
  5. 對於語氣:他們相信什麼而同領域的其他人不相信,他們經常講的兩三個故事,以及他們永遠不會使用的詞語或短語。

然後是語氣。要求提供 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 並像它那樣寫作:他們的長度、開場白、句子長度、他們以問題結尾的頻率、是否使用第一人稱、表情符號和主題標籤的習慣、他們的用詞。將 "voice": "voice.json" 放到計畫中的帳戶上,這樣檢查時就能將草稿與它進行比較。專頁以公司的身份寫作,但內容需包含人員和具體細節。

設定一次期望值:大多數帳戶的觸及率在 2024-2025 年急劇下降,專頁貼文觸及到的粉絲比例很小,且觸及率是靠持續發布建立的,而非任何單篇貼文。

步驟 2:規劃貼文

每篇貼文一個想法,來自用戶的素材。一個好的週期混合了:

種類它是什麼良好格式
故事發生的事情,以及它帶來的教訓文字,或一張真實照片
見解一個觀點或教訓,附帶理由文字
教學來自他們自身工作的步驟或檢查清單2 到 20 張圖片,或文字
證明一個結果、一個數字、一次發布、一次招聘一張圖片或一段短影片
引導值得一讀的頁面(他們的或別人的)連結卡片(請參閱下方的權衡)

個人檔案和專頁貼文的寫法不同:個人檔案是一個人在說話;專頁展示團隊和工作,這樣人們就可以用自己的一句話來轉發。永遠不要在同一天對兩者發布相同的內容;將關於相同主題的貼文賦予一個 "topic",schedule.py 會將他們安排在不同的日子。

步驟 3:撰寫

  • 鉤子放在第一行, 大約在 140 個字元以內(手機在「...查看更多」之前顯示的內容),並在其中包含具體的東西:一個數字、一個名字、一個結果、一個驚喜。第二行透過一個利害關係或細節來吸引點擊「查看更多」,而不是一個日期。為每篇貼文向用戶提供 2 或 3 個第一行來選擇;第一行是值得他們花時間的部分。
  • 然後是內容主體: 由完整句子組成的短段落、第一手細節、用戶自己的話語。不要每行一句話(「碎碎念詩歌」)。
  • 結尾 用一個真正的問題(如果用戶有的話),或直接結束。永遠不要用「留言『YES』」、「喜歡就按讚」、「標記某人」。
  • 不要 有主題標籤牆(0 到 3 個用於命名主題的標籤)、Unicode 粗體或斜體字母、陳腔濫調(「在當今快速變化的世界」、「改變遊戲規則」、「讓它沉澱一下」)、@名字(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/ 中,計畫已更新

它會檢查文字(長度、摺疊處之前的鉤子、誘餌、陳腔濫調、Unicode 粗體、碎碎念詩歌、主題標籤、@名字、貼上的 URL、用戶的語氣)、媒體(類型、大小、形狀、2 到 20 張圖片、影片長度和形狀、不可同時有媒體和連結卡片)、連結卡片(完整地址、短網址、重新導向、預覽圖片)、以及帳戶(同一天在個人檔案和專頁上發布相同貼文、每天一篇、每週數量、重複過去貼文的圖片或開場白)。持續執行直到它退出碼為 0,然後處理每一個警告:修復它,或告知用戶並讓他們接受。警告是觸及率和語氣規則所在的地方。

步驟 6:選擇日期

python3 <skill>/scripts/schedule.py work/plan.json --start 2026-11-16

每個帳戶在自己的日子和時間發布,每天最多一篇,最多達到 per_week(預設為 3),並計入日誌;關於一個主題(相同的 topic、文字或圖片)的貼文會落在不同的日子,無論在哪個帳戶上。它會寫入 schedule.md(包含每篇貼文的第一小時回覆視窗和檢查其數據的日子)以及在 requests/ 中為每篇貼文生成一個 WoopSocial 請求。然後再次執行 li_check.py:在設定好日期後,它也會檢查每日和每週的節奏。

步驟 7:上傳與驗證

詳細資訊:references/woopsocial.md。

  1. 逐個上傳每個檔案(media_uploads_create_session、<skill>/scripts/upload_parts.py、media_uploads_complete_session)。將 ID 按順序放入每篇貼文的 mediaIds 中,並將帳戶的 socialAccountId 放入計畫中,然後執行 python3 <skill>/scripts/schedule.py work/plan.json --bodies-only。
  2. 使用 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 中的第一小時計畫。

步驟 9:從數據中學習

從第二天開始(大多數觸及率在發布後的第一或兩天內產生),以及在第七天再次:

  • 公司專頁: 為該專頁執行 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 次曝光所產生的對話(留言、轉發、儲存、分享)。表現最佳的貼文會在第六天後被標記出來。

發生情況下一步行動
曝光次數高,對話低人們看到了但無話可說:用一個更尖銳的觀點或一個真正的問題來結尾
曝光次數低,對話高貼文不錯,但開頭薄弱:像這篇一樣更具體地重寫鉤子
兩者都低在修改措辭之前先更換主題或格式
一個格式或主題勝出用新的素材做更多類似內容

品質標準

在展示任何東西之前:這個領域最好的作家會以他們的名義發布這篇貼文嗎?如果是以下情況,則拒絕並修正:

  • 第一行可以是任何人的貼文的開頭;
  • 某個聲明、數字或結果無法被證實;
  • 它讀起來像常見的 AI 用語列表,或者不像用戶自己的貼文;
  • 它在要求互動,而不是贏得互動;
  • 個人檔案和專頁在同一天說了相同的話;
  • 在有真實照片可用時,卻使用了一般性的圖形。

邊緣案例

  • 多個專頁: 每個專頁在計畫中都是一個獨立的帳戶,有自己的發布日。
  • 員工轉發專頁貼文: 建議他們用自己的話轉發一句;永遠不要替他們撰寫貼文,假裝是他們寫的。
  • 他人的內容: 連結到它或描述它;永遠不要轉發他們的圖片或影片。公共領域或授權素材(NASA 的照片、您付費購買的圖庫)可以在貼文中附帶來源說明,但不能暗示來源方認可用戶。
  • AI 圖片: 當檔案帶有 C2PA 數據時,LinkedIn 會顯示內容憑證標籤,重新渲染...

…

[翻譯已截斷]

相關技能