ContentFlows/ドキュメント

トラブルシューティングとトークンガイド

LinkedIn、Facebook、Instagram、YouTube を ContentFlows に接続するための手順を、ステップごとに説明します。各プラットフォームには 2つの値 が必要です。アクセスを許可するアクセストークンと、公開先のアカウント / ページ / チャネルを示すIDです。どちらもダッシュボードに貼り付けます。

認証情報の保存方法

4つのプラットフォームの値はすべて、AWS Secrets Manager の contentflows/tenants/YOUR_TENANT_ID/social-tokens にある1つの暗号化JSON blobとして保存されます。シークレットはログに出力されることも、保存後に再表示されることもなく、アカウント内で分離されます。ContentFlows がSNSのパスワードを保存することはありません。


LinkedIn

ContentFlows は LinkedIn UGC Posts API を使って、あなたに代わって投稿します。w_member_social 権限スコープを持つアクセストークンに加え、投稿の表示先となるアカウントの member URN が必要です。

ContentFlows が入力を求める項目

LINKEDIN_ACCESS_TOKEN
OAuth 2.0 アクセストークン(有効期間60日)。AQV… などで始まります。
LINKEDIN_AUTHOR_ID
Member URN — urn:li:person:XXXXXXXXXX または Company Page の urn:li:organization:NNNNNN のような形式です。

前提条件

  • LinkedIn アカウント(個人プロフィール) — 投稿はこのアカウントから公開されます
  • 無料の LinkedIn 開発者アカウント — アプリ作成時に自動で作成されます

ステップごとの手順

1

LinkedIn Developer Portal を開く

linkedin.com/developers/apps を開いてログインします。Create app をクリックしてください。
2

アプリ詳細を入力する

  • App name: 何でも構いません — 例: “ContentFlows Publisher”
  • LinkedIn page: LinkedIn Company Page をリンクする必要があります。まだない場合は、まず基本の会社ページを作成してください(無料)。
  • App logo: 任意の正方形画像をアップロードします
Create app をクリックします。
3

「Share on LinkedIn」製品をリクエストする

アプリページで Products タブをクリックします。Share on LinkedIn を見つけて Request access をクリックします。通常はすぐ承認されます。
4

リダイレクトURIを追加する

Auth タブに移動します。OAuth 2.0 settings の下に、このリダイレクトURLを追加してください:
https://www.linkedin.com/developers/tools/oauth/redirect
Update をクリックします。
5

アクセストークンを生成する

linkedin.com/developers/tools/oauth/token-generator に移動します。アプリを選択し、w_member_social(利用可能なら r_liteprofile も)にチェックを入れ、Request access token をクリックし、Allow をクリックします。トークンをコピーしてください。再表示されません。これが LINKEDIN_ACCESS_TOKEN です。
6

Member URN を見つける

同じ token-generator ツールで、付属のAPIテスターを使用します:
GET https://api.linkedin.com/v2/userinfo
レスポンスには sub が含まれます。urn:li:person: を前に付けてURNを作成します。たとえば sub = "ABC123xyz" の場合、URN は urn:li:person:ABC123xyz です。これが LINKEDIN_AUTHOR_ID です。
ヒント: 個人プロフィールではなく LinkedIn Company Page から投稿したい場合は、代わりに urn:li:organization:COMPANY_PAGE_NUMERIC_ID を使用してください。数値IDはページの管理者URLで確認できます。
7

両方の値を ContentFlows に貼り付ける

ダッシュボードで Integrations → LinkedIn に移動します。アクセストークンを Access token フィールドに、URN を Member URN フィールドに貼り付け、Save をクリックします。
注: LinkedIn のアクセストークンは 60日 で期限切れになります。5番と7番の手順を2か月ごとに繰り返してください(URN は変わりません)。カレンダーにリマインダーを設定しておきましょう。

Facebook

ContentFlows は Facebook Page に公開します(個人プロフィールではありません)。pages_manage_posts 権限を持つ Page access token と、数値の Page ID が必要です。

ContentFlows が入力を求める項目

FB_PAGE_ACCESS_TOKEN
Meta for Developers から取得した長期有効な Page アクセストークン(60日)。
FB_PAGE_ID
管理している Facebook Page の数値ID(例: 123456789012345)。

前提条件

  • Facebook Page の Admin である Facebook アカウント
  • まだ Facebook Page がない場合は、facebook.com/pages/create で作成できます(無料、2分ほど)

ステップごとの手順

1

Meta for Developers ポータルを開く

