tameshita新しいツールを実際に動かした記録

linkedin-skills — LinkedIn投稿を型から下書きするClaudeスキル(英語)動いた

LinkedIn投稿・コメント・返信を、実測エンゲージメント付きの20種の「型」から選んで下書きし、AI臭さを削る校閲までこなすClaude Code/Codex向けスキル集(12個)。APIキーもサインアップも無しのTier 0だけで下書き完成まで実際に通った。

配布元: https://github.com/sergebulaev/linkedin-skills  / 2026-09-14 時点で確認

この日に実際に動かした結果です。内容の誤りに気づかれた場合はお問い合わせください。確認のうえ訂正します。

linkedin-skills を使う前に分かること

必要なもの追加で用意するものは無し(無料の範囲で動いた)
動かした環境Python 3.11。
日本語画面・文書は英語
確認日2026-09-14(この日に実際に動かした)

linkedin-skills の使い方

やること:実際のLinkedInアカウントもAPIキーも無い状態(Tier 0)だけで、型(フォーミュラ)選びからLinkedInにそのまま貼れる下書きブロックの生成まで一通り動かす

  1. リポジトリを取得し、試したコミットを確認する。Claude Code/Codexなら `/plugin install` かクローンしたディレクトリを開くだけで12個のスキルが自動検出されるが、今回はAIエージェント自身がSKILL.mdを直接読む形で検証した。

    打つコマンド
    git clone https://github.com/sergebulaev/linkedin-skills.git
    git rev-parse HEAD
    出るもの

    skills/ 配下に linkedin-post-writer など12個のスキルフォルダが並び、HEADが ed05c4ff... と確認できる

  2. linkedin-post-writer の SKILL.md の手順どおりに、目標をコメント獲得に設定し、20種の型からF17(Controlled A/B Anecdote=同じ条件で1点だけ変えた対照実験を対比させる型)を選んで下書きを書いた。ここはスクリプトの実行ではなく、SKILL.mdを読んだAIエージェント自身が hard rules(疑問文で始めない・指定語彙禁止・emダッシュは100語に1個まで等)を守りながら文章を書く工程。

    打つコマンド
    `rm -rf /root/fp-shallow-test` blocked on the spot. Named policy, no exceptions offered.
    
    `rm -rf /root/fp-project-test/sub/deep` four levels down, same flag, same tool, same policy switched on. No warning. Directory gone, silently, the way a normal rm -rf behaves.
    
    Same binary. Same policy enabled. The only variable was path depth: two segments versus four.
    
    I had assumed a "block catastrophic deletions" guardrail meant catastrophic, full stop. Reading the matcher after the test showed the real rule: two path segments or fewer counts as catastrophic. Three levels down is just a normal command again, and anything under /tmp is exempt no matter how shallow.
    
    A guardrail you install and never try to break is a guardrail you're guessing about. I wrote the finding into the log before I wrote a single line about the tool.
    
    What's the last safety setting you turned on and actually tried to defeat?
    出るもの

    先頭行が疑問文ではなく事実(コマンドの実行結果)で始まっている。emダッシュ0個、SKILL.mdが禁止する語彙(leverage/fundamentally等)を含まない、905文字で中量(900-1300字)指定に収まる

  3. PUBLORA_API_KEYを一切設定していないTier 0の状態で、下書き承認後の公開処理 lib.publish() に実際に渡す。鍵が無いと例外にはならず、自動でmanualモードに落ちてコピペ用ブロックを返すことを確認する。

    打つコマンド
    import sys
    sys.path.insert(0, "/tmp/ls-verify/linkedin-skills")
    from lib import publish
    
    draft = open("/tmp/ls-verify/draft_post.txt").read()
    result = publish(
        kind="post",
        draft_text=draft,
        target_url="https://www.linkedin.com/post/new/",
        platforms=[{"platform": "linkedin", "platformId": "linkedin-DEMO123"}],
        scheduled_time=None,
        media_urls=None,
    )
    print(result["mode"])
    print(result["message"])
    出るもの

    例外は発生せず、mode: manual と、```で囲まれた下書き本文そのまま・Target URL・Publora設定案内(2分で終わる自動投稿の手順)が返ってくる

  4. 同梱のAI検出器比較ツールを、鍵不要の--demoモードで先の下書きに対して実行する。続けて、文章の中身とは無関係な要因でスコアが動くかを確かめるため、'Hello world' と、末尾にピリオドを1個足しただけの'Hello world.' を同じツールに通して結果を比べた。

    打つコマンド
    python3 skills/linkedin-humanizer/scripts/test_detectors.py --text "$(cat /tmp/ls-verify/draft_post.txt)" --demo
    python3 skills/linkedin-humanizer/scripts/test_detectors.py --text "Hello world" --demo
    python3 skills/linkedin-humanizer/scripts/test_detectors.py --text "Hello world." --demo
    出るもの

    下書き(146語)はGPTZero 98.8 / Originality.ai 0.4 / ZeroGPT 55.7 / Sapling 4.3 / Copyleaks 12.2で差94.4点、'USELESS'判定。'Hello world'と'Hello world.'でも5つの点数が両方ともバラバラに変化した(GPTZero 39.2→66.7、Originality.ai 92.5→24.3など)。ソース(test_detectors.py の run_demo())を読むと、文章のSHA-256ハッシュの先頭5バイトを0-100にマッピングしているだけで、内容は一切見ていない仕組みだった

最後まで通した時に出たもの(実際の出力)

manual ✅ Draft approved. Copy the text below and paste it as a post on LinkedIn:

`rm -rf /root/fp-shallow-test` blocked on the spot. Named policy, no exceptions offered.

`rm -rf /root/fp-project-test/sub/deep` four levels down, same flag, same tool, same policy switched on. No warning. Directory gone, silently, the way a normal rm -rf behaves.

Same binary. Same policy enabled. The only variable was path depth: two segments versus four.

I had assumed a "block catastrophic deletions" guardrail meant catastrophic, full stop. Reading the matcher after the test showed the real rule: two path segments or fewer counts as catastrophic. Three levels down is just a normal command again, and anything under /tmp is exempt no matter how shallow.

A guardrail you install and never try to break is a guardrail you're guessing about. I wrote the finding into the log before I wrote a single line about the tool.

What's the last safety setting you turned on and actually tried to defeat?

**Target URL:** https://www.linkedin.com/post/new/

linkedin-skills の良かった点

  • 鍵もサインアップも一切無いTier 0だけで、20種類の型(フォーミュラ)からの選定→下書き→LinkedInにそのまま貼れるコピペ用ブロックの生成まで、実際に最後まで完走できた。ソース(lib/backend_selector.py)を読むと、鍵未設定時のmanualモードはrequestsのimportすら遅延評価にしてあり、コメントの通り『manual-tier users never need requests installed』という設計を確かめられた
  • 同梱のAI検出器比較ツール(--demo)を実行すると、同じ下書きに対してGPTZero 98.8点・Originality.ai 0.4点のように正反対の判定が出た。『検出器は互いに矛盾する』というSKILL.md/READMEの主張を、実際の数値の乖離(差94.4点)で確認できた

linkedin-skills の不便だった点

  • --demoのスコアは文章の中身を全く見ていない。test_detectors.py のソースを読むと、入力テキストのSHA-256ハッシュの先頭5バイトをそのまま0-100にマッピングしているだけの疑似乱数で、'Hello world'の末尾にピリオドを1個足しただけで5つのスコアが軒並み別の値に変わった(GPTZero 39.2→66.7、Originality.ai 92.5→24.3)。ヘルプの一文『offline canned scores』だけでは、文章の内容と無関係な疑似乱数だとは分からない
  • 12個のスキルの実体は手順書(SKILL.md)で、文章を実際に書くのはそれを読んだAIエージェント自身。lib/ のスクリプト(url_parser.py・publish()・test_detectors.py)だけを単体で叩いても下書きそのものは出てこず、体験するにはClaude CodeやCodexのようなAIエージェントが手元に必須

詰まった点と、効いた対処

実行したコマンド
python3 skills/linkedin-humanizer/scripts/test_detectors.py --text "Hello world." --demo
出たエラー
Text: "Hello world...."
Length: 2 words

Detector scores (% AI probability):
  GPTZero           66.7
  Originality.ai    24.3
  ZeroGPT           75.7
  Sapling           43.1
  Copyleaks         41.6
対処

直前に同じ文言('Hello world')で試した時はGPTZero 39.2・Originality.ai 92.5だった。末尾にピリオドを1個足しただけで5つの点数が全部別の値になっている。ソース(test_detectors.py の run_demo())を読むと、文章のSHA-256ハッシュの先頭5バイトを0-100にマッピングしているだけで、内容のAIっぽさは一切見ていない疑似乱数だった。--demoは『検出器同士がどれだけ食い違うか』を見せるための道具と割り切り、実際の判定が欲しければ鍵付きの本番モード(GPTZERO_API_KEY等)を使う

確認した条件

確認日2026-09-14
試した版GitHub sergebulaev/linkedin-skills @ ed05c4ff2ccb18607a26a9ca801ce0c403edf120
実行環境Python 3.11。このマシンに直接 git clone し、pipインストール無しでそのまま検証した。SKILL.mdをAIエージェント(Claude)自身が読んで下書きを書く形で検証しており、Claude Code/Codexのプラグイン機構は経由していない。Apify(投稿本文の自動取得)・Publora(自動投稿)・Pixfaro(画像生成)の3つの外部連携はAPIキーが無いため未確認。