jab-hook について
jab-hook は、個人のポートフォリオ向けに SNS 投稿を計画・作成するワークフローです。宣伝、制作過程の共有、教育コンテンツを循環させ、承認後に X と LinkedIn の下書きを Typefully に送れます。
主な機能
- 01週間の SNS 投稿計画
- 02ローテーションによる宣伝対象の選定
- 03各ポートフォリオの宣伝間隔の確認
- 04X と LinkedIn 向け投稿の作成
- 05承認後に Typefully へ下書きを送信
活用シーン
- 01翌週の宣伝・教育投稿の計画
- 02宣伝間隔が空いたポートフォリオの選定
- 03複数案件の宣伝ペースの確認
- 04Typefully でレビューする投稿の準備
MCP 対応
Typefully MCP サーバーを使い、ソーシャルセットや最近の下書きを取得し、投稿下書きを作成します。jab-hook 自体が MCP サーバーを提供するとは記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ coreyhaines31/ makerskills --skill jab-hookインストール後、Claude Code で/jab-hookを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/content-types.mdinspiration.example.mdinspiration.mdpatterns.mdproperties.example.yamlproperties.mdtypefully-config.example.yamltypefully-config.mdvoice.md詳細
/jab-hook — 個人ポートフォリオ向けのジャブ・ジャブ・ジャブ・右フック
Gary Vaynerchuk のフレームワークを、設定済みのポートフォリオに適用します。フィードの大半を ジャブ(価値提供 — BIP と教育コンテンツ)にして、フック(プロモーション)が注目を集められるようにします。下書きは個人用の Typefully ワークスペースに保存します。
初回セットアップ:実際のポートフォリオとワークスペースを設定するには、references/properties.md と references/typefully-config.md を参照してください。個人設定は ${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/jab-hook/ に保存されます。
基本的な考え方
- N 個のローテーション枠(
~/.config/makerskills/jab-hook/properties.yamlで設定):ローテーションで宣伝したい各プロパティにつき 1 枠 - 週に約 2 件のプロモーション投稿 → 各プロパティは同じ頻度で約 3 週間ごとに登場します
- プロモーションをしない日:ビルド・イン・パブリックと教育コンテンツを 50/50 で投稿します
- 目標とする週間リズム:プロモーション約 2 件 + BIP 約 2〜3 件 + 教育コンテンツ約 2〜3 件
- プラットフォーム:個人用 Typefully ワークスペース経由で X + LinkedIn
ステップ 1 — モードを選ぶ
トリガーから判定します:
| ユーザーの発言 | モード |
|---|---|
| 「SNS の予定を立てて」「来週の投稿」 | plan |
| 「何を投稿すればいい?」「次のプロモーション」「次を選んで」 | pick-next |
| 「SNS を監査して」「期限を過ぎているのは?」「まだ投稿していない内容は?」 | audit |
| 「X 向けのプロモーションを下書きして」「Y についての BIP 投稿」「Z についての教育投稿」 | draft |
曖昧な場合は確認してください。
ステップ 2 — コンテキストを読み込む
references/properties.mdを読みます — 6 つのローテーション枠と切り口のアイデアreferences/voice.mdを読みます — プラットフォームごとのユーザーの文体ルールreferences/content-types.mdを読みます — プロモーション / BIP / 教育コンテンツのテンプレート- 個人用 Typefully ワークスペースから最近の投稿を取得します:
- 初回実行時:Typefully MCP サーバーの list-social-sets ツールを呼び出し、個人用(X + LinkedIn)のソーシャルセットを確認します。今後の実行に備えて、その ID を
${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/jab-hook/typefully.yamlに保存します(スキーマはreferences/typefully-config.example.yamlを参照してください。スキルフォルダー内には決して保存しないでください。アップグレード時に消去されます)。 - list-drafts ツールを呼び出し、過去 30 日間に絞り込みます
- 内容に基づき、各投稿をプロモーション / BIP / 教育コンテンツに分類します
- 初回実行時:Typefully MCP サーバーの list-social-sets ツールを呼び出し、個人用(X + LinkedIn)のソーシャルセットを確認します。今後の実行に備えて、その ID を
- 6 つの枠それぞれについて、最後のプロモーションからの日数を計算します
ステップ 3 — モードごとの処理
plan(7 日間の計画)
- 期限超過が最も長い 1〜2 件のプロパティをプロモーション投稿として割り当てます
- 残りの 5 日間は、BIP と教育コンテンツを交互に割り当てます(50/50)
- 表形式で出力します:
Day | Type | Property/Topic | Hook | Draft summary - プロモーションを 2 日連続で配置しないでください
- ユーザーが計画を承認したら、順番に各投稿の下書きを作成することを提案します
pick-next
- 期限超過が最も長いプロパティを特定します
- 最長のプロモーション間隔が 14 日未満の場合は、代わりに BIP または教育コンテンツを提案します(投稿からの経過が長いほうを選びます)
- 投稿を 1 件下書きし、配信前に確認を求めます
audit
- 各プロパティについて、最後のプロモーションからの日数を、期限超過が長い順に報告します
- 21 日を超えているプロパティに期限超過のフラグを付けます
- 次のアクションを 1〜2 件提案します
draft
- ローテーションのロジックは省略し、依頼された投稿を下書きします
- 適切なコンテンツタイプのテンプレートを使います
ステップ 4 — 下書きを作成する
references/voice.md と references/content-types.md に従ってください。既定では単独投稿とし、プラットフォームごとに 1 件ずつ作成します(X 版 + LinkedIn 版)。2 件目に価値がある場合にのみスレッドにします。
リンクの配置(重要):本文には URL を決して入れないでください。既定ではリンクを一切付けず、好奇心をクリックにつなげます。リンクが必要な場合は、LinkedIn では最初のコメント(Typefully の自動コメント機能に対応)、X では返信として下書きします。本文だけで完結させてください。
オプション:インスピレーションの調査
promo と educational の投稿を作成する際は、下書きを始める前に、必要に応じてインスピレーションを得るためのアカウントを調査します(references/inspiration.md)。
- プロパティとオーディエンスが重なるアカウントを1~2件選びます
- 最近の投稿を取得します(LinkedInで動作する場合はagent-browserを使用し、動作しない場合はユーザーに例を貼り付けてもらうか、X/ニュースレターを利用します)
- 構造上のパターンを抽出します:冒頭のフック、投稿の長さ、改行のリズム、CTAのスタイル
- パターンを1つだけユーザー自身の声に取り入れます。表現をまねてはいけません
- 新しいパターンは
${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/jab-hook/patterns.local.mdに記録します(ファイルがない場合は作成)。パターンを蓄積するためです。references/patterns.mdには初期パターンが記載されており、読み取り専用です
ユーザーが「just draft it」と言った場合、または既存の投稿を修正している場合は、インスピレーションの調査を省略します。
ステップ5 — Typefullyに配信
次のように尋ねます:「今すぐTypefullyに送信しますか?(X + LinkedIn、ご自身のワークスペース)」
「はい」の場合:
${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/jab-hook/typefully.yamlからソーシャルセットIDを読み込みます(セットアップ手順はreferences/typefully-config.mdにあります)- Typefullyの下書き作成ツールを、X用に1回、LinkedIn用に1回呼び出します(またはソーシャルセットに両方のプラットフォームが含まれる場合は、両方を指定して1回呼び出します)
- 下書きに最初のコメント用リンクがある場合は、Typefullyで自動追加するよう設定します(LinkedInの自動コメント/Xの返信)。MCPがいずれかのプラットフォームで自動コメントに対応していない場合は、公開後にユーザーが貼り付けられるよう、コメント文を提示します。
- 既定では下書き状態にします(予約投稿ではありません)。ユーザーは送信前にTypefullyのUIで確認します
- Typefullyの下書きURLを返します
組み合わせて使う
paste— MCP経由の方法が合わない場合に、Typefully/LinkedIn/Xへ手動で貼り付けられる形式で出力しますsocial-fetch— 構造分析のためにインスピレーション用アカウントの投稿を取得します(インラインのagent-browserに代わるものです)second-brain—Content IdeasWikiページにはフック、フレームワーク、ストーリーがまとめられています。/jab-hookの下書きでは、そこから候補を抽出しますdeep-research— promoの下書きに統計情報や出典がまだ必要な場合に使用しますmarketingskills:social— 一般的なソーシャルメディアのフレームワークです。自身の投稿を作成するより、戦略を教える際に役立ちますmarketingskills:copywriting— 行き詰まったときに、フックや見出しのアイデアを考えるために使用します
品質に関する注意事項
- プロパティごとに週1件のpromoは最低ラインであり、上限ではありません。 定期的なローテーションは相乗効果を生みます。4つのプロパティ × 週1件のpromo = 月4週分のpromoです。残りはeducational、BIP、コミュニティの投稿で埋めます。
- インスピレーション用アカウントの表現を決してまねてはいけません。 抽出するのは構造(冒頭のフックの種類、改行のリズム、CTAのスタイル)であり、それを自分自身の声に取り入れます。自分の声は堀です。表現をまねると、その堀が失われます。
- LinkedInとXでは、リンクは本文ではなく最初のコメントに置きます。 詳細は、メモリーストア内の
feedback_social_link_placement.mdに記載されています(下記参照)。本文にURLを含めると、どちらのプラットフォームでもアルゴリズムによって表示範囲が抑制されます。 - 予約投稿ではなく、下書き状態にします。 Typefullyに送信する際は常に下書きが既定です。公開前にTypefullyのUIで人が確認することは必須です。未確認の下書きを自動で予約投稿した結果、ユーザーが後悔する投稿が繰り返し生まれています。
- 読者の視点から表現します。 *「Xがわかります」であり、「Xを教えます」ではありません。「保証されていること」であり、「私たちが保証すること」*ではありません。
- Voice.local.mdは、同梱のvoice.mdより優先されます。 個人の声に関するルールは公開リポジトリには決して置きません。常に
${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/jab-hook/voice.local.mdに記載します。 - 投稿頻度の上限:アカウントごとに、プラットフォームあたり1日2件までです。 それを超えるとリーチが低下し、スパムのように見えます。
メモリの参照先
メモリストアがある場合は、それがエージェントの永続メモリです(例:Claude Code のメモリディレクトリ)。ない場合は ${MAKERSKILLS_MEMORY:-${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/memory}/ です。
- メモリストア内の
feedback_promo_voice.md(存在する場合)— 確信を込めた CTA と読者の視点に立った表現 - メモリストア内の
feedback_social_cadence.md(存在する場合)— 投稿頻度の上限(例:プラットフォームごとに 1 日 2 件)