developers.facebook.com/apps に移動してログインします。Create App をクリックします。
2

アプリタイプを選択して詳細を入力する

アプリタイプは Business を選択します。アプリ名と連絡先メールアドレスを入力し、Create App をクリックします。
3

Facebook Login 製品を追加する

ダッシュボードの製品一覧で Facebook Login を見つけ、Set up をクリックします。追加設定は不要です。
4

Graph API Explorer でユーザートークンを取得する

Graph API Explorer を開きます:
  • 右上のドロップダウンでアプリを選択します
  • Generate Access Token をクリックします
  • 権限ポップアップで、次のすべてにチェックを入れます:
    • pages_manage_posts投稿を公開するために必須(最も見落とされやすいスコープ)
    • pages_read_engagement
    • pages_show_list
    • business_management
    • instagram_basic — このトークンを Instagram でも使う予定がある場合のみ
    • instagram_content_publish — このトークンを Instagram でも使う予定がある場合のみ
  • Generate Access Token をクリックして認可します
これで短命の User access token(有効時間約2時間)が取得できます。5〜6番の手順で、期限切れしない Page アクセストークンに変換します。
5

ユーザートークンを長期有効(60日)にする

ユーザートークンを Access Token Debugger に貼り付け、Debug をクリックし、下部の Extend Access Token をクリックします。約60日有効の新しいユーザートークンが取得されます。次の手順でこの拡張トークンを使います。
6

Page access token と Page ID を取得する

Graph API Explorer に戻り、手順5の長期有効なユーザートークンを Access Token フィールドに貼り付け、次を実行します:
GET /me/accounts送信
JSONレスポンスで Page を見つけます。重要なフィールドは2つあります:
  • access_token → これが FB_PAGE_ACCESS_TOKEN です。長期有効なユーザートークンから派生しているため、この Page トークンは期限切れになりません
  • id → これが FB_PAGE_ID です
両方の値をコピーしてください。
7

両方の値を ContentFlows に貼り付ける

ダッシュボードで Integrations → Facebook に移動します。Page token を Page access token に、数値の page ID を Page ID に貼り付け、Save をクリックします。
8

トークンに正しいスコープがあるか確認する(任意だが推奨)

新しい Page token を Access Token Debugger に貼り付けて、以下を確認します:
  • Type: PAGEUSER ではありません。USER と表示される場合、手順6で誤ったトークンをコピーしています)
  • Expires: Never(日付が表示される場合は、手順5を飛ばしています。/me/accounts を呼び出した時点でユーザートークンがまだ短命でした)
  • Scopes: pages_manage_posts を含む必要があります。含まれていない場合は、手順4でそのチェックを入れていません。手順4からやり直してください。
ヒント: よくある403の原因: スケジュール投稿が失敗して {"error":{"message":"(#200) Permissions error"}} が表示される場合、トークンにはほぼ確実に pages_manage_posts がありません。デバッガー(手順8)で確認し、必要なら再生成してください。

Instagram

Instagram の公開には Facebook Graph API を使用するため、Instagram アカウントは Facebook Page にリンクされた Professional アカウント(Business または Creator)である必要があります。個人InstagramアカウントはAPI経由で公開できません。

ContentFlows が入力を求める項目

IG_ACCESS_TOKEN
任意 — 空欄のままにすると、ContentFlows は FB_PAGE_ACCESS_TOKEN にフォールバックします。専用のInstagramトークンを持っている場合のみ入力してください。
IG_BUSINESS_ACCOUNT_ID
Facebook Page にリンクされた Instagram Business Account のID(例: 17841412345678901)。

前提条件

  • Instagram の Business または Creator アカウント(個人アカウントではありません)
  • その Instagram アカウントが、あなたが管理する Facebook Page にリンクされていること
  • instagram_content_publish 権限を持つ Meta 開発者アプリ

Professionalアカウントに切り替える(必要な場合)

1

Instagramアプリでアカウント種別を切り替える

スマートフォンで Instagram のプロフィールを開き、☰ メニュー → SettingsAccountSwitch to Professional Account をタップします。Business または Creator を選択してください。
2

Instagram を Facebook Page にリンクする

Instagram の設定のまま、AccountLinked AccountsFacebook に進みます。ログインして Page を選択してください。

Instagram Business Account ID を取得する

3

Graph API Explorer を開く

developers.facebook.com/tools/explorer に移動します。アプリを選択し、次の権限を持つトークンを生成します:
instagram_basic, instagram_content_publish, pages_read_engagement, pages_manage_posts
4

