@ferchy/aimc-n8n-toolkit 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -17
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
# AIMC Toolkit for n8n
|
|
2
2
|
|
|
3
|
-
AIMC Toolkit is a community node package for n8n
|
|
3
|
+
AIMC Toolkit is a community node package for n8n that brings two focused nodes into your workflows:
|
|
4
4
|
|
|
5
|
-
- **AIMC Code**:
|
|
6
|
-
- **AIMC Media**: FFmpeg-
|
|
5
|
+
- **AIMC Code**: run JavaScript with a practical toolbox of libraries.
|
|
6
|
+
- **AIMC Media**: FFmpeg-powered media operations without extra glue nodes.
|
|
7
|
+
|
|
8
|
+
## Why I Built This
|
|
9
|
+
|
|
10
|
+
I kept hitting the same ceiling in n8n: simple transformations became long chains of Set, IF, and Code nodes, and media tasks required custom scripts or external services. AIMC Toolkit is my answer to that: a reliable, minimal package that removes busywork and keeps workflows fast and readable.
|
|
11
|
+
|
|
12
|
+
## Who This Is For
|
|
13
|
+
|
|
14
|
+
- **Automation builders** who want fewer nodes and faster iterations.
|
|
15
|
+
- **Agencies** handling content workflows, clips, and format conversions.
|
|
16
|
+
- **Founders and teams** building internal tooling on n8n.
|
|
17
|
+
- **Power users** who want a better code node and real media ops.
|
|
7
18
|
|
|
8
19
|
## Why AIMC Toolkit
|
|
9
20
|
|
|
10
|
-
- **
|
|
11
|
-
- **Media ready**:
|
|
12
|
-
- **Practical libraries**:
|
|
21
|
+
- **Fewer nodes, cleaner flows**: consolidate multiple steps into one code node.
|
|
22
|
+
- **Media ready**: convert, compress, merge, and inspect media in one place.
|
|
23
|
+
- **Practical libraries**: parsing, validation, dates, and web utilities built in.
|
|
13
24
|
|
|
14
25
|
## Installation
|
|
15
26
|
|
|
16
|
-
### Community Nodes
|
|
27
|
+
### Community Nodes (Recommended)
|
|
17
28
|
1. Open **Settings > Community Nodes** in n8n.
|
|
18
29
|
2. Install: `@ferchy/aimc-n8n-toolkit`.
|
|
19
30
|
|
|
@@ -30,12 +41,21 @@ AIMC Media will use the first available option:
|
|
|
30
41
|
2. Optional `ffmpeg-static` / `ffprobe-static`
|
|
31
42
|
3. System FFmpeg on `PATH`
|
|
32
43
|
|
|
33
|
-
|
|
44
|
+
### Docker (n8n official image)
|
|
45
|
+
```bash
|
|
46
|
+
docker exec <container> apk add --no-cache ffmpeg
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Debian/Ubuntu
|
|
34
50
|
```bash
|
|
35
|
-
# Debian/Ubuntu
|
|
36
51
|
apt-get update && apt-get install -y ffmpeg
|
|
37
52
|
```
|
|
38
53
|
|
|
54
|
+
### macOS (Homebrew)
|
|
55
|
+
```bash
|
|
56
|
+
brew install ffmpeg
|
|
57
|
+
```
|
|
58
|
+
|
|
39
59
|
## Nodes
|
|
40
60
|
|
|
41
61
|
### AIMC Code
|
|
@@ -43,8 +63,9 @@ apt-get update && apt-get install -y ffmpeg
|
|
|
43
63
|
**Features**
|
|
44
64
|
- Run once for all items or once per item.
|
|
45
65
|
- Access libraries as globals (`axios`, `_`, `zod`) or via `libs`.
|
|
66
|
+
- Built-in helpers (`utils.now`, `utils.safeJson`, `utils.toArray`).
|
|
46
67
|
|
|
47
|
-
**Example**
|
|
68
|
+
**Example: normalize data**
|
|
48
69
|
```javascript
|
|
49
70
|
const rows = $input.all().map((i) => i.json);
|
|
50
71
|
const ids = rows.map(() => nanoid());
|
|
@@ -57,9 +78,26 @@ return rows.map((row, index) => ({
|
|
|
57
78
|
}));
|
|
58
79
|
```
|
|
59
80
|
|
|
60
|
-
**
|
|
61
|
-
|
|
62
|
-
|
|
81
|
+
**Example: fetch + parse**
|
|
82
|
+
```javascript
|
|
83
|
+
const response = await axios.get('https://example.com/feed.xml');
|
|
84
|
+
const parsed = await xml2js.parseStringPromise(response.data);
|
|
85
|
+
|
|
86
|
+
return parsed;
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Library Categories**
|
|
90
|
+
|
|
91
|
+
- **HTTP + Web**: `axios`, `qs`, `form-data`, `cheerio`, `html-to-text`
|
|
92
|
+
- **Validation**: `zod`, `joi`, `yup`, `validator`, `ajv`
|
|
93
|
+
- **Data + Parsing**: `yaml`, `toml`, `xml2js`, `fast-xml-parser`, `papaparse`
|
|
94
|
+
- **Dates + Time**: `dayjs`, `date-fns`, `date-fns-tz`, `moment-timezone`, `cron-parser`, `ms`
|
|
95
|
+
- **Text + Search**: `fuse.js`, `string-similarity`, `slug`, `pluralize`, `marked`
|
|
96
|
+
- **IDs + Utils**: `uuid`, `nanoid`, `bytes`
|
|
97
|
+
- **Language**: `franc-min`, `compromise`
|
|
98
|
+
- **Media Helpers**: `qrcode`, `ytdl-core`
|
|
99
|
+
|
|
100
|
+
If you need the full list in the README, tell me and I will add it.
|
|
63
101
|
|
|
64
102
|
### AIMC Media
|
|
65
103
|
|
|
@@ -70,16 +108,37 @@ return rows.map((row, index) => ({
|
|
|
70
108
|
- Merge Video + Audio
|
|
71
109
|
- Metadata (ffprobe)
|
|
72
110
|
|
|
73
|
-
**
|
|
74
|
-
|
|
75
|
-
|
|
111
|
+
**Key Options**
|
|
112
|
+
- **Input Mode**: Binary or File Path
|
|
113
|
+
- **Output Mode**: Binary or File Path
|
|
114
|
+
- **Output Format**: mp4, webm, mov, mp3, wav, and more
|
|
115
|
+
- **Extra FFmpeg Args**: one per line for advanced control
|
|
116
|
+
|
|
117
|
+
**Example: convert and scale**
|
|
118
|
+
```
|
|
76
119
|
Operation: Convert / Transcode
|
|
77
120
|
Output Format: WebM
|
|
78
121
|
Additional Output Options:
|
|
79
122
|
-vf scale=1280:-2
|
|
80
123
|
```
|
|
81
124
|
|
|
82
|
-
**
|
|
125
|
+
**Example: compress**
|
|
126
|
+
```
|
|
127
|
+
Operation: Compress
|
|
128
|
+
CRF: 24
|
|
129
|
+
Preset: fast
|
|
130
|
+
Audio Bitrate: 128k
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Example: merge video + audio**
|
|
134
|
+
```
|
|
135
|
+
Operation: Merge Video + Audio
|
|
136
|
+
Input Mode: File Path
|
|
137
|
+
Video File Path: /path/to/video.mp4
|
|
138
|
+
Audio File Path: /path/to/audio.mp3
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Large Files**
|
|
83
142
|
Use **Input Mode = File Path** to avoid loading big files into memory.
|
|
84
143
|
|
|
85
144
|
## Configuration
|
|
@@ -89,6 +148,16 @@ Environment variables:
|
|
|
89
148
|
- `FFMPEG_PATH`: custom FFmpeg binary path
|
|
90
149
|
- `FFPROBE_PATH`: custom ffprobe binary path
|
|
91
150
|
|
|
151
|
+
## Troubleshooting
|
|
152
|
+
|
|
153
|
+
- **FFmpeg not found**: install FFmpeg or set `FFMPEG_PATH`.
|
|
154
|
+
- **Large files**: use File Path input mode.
|
|
155
|
+
- **Binary output missing**: check `Output Mode` and `Output Binary Property`.
|
|
156
|
+
|
|
157
|
+
## Support
|
|
158
|
+
|
|
159
|
+
If you need help or want a feature added, open a GitHub issue once the repo is live.
|
|
160
|
+
|
|
92
161
|
## License
|
|
93
162
|
|
|
94
163
|
MIT
|