n8n-commit — Export n8n Workflows to Git
Exports all n8n workflows from the live pod in the fenrir-marketing namespace,
copies them into infrastructure/n8n/workflows/, commits any changes, and opens a PR.
Usage
/n8n-commit
Instructions
Step 1 — Find the n8n pod
N8N_POD=$(kubectl get pods -n fenrir-marketing -l app.kubernetes.io/name=n8n,app.kubernetes.io/component=main -o jsonpath='{.items[0].metadata.name}')
echo "Pod: $N8N_POD"
If no pod is found (empty output), stop and report:
"No n8n pod found in fenrir-marketing namespace. Is n8n running?"
Step 2 — Export workflows from the pod
kubectl exec -n fenrir-marketing "$N8N_POD" -- n8n export:workflow --all --output=/tmp/n8n-export.json
If the export command fails, stop and report the error.
Step 3 — Copy exported file to local and split into individual workflow files
kubectl cp "fenrir-marketing/$N8N_POD:/tmp/n8n-export.json" /tmp/n8n-export.json
n8n exports all workflows as a JSON array. Split into individual files named by workflow id:
# Count workflows in the export
COUNT=$(jq 'length' /tmp/n8n-export.json)
echo "Exported $COUNT workflows"
# Split array into individual files, named by id field (kebab-case)
for i in $(seq 0 $((COUNT - 1))); do
ID=$(jq -r ".[$i].id" /tmp/n8n-export.json)
jq ".[$i]" /tmp/n8n-export.json > "infrastructure/n8n/workflows/${ID}.json"
echo " → infrastructure/n8n/workflows/${ID}.json"
done
This writes each workflow as a separate JSON file in infrastructure/n8n/workflows/.
Step 4 — Check for changes
git diff --stat infrastructure/n8n/workflows/
git status --short infrastructure/n8n/workflows/
If there are no changes (both commands produce no output):
- Report: "No workflow changes detected — infrastructure/n8n/workflows/ is already up to date."
- Stop here. Do NOT create a branch or PR.
If there are changes, continue to Step 5.
Step 5 — Create a branch, commit, and push
DATE=$(date +%Y-%m-%d)
BRANCH="chore/n8n-export-$DATE"
git checkout -b "$BRANCH"
git add infrastructure/n8n/workflows/
git commit -m "chore: export n8n workflows $DATE
# Summary of changes
## Summary
- Export all n8n workflows from fenrir-marketing pod to infrastructure/n8n/workflows/"
git push origin "$BRANCH"
Step 6 — Create a PR
gh pr create \
--title "chore: export n8n workflows" \
--body "$(cat <<'EOF'
## Summary
- Automated export of all n8n workflows from the running pod in `fenrir-marketing` namespace
- Workflows written to `infrastructure/n8n/workflows/`
- No manual changes — generated by `/n8n-commit`
## How to verify
1. Review the diff in `infrastructure/n8n/workflows/`
2. Confirm workflow JSON files match expected workflow names in the n8n UI
EOF
)" \
--base main
Report the PR URL to the user.
Step 7 — Report
Print a summary:
## n8n Workflow Export Complete
- **Pod:** <N8N_POD>
- **Workflows exported to:** infrastructure/n8n/workflows/
- **Branch:** chore/n8n-export-<DATE>
- **PR:** <PR_URL>
Notes
- Namespace:
fenrir-marketing(notfenrir-analytics) - Requires
kubectlconfigured for the GKE cluster with access tofenrir-marketing - Requires
ghCLI authenticated for PR creation - Requires the repo working directory to be on
main(clean state) before running - The
infrastructure/n8n/workflows/directory is the canonical store for workflow backups