typefully について
Typefully Skillは、Node.jsのコマンドラインツールで、接続済みの複数のSNS向けコンテンツを作成、予約、公開します。投稿と下書きを一元管理し、プラットフォーム別の内容や公開予定も扱えます。
主な機能
- 01SNS下書きの作成と編集
- 02指定された6つのプラットフォームへの公開
- 03投稿の予約と予定登録
- 04メディア、タグ、メモの追加
- 05下書きとソーシャルセットの管理
活用シーン
- 01複数プラットフォーム向けの投稿作成
- 02プラットフォーム別のスレッドと投稿の準備
- 03後日の投稿予約
- 04予約済みまたは公開済み下書きの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ typefully/ agent-skills --skill typefullyインストール後、Claude Code で/typefullyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CHANGELOG.mdreferences/comments.mdlocal-development.mdquotes.mdsetup.mdreferences/platforms/linkedin.mdx-articles.mdx.mdscripts/typefully.js詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
Typefully スキル
Typefully を使用して、X、LinkedIn、Threads、Bluesky、Mastodon、Substack Notes 向けのソーシャルメディアコンテンツを作成、予約、公開します。すべての操作は ./scripts/typefully.js(Node.js 18 以上、依存関係なし)を通じて実行します。すべてのコマンドは JSON を出力します。
スクリプトのパスは、このスキルのディレクトリからの相対パスです。スキルのインストール先を基準に解決してください。
最新性の確認:上記の
last-updatedの日付から 30 日以上経過している場合、このスキルが古くなっている可能性があることをユーザーに伝え、references/setup.mdに記載されている更新方法を案内してください。認証エラー:CLI が "API key not found"、"Authentication failed"、"HTTP 401"、または無効・期限切れのキーに関するメッセージを返した場合は、
./scripts/typefully.js setupを実行するか、TYPEFULLY_API_KEYを更新するようユーザーに伝えてから、処理を停止してください。認証情報を探したり、Typefully のウェブ UI、ブラウザーでのスクレイピング、または localhost の開発サーバーに切り替えたりしないでください。詳細はreferences/setup.mdを参照してください。
共有された Typefully の下書き URL
ユーザーから Typefully の下書き URL が渡された場合は、Typefully のウェブ UI の閲覧やスクレイピングではなく、このスキルを使用してください。
-
https://typefully.com/?a=<social_set_id>&d=<draft_id>は次のように対応します。./scripts/typefully.js drafts:get <social_set_id> <draft_id> -
https://typefully.com/?d=<draft_id>は設定済みのデフォルトのソーシャルセットを使用できます。./scripts/typefully.js drafts:get <draft_id> --use-default
共有された下書き URL のコメント、返信、解決、または編集を行う場合は、まず上記の対応関係を使用して下書きを取得し、コメントのワークフローの詳細が必要になった時点で references/comments.md を読み込んでください。
リファレンスガイド
タスクで必要な場合にのみ読み込んでください。
| ガイド | 次の操作が必要な場合に使用します |
|---|---|
references/setup.md | API キーの設定、「API key not found」エラーの解決、CI のセットアップ、またはスキルが最新かどうかの確認 |
references/comments.md | 下書きへのコメントの追加、返信、解決、削除、またはコメントがすでにある下書きの編集 |
references/quotes.md | X、Threads、Bluesky、Mastodon の別の投稿を引用、または Substack で再投稿 |
references/platforms/x.md | X(旧 Twitter)の投稿への返信、コミュニティへの投稿、または開示ラベルの追加 |
references/platforms/linkedin.md | LinkedIn で会社や人物にメンション、または LinkedIn の最初のコメントの追加 |
references/platforms/x-articles.md | 長文の X Article(単独プラットフォーム)の執筆または編集 |
1. ソーシャルセットを選択する
「ソーシャルセット」とは、ユーザーが「アカウント」と呼ぶもので、1 つのアイデンティティに接続されたプラットフォームを指します。デフォルトが設定されていれば、ほとんどのコマンドは social_set_id なしで実行できます。位置引数(drafts:list 123)または --social-set-id 123 で指定してください。
使用するソーシャルセットを決めるには:
config:showを実行します。default_social_setが設定されていれば、CLI が自動的に使用するため、そのまま進めてください。- それ以外の場合は
social-sets:listを実行します。ソーシャルセットが 1 つだけなら、それを使用してください。 - 複数あり、デフォルトが設定されていない場合は、ユーザーに確認してから、保存する方法として
config:set-defaultを案内してください。 - セッション中にすでに特定したソーシャルセットは、再度確認せずに使用してください。
2. 下書きを作成する
./scripts/typefully.js drafts:create --text "Your post"
--platformを省略すると、最初に接続されたプラットフォームが自動的に選択されます。プラットフォーム名:x、linkedin、threads、bluesky、mastodon、substack(Substack Notes)、x_article。- スレッドを分割するには、単独行に
---を記述します。例外:substackでは下書きごとに 1 つの投稿のみ指定でき、スレッドは使用できません。スレッドと Substack Note の両方を作成する場合は、下記の 1 つの下書きパターンを使用して、substack用に 1 つの投稿コンテンツを指定してください。 - Substack Notes のメディアは画像と GIF のみ(最大 6 件)で、動画は拒否されます。
--mediaでメディア、--tagsでタグ、--scratchpadで内部メモ、--titleで内部名を追加します。--textの代わりに--file ./post.txtを指定すると、ファイルからコンテンツを読み込めます。
投稿ごとに下書きは1件 — 常に
同じコンテンツを複数のプラットフォームに投稿する場合は、1件の下書きに複数のプラットフォームを指定します。
./scripts/typefully.js drafts:create --platform x,linkedin --text "Big announcement!"
./scripts/typefully.js drafts:create --all --text "Posting everywhere!" # all connected platforms
プラットフォームごとに異なるコンテンツにする場合(例:X のスレッドと、内容を調整した LinkedIn の投稿)も、必ず1件の下書きを使用してください。最初のプラットフォームで作成してから、drafts:update で別のコンテンツを追加します。
./scripts/typefully.js drafts:create --platform linkedin --text "Excited to share..." # -> id draft-123
./scripts/typefully.js drafts:update draft-123 --platform x --text "🧵 Thread time!" --use-default
ユーザーがプラットフォームごとに別々の下書きを明示的に希望している場合を除き、複数の下書きを作成しないでください。
--allではx_articleは対象外です。X Articles は単独で投稿するもので、ほかのプラットフォームと組み合わせることはできません。詳しくはreferences/platforms/x-articles.mdを参照してください。接続されている場合、
--allにはsubstackが含まれます。Substack Notes は単一の投稿を受け付けるため、スレッドのコンテンツを指定した--allはエラーになります。--platformでsubstackを除外するか、drafts:updateで Substack 用に単一投稿のコンテンツを指定してください。
スクラッチパッドのメモ
ユーザーから下書きにメモ、アイデア、コンテキストを追加するよう依頼された場合は、--scratchpad を使用してください。ローカルファイルには書き込まないでください。 スクラッチパッドのメモは Typefully の下書きに添付され、UI で確認できます。非公開のまま保持され、公開されることはありません。
./scripts/typefully.js drafts:create --text "My post" --scratchpad "Ideas: 1) Add stats 2) Include quote"
リンクプレビュー
投稿に URL が含まれている場合、Typefully はテキスト内の最後の URL の Open Graph メタデータを自動取得し、LinkedIn、Threads、Bluesky、Substack Notes でリッチリンクプレビューカードを公開します。フラグは不要です。自動的に機能します。X と Mastodon では、公開後にリンクが展開されます。Substack Notes では、ノートに画像が含まれている場合、カードはスキップされます(画像とリンクカードは同時に使用できません)。
カードなしで URL をプレーンテキストとして公開するには、--hide-link-preview を指定します。プレビューの非表示に対応しているのは LinkedIn、Threads、Substack Notes のみ です(Typefully エディターと同様です)。これらのプラットフォームがいずれも対象に含まれていない場合、このフラグはエラーになります。複数プラットフォームを指定した下書きで、ほかのプラットフォームに対しては無視されます。
./scripts/typefully.js drafts:create --platform linkedin,threads --text "Read this https://example.com" --hide-link-preview
./scripts/typefully.js drafts:update draft-123 --hide-link-preview --use-default # hide the card on an existing draft
3. 予約と公開
./scripts/typefully.js drafts:create --text "..." --schedule next-free-slot # or an ISO time, or "now"
./scripts/typefully.js drafts:schedule <draft_id> --time next-free-slot --use-default
./scripts/typefully.js drafts:publish <draft_id> --use-default
./scripts/typefully.js drafts:create --text "..." --plan next-free-slot # planned: dated but inert
./scripts/typefully.js drafts:plan <draft_id> --time next-free-slot --use-default
next-free-slotを使うと、Typefully が最適な時間を選択します。- 公開すると取り消せず、公開状態になります。ユーザーが「今すぐ公開」/「すぐに投稿」と指示していない限り、まず確認してください。下書きの作成は安全です。
- 予定済みの下書きは、指定日時にキュー/カレンダーに表示されますが、自動公開されることはありません。
drafts:scheduleで確定して実際に予約するか、drafts:publishで公開してください。日付を過ぎた予定済みの下書きは、期限超過でも失敗でもありません。まだ確定されていないだけなので、予定を立て直すか、確定してください。--planと--scheduleは同時に指定できません。drafts:update --plan nullを実行すると、下書きは通常の下書き状態に戻ります。 - ソーシャルセットのデフォルトが設定されている場合、引数が1つのコマンドには
--use-defaultが必要です(下記の安全上の注意を参照してください)。
よく使う操作
| ユーザーの依頼 | 操作 |
|---|---|
| 「Xの投稿文を作成して」 | drafts:create --text "..." |
| 「これをLinkedInに投稿して」 | drafts:create --platform linkedin --text "..." |
| 「Substack Noteを投稿して」 | drafts:create --platform substack --text "..."(単一の投稿で、スレッドには対応していません) |
| 「XとLinkedInに投稿して」(同じ内容) | drafts:create --platform x,linkedin --text "..." |
| 「Xのスレッドと、内容を調整したLinkedInの投稿」 | まず下書きを作成し、その後 drafts:update でプラットフォームを追加します |
| 「何が予約されている?」/「最近の投稿は?」 | drafts:list --status scheduled / --status published |
| 「これを明日に予約して」 | drafts:create --text "..." --schedule "<ISO time>" |
| 「これを今すぐ投稿して」 | drafts:create --text "..." --schedule now または drafts:publish <id> --use-default |
| 「火曜日に仮で入れておいて」(公開の確約はしない) | drafts:create --text "..." --plan "<ISO time>" を実行し、後で drafts:schedule で確定します |
| 「利用可能なタグを確認して」 | tags:list |
| 「投稿枠の残数を確認して」 | social-sets:get → publishing_quota |
| 「X Articleの下書きを作成して」 | references/platforms/x-articles.md を参照してください |
| 「LinkedInで会社に言及して」 | references/platforms/linkedin.md を参照してください |
| 「LinkedInの投稿に最初のコメントを追加して」 | references/platforms/linkedin.md を参照してください |
| 「コメントする/コメントを解決する」 | references/comments.md を参照してください |
コマンド
すべてのコマンドはJSONを出力します。[social_set_id] はすべて省略可能で、省略すると設定済みのデフォルト値が使用されます。
安全に関する注意:デフォルトのソーシャルセットが設定されている場合に、引数としてドラフトID(draft_id)を1つだけ指定するときは、
drafts:get、drafts:update、drafts:delete、drafts:schedule、drafts:plan、drafts:publishに--use-defaultが必要です。
プラットフォームやワークフローに固有のコマンドについては、各ガイドを参照してください:quotes.md、platforms/x.md(返信、コミュニティ、情報開示)、platforms/linkedin.md(メンション、最初のコメント)、platforms/x-articles.md、comments.md、setup.md。
ユーザーとソーシャルセット
| コマンド | 説明 |
|---|---|
me:get | 認証済みユーザーの情報を取得します |
social-sets:list | アクセス可能なすべてのソーシャルセットを一覧表示します |
social-sets:get <id> | 接続済みプラットフォームや publishing_quota など、ソーシャルセットの詳細を取得します |
social-sets:get は、利用可能な場合に publishing_quota オブジェクトを返します。このオブジェクトには used、remaining(または "unlimited")、resets_at が含まれます。ユーザーから投稿枠について尋ねられた場合、または投稿や予約が投稿枠に関するメッセージとともに失敗した場合は、投稿または予約の前に確認してください。
下書き
すべての下書きコマンドでは、先頭に省略可能な [social_set_id] を指定できます。省略した場合は、設定済みのデフォルトが使用されます。基本コマンドは次の4つです。
| コマンド | 説明 |
|---|---|
drafts:list [social_set_id] | 下書きを一覧表示します。--status scheduled|published|... で絞り込み、--sort で並べ替えます |
drafts:get [social_set_id] <draft_id> | 下書きの全コンテンツを取得します。--exclude-comment-markers を追加すると、posts[*].text をコメントアンカーなしで表示します(表示のみ) |
drafts:create [social_set_id] --text "<post text>" | 下書きを作成します(--platform を省略すると、プラットフォームが自動選択されます) |
drafts:update [social_set_id] <draft_id> --text "<post text>" | 下書きのコンテンツを置き換えます |
drafts:create または drafts:update コマンドには、次のフラグを追加できます。各フラグが使用できるコマンドは、適用先列に示しています。
| フラグ | 効果 | 適用先 |
|---|---|---|
--platform x,linkedin | 対象のプラットフォームを指定します(カンマ区切り) | create, update |
--all | 接続済みのすべてのプラットフォームを対象にします(x_article を除く) | create |
--file <path> | --text の代わりにファイルからコンテンツを読み込みます | create, update |
--append --text "<text>" | 既存のスレッドに追加します | update |
--media <media_ids> | メディアを添付します(カンマ区切り) | create, update |
--tags "tag1,tag2" | タグを設定します(更新時にこれだけを変更する場合、コンテンツは変更されません) | create, update |
--title "<internal title>" | 下書きの内部タイトルを設定します(投稿されません) | create, update |
--scratchpad "<notes>" | 内部メモを添付します(スクラッチパッドのメモを参照) | create, update |
--share | 公開共有 URL を生成します | create, update |
--schedule <iso|next-free-slot|now> | 下書きを予約または再予約します | create, update |
--plan <iso|next-free-slot> | 下書きを計画します。日付は設定されますが、確認するまで有効になりません(--schedule とは併用できません。更新時に null を指定すると、通常の下書きに戻ります) | create, update |
--hide-link-preview | リンクプレビューカードを非表示にします(LinkedIn/Threads/Substack のみ。有効範囲はリンクプレビューを参照) | create, update |
--quote-post-url <url> | URL のプラットフォーム上で別の投稿を引用するか、Substack で再スタックします(quotes.md を参照)。--text でテキストを置き換える場合は、このフラグも再度指定してください | create, update |
--exclude-comment-markers | アンカーなしで応答を表示します(表示のみ。検証は引き続き適用されます) | update |
--force-overwrite-comments | 破壊的な最終手段です。詳細は comments.md を参照してください | update |
たとえば、次のように基本コマンドとフラグを組み合わせます。
./scripts/typefully.js drafts:create --text "Launch day!" --platform x,linkedin --tags product --schedule next-free-slot
./scripts/typefully.js drafts:update 456 --text "Revised copy" --media abc-123 --use-default
X 専用の下書きフラグ(
--reply-to、--community、--paid-partnership、--made-with-ai)については、platforms/x.mdを参照してください。X Article のフラグ(--content-markdown、--cover-media-id)については、platforms/x-articles.mdを参照してください。LinkedIn の最初のコメント(--linkedin-first-comment)については、platforms/linkedin.mdを参照してください。
スケジュール設定と公開
デフォルトのソーシャルセットが設定されている場合、引数を1つだけ指定する形式では --use-default が必要です。
| コマンド | 説明 |
|---|---|
drafts:schedule <social_set_id> <draft_id> --time <iso|next-free-slot> | 指定した時刻または次の空き枠に予約します(計画済みの下書きも確定します) |
drafts:plan <social_set_id> <draft_id> --time <iso|next-free-slot> | 自動公開を有効にせずに日付を計画します。後で drafts:schedule を使って確定します |
drafts:publish <social_set_id> <draft_id> | すぐに公開します |
drafts:delete <social_set_id> <draft_id> | 下書きを削除します |
キュー
キューは、ソーシャルセットごとのタイムラインです。ソーシャルセットのキュースケジュールに基づく空きスロットと、同じソーシャルセットの予約済みおよび予定済みの下書き/投稿が表示されます。ユーザーがアカウントの指定した期間に何が予約済みか、または空いているかを尋ねた場合は、queue:get を使用してください。
| コマンド | 説明 |
|---|---|
queue:get [social_set_id] --start-date <YYYY-MM-DD> --end-date <YYYY-MM-DD> | キューのタイムライン:指定期間の空きスロットと、予約済み/予定済みの下書きおよび投稿(各下書きの status を確認してください。予定済みの下書きは自動公開されません) |
queue:schedule:get [social_set_id] | キュースケジュールのルールを取得 |
queue:schedule:put [social_set_id] --rules '[{"h":9,"m":30,"days":["mon","wed","fri"]}]' | キュースケジュールのルールを置き換え(全件置換) |
スネークケースの日付エイリアス(--start_date、--end_date)も使用できます。
タグ
タグはソーシャルセットごとに管理されます。あるソーシャルセットのタグは、別のソーシャルセットには表示されません。作成する前に、既存のタグを確認してください。
| コマンド | 説明 |
|---|---|
tags:list [social_set_id] | すべてのタグを一覧表示 |
tags:create [social_set_id] --name "Tag Name" | 新しいタグを作成 |
メディア
| コマンド | 説明 |
|---|---|
media:upload [social_set_id] <file_path> | メディアをアップロードし、処理が完了するまで待ってから、使用可能な media_id を返す |
media:upload ... --no-wait | メディアをアップロードしてすぐに返す(media:status で状態を確認) |
media:upload ... --timeout <seconds> | 処理タイムアウトをカスタム設定(デフォルトは60) |
media:status [social_set_id] <media_id> | アップロードの状態を確認 |
例
# Create a tweet (default social set)
./scripts/typefully.js drafts:create --text "Hello, world!"
# Explicit social_set_id
./scripts/typefully.js drafts:create 123 --text "Hello, world!"
# Cross-platform, same content
./scripts/typefully.js drafts:create --platform x,linkedin,threads --text "Big announcement!"
./scripts/typefully.js drafts:create --all --text "Posting everywhere!"
# Create and schedule for the next slot
./scripts/typefully.js drafts:create --text "Scheduled post" --schedule next-free-slot
# Create with tags
./scripts/typefully.js drafts:create --text "Marketing post" --tags marketing,product
# List scheduled posts, newest scheduled first
./scripts/typefully.js drafts:list --status scheduled --sort scheduled_date
# Queue view for a date range
./scripts/typefully.js queue:get --start-date 2026-02-01 --end-date 2026-02-29
# Replace queue schedule rules
./scripts/typefully.js queue:schedule:put --rules '[{"h":9,"m":30,"days":["mon","wed","fri"]}]'
# Draft with scratchpad notes
./scripts/typefully.js drafts:create --text "Launching next week!" --scratchpad "Coordinate with marketing before publishing."
# Upload media, then attach it
./scripts/typefully.js media:upload ./image.jpg # -> {"media_id": "abc-123", "status": "ready"}
./scripts/typefully.js drafts:create --text "Check out this image!" --media abc-123
# Add media to an existing draft
./scripts/typefully.js drafts:update 456 --text "Updated post with image" --media xyz --use-default
リファレンス
文字数制限
X 280 · LinkedIn 3000 · Threads 500 · Bluesky 300 · Mastodon 500 · Substack Notes 10000。
下書きの URL
Typefully の下書き URL には、ソーシャルセット ID と下書き ID が含まれます:https://typefully.com/?a=<social_set_id>&d=<draft_id>(例:a=12345 → social_set_id、d=67890 → draft_id)。コマンドとの対応については、見失った Typefully の下書き URL を参照してください。
自動化のガイドライン
アカウントの健全性を保つため、特に X では、次の点を守ってください。
- アカウント間で重複したコンテンツを投稿しないでください。
- 求められていない返信を自動化しないでください。返信するのは、ユーザーが明示的に求めた場合に限ります。
- トレンドを操作したり、偽のエンゲージメント(いいね、リポスト、フォロー)を行ったりしないでください。
- レート制限を守ってください。下書きは公開するか、明示的に共有するまで非公開です。
判断に迷った場合は、直接公開するのではなく、ユーザーが確認できるよう下書きを作成してください。