Instagram Business Account ID を見つける

GET /me/accounts を実行します。Page を見つけて id をコピーします。次に次を実行します:
GET /{page-id}?fields=instagram_business_account
{page-id} を Page ID に置き換えてください)。レスポンスには instagram_business_account オブジェクトが含まれます。そこから id をコピーしてください。これが IG_BUSINESS_ACCOUNT_ID です。
5

値を ContentFlows に貼り付ける

ダッシュボードで Integrations → Instagram に移動します。IG Business Account ID を Business Account ID に貼り付けます。Access token フィールドは空欄のままにして、すでに設定済みの Facebook Page トークンを再利用します。これが最も簡単で、多くの人が使う方法です。Save をクリックします。
注: すでに Facebook を保存している場合、Instagram のアクセストークンはデフォルトで FB Page トークンになります。必要なのは IG_BUSINESS_ACCOUNT_ID のみです。

YouTube

ContentFlows は YouTube Data API v3 を使って、コンテンツカレンダー用の動画メタデータ(タイトル、説明、タグ)を生成します。Google Cloud Console のAPIキーとチャンネルIDが必要です。

ContentFlows が入力を求める項目

YOUTUBE_API_KEY
YouTube Data API v3 を有効にした Google Cloud API キー。AIza… で始まります。
YOUTUBE_CHANNEL_ID
YouTube チャンネルID(例: UCxxxxxxxxxxxxxxxxxxxxxx)。YouTube Studio → Settings → Channel → Advanced settings で確認できます。

前提条件

  • Google アカウント
  • そのアカウントにリンクされた YouTube チャンネル
  • 無料の Google Cloud プロジェクト(最初のステップで作成します)

ステップごとの手順

1

Google Cloud プロジェクトを作成する

console.cloud.google.com/projectcreate に移動し、プロジェクト名を任意で入力して(例: “ContentFlows”)、Create をクリックします。
2

YouTube Data API v3 を有効にする

新しいプロジェクトを選択した状態で、YouTube Data API v3 に移動し、Enable をクリックします。
3

APIキーを作成する

APIs & Services → Credentials に移動します。+ Create credentials → API key をクリックします。キーをコピーしてください。これが YOUTUBE_API_KEY です。
ヒント: 安全のため Restrict key をクリックし、YouTube Data API v3 のみに制限してください。
4

YouTube Channel ID を見つける

YouTube StudioSettings(左下の歯車アイコン)→ ChannelAdvanced settings に移動します。そこに Channel ID が表示されます。コピーしてください。UC で始まります。これが YOUTUBE_CHANNEL_ID です。
5

両方の値を ContentFlows に貼り付ける

ダッシュボードで Integrations → YouTube に移動します。APIキーを API key に、Channel ID を Channel ID に貼り付け、Save をクリックします。
注: APIキーは読み取り専用です。メタデータは生成しますが、動画のアップロードはしません。アップロードには引き続きOAuthが必要ですが、現時点ではオンボーディングフローに含まれていません。


送信ドメイン(DKIM / SPF / DMARC)

デフォルトではニュースレターは noreply@contentflows.cc から送信されます。ご自身のドメインを認証すると、FromアドレスがDKIM署名や表示ブランドと一致するため、配信到達率が向上します(迷惑メール入りが減ります)。

前提条件

  • ドメインを所有していること(例: your-business.com)。
  • レジストラ(Cloudflare、Route53、GoDaddy、Namecheap など)でDNSレコードを作成できること。

ステップごとの手順

1

フローを開始する

ダッシュボードで Brand を開き、下部の Sending domain カードを見つけます。ドメイン(例: your-business.com)を入力し、Save & show DNS records をクリックします。
2

5つのDNSレコードをコピーする

カードに5つのレコードが表示されます:
  • CNAME ×3(DKIMトークン)
  • ルートの TXT ×1(SPF)
  • _dmarc.your-domain.com の TXT ×1(DMARC)
各行の横にある Copy ボタンで、1つずつコピーしてください。
3

DNSプロバイダに貼り付ける

DNSホストにログインし、表示された host/name と value をそのまま使って各レコードを作成します。CNAME ではドメインのサフィックスを追加しないでください。表示されている host が完全な名前です(例: abc123._domainkey.your-domain.com)。
ヒント: Cloudflare 利用者: DKIM の CNAME ではオレンジの雲(proxy)を無効にしてください。SES には生のレコードが必要です。
4

