| Параметр | Значення |
|---|---|
| Username | @smart_pediatric_news |
| Threads User ID | 36732325746366729 |
| Профіль | https://www.threads.com/@smart_pediatric_news |
| Access Token | /srv/passepartout/meta/threads/pediatric-news-token.txt |
| Термін дії токена | ~2026-07-10 (long-lived, треба оновлювати що ~60 днів) |
# Крок 1: Створити media container
curl -X POST "https://graph.threads.net/v1.0/${THREADS_USER_ID}/threads" \
-d "media_type=TEXT" \
-d "text=Текст поста тут" \
-d "access_token=${THREADS_TOKEN}"
# → {"id": "CREATION_ID"}
# Крок 2: Опублікувати
curl -X POST "https://graph.threads.net/v1.0/${THREADS_USER_ID}/threads_publish" \
-d "creation_id=CREATION_ID" \
-d "access_token=${THREADS_TOKEN}"
# → {"id": "POST_ID"}
# Крок 1: Container з image
curl -X POST "https://graph.threads.net/v1.0/${THREADS_USER_ID}/threads" \
-d "media_type=IMAGE" \
-d "image_url=https://публічний-url-до-картинки.jpg" \
-d "text=Підпис" \
-d "access_token=${THREADS_TOKEN}"
# Крок 2: Publish (той самий)
import requests, os
THREADS_USER_ID = "36732325746366729"
THREADS_TOKEN = open("/srv/passepartout/meta/threads/pediatric-news-token.txt").read().strip()
BASE_URL = f"https://graph.threads.net/v1.0/{THREADS_USER_ID}"
def publish_thread(text: str, image_url: str = None) -> str:
"""Публікує пост в Threads. Повертає post_id або кидає виключення."""
params = {"access_token": THREADS_TOKEN, "text": text}
if image_url:
params["media_type"] = "IMAGE"
params["image_url"] = image_url
else:
params["media_type"] = "TEXT"
# Step 1: create container
r = requests.post(f"{BASE_URL}/threads", data=params)
r.raise_for_status()
creation_id = r.json()["id"]
# Step 2: publish
r2 = requests.post(f"{BASE_URL}/threads_publish",
data={"creation_id": creation_id, "access_token": THREADS_TOKEN})
r2.raise_for_status()
return r2.json()["id"]
Threads — короткий формат (макс. 500 символів на TEXT пост). Новини з Telegram-каналу треба:
Адаптуй новину для Threads-акаунту @smart_pediatric_news (педіатрія для лікарів).
Вимоги:
- Максимум 420 символів (лишаємо місце для хештегів)
- Медичний, але доступний стиль
- Виділи ключовий факт у першому реченні
- Додай 2-3 хештеги з: #педіатрія #доказовамедицина #неонатологія #вакцинація #дитячездоров'я
- БЕЗ посилань всередині тексту
Новина: {original_text}
API НЕ підтримує:
API підтримує:
Telegram-бот отримує новину
→ Gemini/Claude: адаптує під Threads формат
→ publish_thread(text, image_url?)
→ Логує post_id + timestamp в БД або файл
→ (опційно) Надсилає підтвердження Сергію в Telegram
Long-lived token живе 60 днів. Треба оновлювати:
NEW_TOKEN=$(curl -s "https://graph.threads.net/refresh_access_token?grant_type=th_refresh_token&access_token=$(cat /srv/passepartout/meta/threads/pediatric-news-token.txt)" | jq -r '.access_token')
echo "$NEW_TOKEN" > /srv/passepartout/meta/threads/pediatric-news-token.txt
Додати в cron (~раз на 45 днів).