Bulk import
Turn a folder of media into scheduled posts with filename and manual caption matching.
Bulk import turns a batch of media into ready-to-schedule posts in one pass. Two ways to get media in: drop your videos or images directly (each file becomes one post — best for a handful of clips, including multi-GB videos, which stream straight to storage with no zipping), or drop one ZIP of a folder (best when you want subfolders to become carousels). Caption blocks keyed to exact filenames are attached automatically; anything else stays available for you to place by hand.
Step 1 — Upload your media
Uploading loose files: pick your videos/images straight from the file dialog (or drag them in). Each file becomes a single post — ideal for a few clips and for large videos, which upload in resumable chunks directly to storage and aren’t subject to the regular upload size limit. Carousels aren’t built this way; use a ZIP for those.
Uploading a ZIP is the way to get carousels and keep a folder structure. Organize your media in a folder, zip that folder, and drop the ZIP. The grouping rules:
- Each subfolder becomes one post. Put 2–10 images/videos inside to make a carousel.
- Slides are ordered by filename. Name them
1.jpg,2.jpg,3.mp4… the first file is the cover. - A single file at the top level (not in a subfolder) becomes a single image or video post.
- Supported: JPG, PNG, GIF, WebP, HEIC, MP4, MOV, PDF. HEIC and non-MP4 video are converted automatically (see Media auto-fix).
Example folder structure
my-batch/ ← zip THIS folder ├── 01-product-launch/ ← one carousel post │ ├── 1.jpg ← cover │ ├── 2.jpg │ └── 3.mp4 ├── 02-behind-the-scenes/ ← another carousel │ ├── 1.png │ └── 2.png ├── promo-clip.mp4 ← a single video post └── quote-card.png ← a single image post
That ZIP produces four posts: two carousels, one video, one image. The wizard shows you the detected grouping before anything is created.
1, 2, 10) sorts naturally — 10.jpg correctly comes after 2.jpg, not after 1.jpg.Step 2 — Add captions (optional)
Drop a caption file into the same ZIP and the wizard reads it automatically — you don’t pick a format. Any of these work, and the wizard detects which one you used:
- Per-file blocks — a text file with
@filenameon its own line followed by that file’s caption. Best when captions are long or span multiple lines. - CSV / TSV — columns for filename, an optional
title, and the caption (quoted fields are fine). The title fills each post’s internal name; if omitted, the filename is used. Best when you keep captions in a spreadsheet. Export as CSV, not .xlsx. - Captions only — one caption per line, matched to your media in order. Best for a quick batch where order is reliable.
Grab a starter file from the Sample link in the wizard. A per-post caption.txt inside a subfolder still sets that post’s caption directly.
Example — per-file blocks
@promo-clip.mp4 Launch day is here! Three years in the making. @quote-card.png "Build the thing only you can build."
Step 3 — Match and review
After upload, captions are attached using explicit file identity:
- Filename match — a caption keyed to one unambiguous filename is attached to that media automatically.
- Manual match — unmatched captions stay in a pool so you can drag each one onto the intended post.
You can reject or edit any filename match and drag a different caption in its place. Nothing is created until you confirm.
Use a clip’s audio transcript (when enabled)
If your workspace has transcription configured, video posts get an extra option: use audio transcript. The wizard transcribes what is said and places that transcript in the editable caption field. It does not invent a title, description, hashtags, or tone. Without transcription configured, the option is hidden and manual matching still works.
Step 4 — Review & schedule
- Defaults — set the brand, channels, and whether to save as drafts or auto-schedule the whole batch at a cadence.
- Review each — step through every post (“3 of 12”), edit the internal title and the caption, see per-platform validation, and check the auto-fix notes. The internal title is how you find the post later; it’s never published.
- Confirm — ready posts are created; anything blocked is flagged with a reason. Auto-fixable issues (HEIC, MOV, oversize) don’t block.
Troubleshooting
- “No posts found in the ZIP” — make sure your media is inside the zipped folder (not an empty archive), and re-zip.
- A caption didn’t match a file — check that the
@filenameor CSV filename matches a file in the ZIP exactly (case-insensitive). Unmatched captions stay in the pool so you can drag them in. - A filename match is wrong — reject the pair, then drag the correct caption from the pool.
- A post is blocked in review — usually a caption over the platform limit or too many carousel slides. The message says which platform and limit.