検証する

ダッシュボードに戻り、I added the records — Verify をクリックします。カードは最大10分間、15秒ごとに SES をポーリングします。グローバルなDNS伝播は通常2分以内ですが、プロバイダによってはもっと時間がかかる場合があります。
5

完了

検証が完了すると、あなたのテナントからのすべてのニュースレターは、newsletter@your-domain.com を From ヘッダーとして使用し、DKIM署名、SPF合格、DMARC整合が有効になります。
注: 同じカードからいつでもドメインを削除できます。するとメールは共有の送信元 noreply@contentflows.cc に戻ります。

購読者のインポート

Newsletter タブの + Import ボタンを押すと、3つのタブがあるモーダルが開きます:

CSVアップロード

.csv ファイルをアップロードします。ヘッダー行は自動検出されます(名前に email を含む列はメール列として扱われ、name または first を含む列は名前として扱われます)。無効なメールアドレスは拒否され、重複はスキップされます。Import が有効になる前に、同意チェックボックスにチェックを入れてください。

Mailchimp

Mailchimp APIキー(形式: abc123...-us21 — 最後のハイフン以降がデータセンター)と Audience ID(Mailchimp Audience dashboard → Settings → Audience name and defaults → Audience ID)を貼り付けます。ContentFlows は購読中のメンバーをすべて取得します。

ConvertKit

ConvertKit APIキー(Settings → Advanced → API Key)を貼り付けます。確認済み購読者がすべてインポートされます。

よくある問題

  • Mailchimp 401 Unauthorized — APIキーが正しくないか、アカウントで無効化されています。Mailchimp → Account → Extras → API keys で再生成してください。
  • 「有効なメールアドレスがありません」 — CSVパーサーがメール列を検出できませんでした。ヘッダー行があり、列名が文字通り email であることを確認してください。
  • Import finishes instantly with 0 added — すべての行がすでにリストに含まれていました。再実行時には正常です。

よくある問題

トークンが無効または期限切れです

アクセストークンには期限があります。LinkedIn トークンは約60日有効です。Facebook/Instagram の Page トークンは、長期有効なユーザートークンから派生した場合 期限切れになりません(Facebookセクションの手順を正確に実行してください)。新しいトークンを生成し、Integrations で更新してください。

Facebook: (#200) Permissions error on publish

圧倒的に多い原因は、Pageトークンに pages_manage_posts スコープがないことです。このスコープは Graph API Explorer の権限ポップアップで見落としやすく、デフォルトでは有効になりません。Access Token Debugger でトークンを確認してください。pages_manage_posts がスコープ一覧にない場合は、Facebookガイドの手順4からトークンを再生成し、その権限に 明示的にチェック を入れてください。

LinkedIn: 無効なURN

Member URN は、urn:li:person:(個人プロフィール)または urn:li:organization:(Company Page)の後に、アカウント固有のIDが続く必要があります。単なる数値や英数字の文字列だけでは、URNとして有効ではありません。

LinkedIn の権限が不足しています

LinkedIn アプリで Share on LinkedIn 製品の承認がないか、トークンが w_member_social なしで生成されています。LinkedInガイドの手順3に戻り、トークンを再生成してください。

Facebook: Page ID が違います

Page ID は /me/accounts の数値 id フィールドであり、Page URL に表示される人間向けのユーザー名ではありません。誤ってユーザー名を貼り付けると、投稿は失敗します。

Facebook Page の管理者である必要があります

トークンを生成した Facebook アカウントは、対象 Page の Admin ではありません。Page 管理者に自分でトークンを生成してもらうか、facebook.com → Page settings → Page roles で Admin に追加してもらってください。

Instagram: Business または Creator アカウントではありません

個人のInstagramアカウントは Content Publishing API を利用できません。上記の切り替え手順に従ってください。

Instagram: アカウントがFacebook Pageにリンクされていません

Instagram Professional アカウントが Facebook Page に接続されていません。Instagram Settings → Account → Linked Accounts → Facebook に移動し、リンクを完了してください。

YouTube: API quota exceeded

YouTube Data API のデフォルトクォータは 10,000 units/day で、ContentFlows のメタデータ検索には十分すぎるほどです。上限に達した場合は、同じAPIキーが他でも使われている可能性が高いです。ContentFlows 用に専用キーを作成してください。


まだ解決しませんか?

サポートに連絡して、エラーメッセージと接続しているプラットフォームをお知らせください。どの手順で止まったかも含めてください。

関連