Перейти до змісту

Тижнева черга на кілька мереж

Раз на тиждень у вас є папка готових відео й список слотів — скажімо, понеділок, середа і пʼятниця о 18:00, — і кожен файл має піти в кожну мережу. Цей рецепт перетворює папку на тиждень queued постів одним скриптом проти REST API. Кожен файл завантажується один раз і згадується за своїм mediaId у стількох постах, скільки потрібно.

  • Платний тариф (API починається з Creator) і ключ API зі write — Налаштування → Ключі API.
  • Підключені акаунти або група, що їх містить — Групи й кроспостинг.
  • curl і jq або будь-який HTTP-клієнт. Тіла нижче — те, що надсилає будь-яка мова.
  1. Перелічити цілі один раз: GET /groups для id групи або GET /accounts для id акаунтів.
  2. Для кожного файлу: POST /media/uploads → PUT байтів → GET /media/{id}, доки не ready.
  3. Для кожного файлу і його слота: POST /posts/plan, перевірити, що кожен рядок ok, потім POST /posts із confirm: true.
  4. Перевірити: GET /posts?status=queued&from=…&to=… перелічує тиждень.
Terminal window
export KEY="ds_live_xxxxxxxxxxxxxxxxxxxx"
export API="https://api.dropslate.top/v1"
AUTH="Authorization: Bearer $KEY"
# 1) The group every post goes to (created once on Accounts -> Groups)
GROUP_ID=$(curl -s "$API/groups" -H "$AUTH" | jq -r '.groups[] | select(.name=="Weekly") | .id')
# 2) Upload one file and wait until it is ready
upload() {
local file="$1"
local size; size=$(stat -c%s "$file")
local ticket; ticket=$(curl -s -X POST "$API/media/uploads" -H "$AUTH" -H "Content-Type: application/json" \
-d "{\"filename\":\"$(basename "$file")\",\"mime\":\"video/mp4\",\"size\":$size}")
local id; id=$(echo "$ticket" | jq -r .mediaId)
curl -s -X PUT "$(echo "$ticket" | jq -r .uploadUrl)" -H "Content-Type: video/mp4" --data-binary @"$file" > /dev/null
until [ "$(curl -s "$API/media/$id" -H "$AUTH" | jq -r .status)" = "ready" ]; do sleep 5; done
echo "$id"
}
# 3) Plan, then create, one post per slot
schedule() {
local media="$1" when="$2" text="$3"
local body; body=$(jq -n --arg g "$GROUP_ID" --arg m "$media" --arg w "$when" --arg t "$text" \
'{targets:{groupId:$g}, mediaIds:[$m], text:$t, title:($t|.[0:100]), when:{publishAt:$w, timezone:"Europe/Kiev"}}')
local plan; plan=$(curl -s -X POST "$API/posts/plan" -H "$AUTH" -H "Content-Type: application/json" -d "$body")
if [ "$(echo "$plan" | jq -r .ok)" != "true" ]; then echo "$plan" | jq -r .table; return 1; fi
curl -s -X POST "$API/posts" -H "$AUTH" -H "Content-Type: application/json" \
-d "$(echo "$body" | jq '. + {confirm:true}')" | jq -r '.posts[].statusLine'
}
M1=$(upload ./week/monday.mp4)
M2=$(upload ./week/wednesday.mp4)
M3=$(upload ./week/friday.mp4)
schedule "$M1" "2026-09-28T18:00" "Monday: what we shipped this week."
schedule "$M2" "2026-09-30T18:00" "Wednesday: one question, answered."
schedule "$M3" "2026-10-02T18:00" "Friday: behind the scenes."

when — локальний час плюс часовий пояс IANA, у якому він записаний — {"publishAt":"2026-09-28T18:00","timezone":"Europe/Kiev"} — або рядок "now" чи "draft"; запланований час має бути щонайменше за 2 хвилини наперед. title використовують YouTube (там обовʼязково) і відео Facebook; інші мережі його ігнорують. Опис YouTube понад 5 000 байтів або текст Threads понад 500 символів зʼявляється рядком ok: false у плані, і функція друкує таблицю плану замість того, щоб щось створити.

Terminal window
curl -s "$API/posts?status=queued&from=2026-09-28T00:00:00%2B03:00&to=2026-10-05T00:00:00%2B03:00" -H "$AUTH" | jq -r '.posts[].statusLine'

Кожен рядок читається Queued. YouTube · What We Made · 28 Sep, 18:00 (Kyiv). Ті самі пости є в Календарі; кожен можна скасувати чи перепланувати там окремо. Коли слоти минуть, GET /posts?status=failed — та перевірка, на яку варто глянути.

  • Різний текст на мережу. Додайте overrides: {"overrides":{"threads":{"text":"Short version with one idea."},"youtube":{"title":"Full title for YouTube"}}}. Базовий text усе одно йде решті.
  • Instagram як Reel з кадром обкладинки. "perPlatform":{"instagram":{"contentType":"reel","coverMs":4500}}.
  • Чернетки замість розкладу. "when":"draft" створює чернетки, які ви розставите з Календаря пізніше.
  • n8n. Ті самі три виклики як вузли HTTP Request; рецепт Черга з таблиці контенту показує розкладку вузлів.