Bookmark it. You'll use it for: adding videos, watching them download, and saving your Facebook page(s).
📘 Tutorial — how to operate it (step by step)
A. Add a video to the queue
Open the portal & click “Add Video”
On the top menu bar, the Add Video tab is selected by default. You'll see a form with these fields:
Video URL * — paste the link to the source video (TikTok, Instagram, Facebook, or a direct .mp4 link).
Platform — pick where the link is from (helps the downloader).
Title — a caption/label for your reference (optional but recommended).
Target FB Page — choose the page to publish to (set up in section C first).
Time Zone — defaults to PKT (Asia/Karachi).
Schedule — optional date/time; leave blank to publish as soon as ready.
💡 Paste the link, pick the page, hit Submit to Queue. That's it — the system takes over.
You'll get a confirmation
A green message appears: “✓ Added to queue (ID 12)”. The video is now saved and the download worker will pick it up automatically within ~1 minute.
B. Watch it download & publish
Click the “Download Queue” tab
You'll see a table of every video with live status pills:
Pending just added / waiting
Completed downloaded & published
Failed couldn't be fetched
What happens automatically (you do nothing)
Behind the scenes, every minute the worker:
Grabs the next Pending video.
Downloads it via the NCA Toolkit (works for TikTok / IG / FB / direct MP4).
Uploads it to secure storage (MinIO bucket flowsmotion-fb).
Flips the status to Completed and stores the link.
If a link is dead/broken, it's marked Failed so the queue keeps moving (it won't get stuck).
📊 Screenshot placeholder — the Queue table showing columns: ID · Title · Platform · Download · Upload · Storage · Created, with colored status pills.
Publishing to Facebook (once scheduler is live)
After a video is downloaded, the Publish Scheduler posts it to your Facebook Page using the Page token you provided. You'll see it appear on the Page timeline — no manual posting needed.
⏱ Publishing uses your selected timezone & schedule. If you left Schedule blank, it publishes as soon as the download finishes.
C. Save your Facebook Page (one-time setup)
Click the “FB Pages” tab
Fill in the form once per page you want to post to:
Page ID * — the numeric ID of your Facebook Page (e.g. 123456789012345).
Page Name — any label; this is what you'll pick in the Add-Video form's “Target FB Page” dropdown, so make it recognizable (e.g. “My Brand Page”).
Access Token * — your Facebook Page Access Token (see requirements below).
Time Zone — defaults to Asia/Karachi.
Click Save Page. It appears in the table below and becomes selectable in the Add-Video form.
🔑 Use a System-User / long-lived Page token so publishing doesn't stop after ~60 days. See the Blocking section for how to get one.
Switch to Download Queue → watch it go Pending → Completed.
Done. The video publishes to Facebook on its own.
❓ FAQ & troubleshooting
My video shows “Failed” — what do I do?
A Failed status means the downloader couldn't fetch that link (dead URL, private account, or YouTube — see note #6). Just re-add a working link. Failed rows don't block the rest of the queue.
Why won't my YouTube link work?
This server's IP is blocked by YouTube's bot protection (403). Use TikTok, Instagram, Facebook, or a direct .mp4 link instead. YouTube can be enabled later with a special token.
Nothing is publishing to Facebook yet?
The Publish Scheduler goes live once we have your Page Access Token + Page ID (the Blocking items below). Downloads work today; publishing activates after that.
Can I schedule a specific date/time?
Yes — use the Schedule field in the Add-Video form. Leave it blank to publish immediately after download.
Is my data safe?
Videos are stored in your private Cloudflare D1 database + MinIO bucket. Only your configured Facebook Page token can post. We never share your credentials.
Must be a Page token (not a user token). Required permissions:
pages_manage_posts, pages_read_engagement.
Recommended: generate via a Meta Business Manager System User → token is effectively non-expiring. A normal "long-lived" token expires in ~60 days and will silently break publishing.
Enter it in the portal's FB Pages tab → Access Token field (or send it to us to enter).
Required 2. Facebook Page ID(s)
The numeric Page ID for each page to post to (e.g. 123456789012345).
Enter it in the portal's FB Pages tab → Page ID field.
Required 3. Meta App configuration
A Facebook App must exist and the Page connected to it (or use a System User from Business Manager).
App should be Live, or the token owner must own the target page (dev mode works for owned pages).
🟠 One-time data entry — Facebook Page in the portal
The Publish Scheduler looks up the page by the name you pick in the Add-Video form's "Target FB Page" dropdown. So at least one page must be saved in the FB Pages tab:
Field
Example
Notes
Page Name
My Brand Page
Must exactly match what you pick in the form dropdown
Page ID
123456789012345
from item #2 above
Access Token
EAAB…
from item #1 above
Time Zone
Asia/Karachi
publishing schedule timezone
Without a saved page, the scheduler finds the video "due" but the lookup returns nothing → publish is skipped. (Downloads still work regardless.)
🟡 Confirm / decide
4. MinIO bucketWorkflows use bucket flowsmotion-fb (auto-created). No action needed.5. TimezoneSet to Asia/Karachi (PKT) per spec. Tell us if you need a different timezone.6. YouTube as sourceThis server's IP is 403-blocked by YouTube. Use TikTok / Instagram / Facebook / direct-MP4, or we enable YT with a PO Token later.7. Content rightsYou must own or have rights to publish the videos. Meta flags/bans accounts for repeated copyright strikes.
✅ Failure handling: dead links marked Failed so the queue never stalls
⏳ Publish Scheduler — built & ready, activates once we receive the FB Page token + ID (items #1–#3)
To go live with auto-publishing, send us:
Page Access Token(s) — System-User preferred
Page ID(s)
Confirmation on items #4, #5, #6 above
Or enter the token + page yourself in the portal's FB Pages tab. Once the token is in place, we flip the Publish Scheduler on, run one live end-to-end test (download a sample → post to your real Page), and confirm it appears.