- 動作確認日:2026-10-11
- n8nのバージョン:2.7.4(セルフホスト、Hostinger VPS)
n8n で動いているワークフローを直すとき、本番には触らず、複製したコピーで直すようにしています。ところが、複製したコピーには Credential(n8n に登録した、各サービスのログイン情報)が1つも付いていませんでした。自分で付け直したとき、WordPress のノードに別のサイト用の Credential を選んでいて、もう少しで別のサイトに下書きを書き込むところでした。
起きたこと
直していたのは、n8n の新しいリリースを Claude が読んで、このブログに下書きを作り、通知を送るワークフローです。通知先を LINE から Telegram に替えるために、n8n の画面で本番のワークフローを複製しました。
複製したあと、Claude に n8n の API でコピーを読んでもらい、本番と比べました。結果は「ノード名・つながり・パラメーターがすべて同じ」でした。それで「同じ作り」と思い、通知のノードだけを替えて本番に切り替えました。
切り替えて2日後の朝から、毎朝エラーになるようになりました。実行の記録を見ると、2日続けて朝の本番が同じノードで止まっていました(手で試した3回も同じ)。
Bad request - please check your parameters
無効なパラメータ: status
原因を調べる途中で、もっと危ないことに気づきました。
- 複製した直後のコピーは、Credential の付いたノードが 0個でした(本番は8個)。
- その後、私が自分で Credential を付け直していました。そのとき WordPress のノード2つ(下書きを保存するノードと、同じ記事があるか探すノード)に、別のサイト用の WordPress の Credential を選んでいました。
- 別のサイト用の Credential は、n8n が最初に付ける名前「Wordpress account」のままでした。このブログ用は、名前を付けて登録してあります。選ぶ欄には両方が並びます。
n8n の WordPress ノードは、Credential に登録したサイトに書き込みます。もしエラーで止まらずに先へ進んでいたら、下書きは別のサイトに作られていたかもしれません(試してはいません)。実際には、毎回その手前で止まっていたので、どちらのサイトにも何も書き込まれていませんでした。
原因
- 複製すると Credential が外れた:私の環境では2回とも、複製したコピーの Credential がすべて外れていました。
- 同じ種類の Credential が2つあった:WordPress の Credential が、このブログ用と別のサイト用の2つあり、付け直すときに別のサイト用を選んでいました。
- 確かめ方が Credential を見ていなかった:複製のあとに比べたのは、ノード名・つながり・パラメーターだけでした。Credential は比べる対象に入っていませんでした。
なお、表に出ていた「無効なパラメータ: status」は、同じ記事があるか探すノードの別の問題です。こちらは別の記事で書く予定です。
直し方
1. まちがった Credential のワークフローを止める
まず、エラーになっていたワークフローを停止しました。止めないと毎朝 Claude の API を使い続けます。それに、エラーのノードだけが直って先へ進むと、別のサイトに下書きができてしまいます。
2. もう一度複製して、Credential をノードごとに付ける
停止したワークフローをもう一度複製しました。このコピーも、複製した直後は Credential が0個でした。そこで、Credential が必要なノードを1つずつ、元のワークフローで動いていたものと同じ Credential にしました。WordPress のノードは、このブログ用の Credential です。
この作業は Claude が n8n の API で行いました。別のサイト用の WordPress の Credential が付いていたら、そこで止まって知らせるようにもしてもらいました。
3. ノードごとの Credential を一覧にして目で確かめる
付けたあとは、ノードの名前と Credential の名前を並べた一覧を出して確かめました。n8n の公開 API でワークフローを読み、ノードごとに Credential の名前を出す Python のスクリプトです。n8n の URL と API キーは、環境変数 N8N_BASE_URL と N8N_API_KEY に入れておきます。
import json, os, sys, urllib.request
base = os.environ["N8N_BASE_URL"].rstrip("/")
req = urllib.request.Request(
f"{base}/api/v1/workflows/{sys.argv[1]}",
headers={"X-N8N-API-KEY": os.environ["N8N_API_KEY"]},
)
wf = json.load(urllib.request.urlopen(req))
for node in wf["nodes"]:
creds = node.get("credentials") or {}
names = ", ".join(c.get("name", "?") for c in creds.values()) or "(なし)"
print(f"{node['name']}: {names}")
ワークフローの ID(n8n の画面の URL の /workflow/ のあとの文字)を付けて実行します。
python list_creds.py ワークフローのID
出てくる一覧はこんな形です(Credential の名前は伏せています)。
Schedule Trigger (8:00): (なし)
処理済みtag_name一覧を取得: Google Sheets の Credential
GitHub Releases取得: GitHub の Credential
Claudeで記事生成: (なし)
WordPress下書き保存: このブログ用の WordPress の Credential
リリース情報Telegram: Telegram の Credential
複製した直後のコピーなら、全部のノードが「(なし)」になるはずです。付け直したあとは、WordPress のノードの行が、書き込みたいサイトの Credential になっているかを見ます。n8n の画面で1つずつノードを開くより、まとめて見られて見落としにくくなりました。
4. 切り替える前に、手で最後まで動かす
前回は、確かめないまま本番に切り替えて失敗しました。今回は、本番に切り替える前に、コピーを n8n の画面で1回手で実行しました(「Execute workflow」)。
確かめたこと
- 直したコピーを手で実行すると、すべてのノードを通って成功しました。
- 下書きは、このブログ(automatelabo.com)にできていました。その下書きは、中身を読んでから公開しました(n8n 2.42.6 の記事)。
- Google スプレッドシートへの記録と、Telegram への通知も成功しました。
- 上のスクリプトで、直したコピーのノードごとの Credential を一覧にできることを確かめました(2026-10-13)。
まだ確かめていないこと
- n8n で複製すると、いつも Credential が外れるのかは確かめていません。私の環境(2.7.4、セルフホスト)で2回そうなっただけです。n8n のバージョンや、Credential の持ち主・共有の設定で変わるかもしれません。
- 別のサイト用の Credential のまま先へ進んだら、本当に別のサイトに下書きができたのかは試していません。
このあと気をつけていること
- ワークフローを複製したら、まず Credential の一覧を出す。比べるときは、ノード名・パラメーターだけでなく Credential も比べる。
- 同じ種類の Credential が2つ以上あるときは、どのサイト用か名前でわかるようにしておく(「Wordpress account」のような最初の名前のままにしない)。
- 新しく足したノードや付け直したノードは、本番に切り替える前に、そのノードまで実際に動く実行で確かめる。
