柴田あっぶね…このn8nのワークフロー、人にあげるつもりだったけど、よく見たらJSONに認証情報が入ってた…(←マジで危なかった)



何やってるんですカ…。そんなあるあるな情報漏洩しないでくださいヨ…



いやぁ…しかし、この細かいJSONの中から認証情報だけ消して回るのか…賽の河原で石を積むが如し…



オロカモノにはそれくらいの修行が必要ですネ。サッと認証情報消してくだサイ



お願いだ!手伝ってくれ!ていうか、認証情報だけ消す何かしらのプログラムを作ってくれ!



…
ということで、n8nのワークフローJSONのお話です。
n8nは基本的にCredentialsに認証情報を持たせておけばワークフローを出力しても問題ないのですが、直書きしていたり、その他スプシのIDなど、残しておくと気持ち悪い情報がn8nのワークフローJSONの中にはあります。
今回はn8nのワークフローから認証情報や人に見せるのは嫌な情報を置き換えるJavaScriptコードを作ったので、シェアしていきます。
【この記事でわかること】
- n8nのワークフローから個人情報をダミーに置き換えるJSコード
- JSコードの使い方
- ワークフローから個人情報をダミーに置き換える際の注意点
さっそくコード
const fs = require('fs');
const inputFile = 'exported-workflow.json';
const outputFile = 'exported-workflow-clean.json';
let json = fs.readFileSync(inputFile, 'utf-8');
// 置換ルール: [正規表現, 置換後の文字列]
const replacements = [
[/sk-ant-[a-zA-Z0-9_-]+/g, 'YOUR_ANTHROPIC_API_KEY'],
[/AIza[a-zA-Z0-9_-]+/g, 'YOUR_GEMINI_API_KEY'],
// スプシID用のルール
[/("value":\s*")1[a-zA-Z0-9_-]{40,45}(")/g, '$1YOUR_SPREADSHEET_ID$2'],
[/(\/d\/)1[a-zA-Z0-9_-]{40,45}(\/|#|")/g, '$1YOUR_SPREADSHEET_ID$2'],
// GSCドメイン(ドメインプロパティ型:sc-domain:〜)
[/(sc-domain:)[a-zA-Z0-9.-]+/g, '$1YOUR_DOMAIN'],
// GSCドメイン(URLプレフィックス型・URLエンコード版:https%3A%2F%2F〜%2F)
[/(https?%3A%2F%2F)[a-zA-Z0-9.-]+(%2F)/gi, '$1YOUR_DOMAIN$2']
];
let foundAny = false;
replacements.forEach(function([pattern, replacement]) {
const matches = json.match(pattern);
if (matches) {
// キャプチャグループを使うためログの見え方は変わりますが、置換は正確に行われます
console.log('置換マッチ:', matches, '→', replacement);
json = json.replace(pattern, replacement);
foundAny = true;
}
});
fs.writeFileSync(outputFile, json, 'utf-8');
if (foundAny) {
console.log('置換完了 →', outputFile);
} else {
console.log('置換対象なし。そのままコピーしました →', outputFile);
}
}使い方
基本的にターミナルで操作していきます。
JavaScriptを動かすためにNodeを入れないといけないので、事前に入れておいてください。
Nodeの入れ方【Windowsの場合】
Node.js公式サイト から「LTS(推奨版)」をダウンロードして、インストーラーの指示通りに次へ進めてインストールしてください。
Nodeの入れ方【Macの場合】
Macの場合はNodeのインストールもターミナルでやっつけた方が楽チンです。ターミナルを立ち上げて、
brew install nodeと打ちます。これだけ。
これはHomebrewというパッケージ管理ソフトでNodeをインストールする、という方法です。
Nodeのアップデートがあっても「brew upgrade node」と打つだけでアップデートできます、便利。
もし「brewなんてコマンドはねぇぜ!(Homebrew自体が手元のPCにインストールされてない)」と言われたら、Homebrew公式サイトのトップページにある長めのコマンドをターミナルにコピペして、先にHomebrewをインストールしてください。
テキトーな場所にフォルダを作ります。
ターミナルを立ち上げたらそのユーザーのフォルダに降り立ちます。「ls→エンター」でどんなフォルダがあるか確認しつつ、必要であればcd でフォルダ移動しつつ…フォルダを作ってください。
フォルダ名は何でもいいですが、export-checkとでもしておきましょう。



例えば次のような感じでフォルダ確認&デスクトップに移動しつつ、mkdirでフォルダを作りましょう
ls (←ここにあるフォルダ一覧が出る)
cd Desktop(←例えばデスクトップに移動(change directory))
mkdir export-check(←これでデスクトップ下にexport-checkができる)Windowsであれば(Macでもそうだけど)普通にデスクトップ等にフォルダを作ってもOKです。
ただし、最終的にターミナルで実行するので、「どこにフォルダ作ったっけ?」と迷子にならないようにしましょう。
Macであれば、そのままnanoというテキストエディタを開くのが手っ取り早いです。
nano check-export.js先程のコードを貼り付けたら、ctrl+X(終了)→y(保存するか?と聞かれるのでyesのy)と入力して保存します。
Windowsであれば、notepadがいいですかね…パッと実験したらこれくらいしか立ち上がりませんでした。
notepad check-export.js結局いつものメモ帳が開きますが、そこにコードを貼り付けて保存してください。
n8nのワークフローからダウンロードしたJSONファイルを同じフォルダに入れます。
で、JSで指定している名前「exported-workflow.json」に変更しておいてください。



この変更を忘れると「そんなファイルねぇよ?」っておこられます…
準備ができたらJSファイルを実行します。
node check-export.jsexported-workflow-clean.jsonというJSONファイルが出力されれば成功です!



このexported-workflow-clean.jsonが、認証情報を抜いてダミーに書き換えたJSONファイルになります!
注意点.最後は自分でチェックをお願いします
今回のコードで置換できるのは
- Claude API
- Gemini API
- スプシID
- GSCのリクエスト内にある自分のドメイン
です。他の認証情報は抜けないので注意しておいてください。
まとめ
n8nのワークフローJSONから個人情報を抜き取るJavaScriptの紹介でした。
さすがにあのJSONファイルから手作業で抜くのは大変だし、なにより見落としがコワイです。
「プログラミングでの処理+人のチェック」のダブルチェックで大事な情報を守りましょう!



危なかったぜ…











