Plank help · updated 2026-08-24

Публикация в Threads

Подключите аккаунт Threads через официальный API Meta, чтобы ассистент публиковал тексты, изображения и цепочки ответов — включая лимит в байтах, который подводит нелатинские тексты.

Agents: fetch the raw markdown of this page at /ru/help/connecting-threads.md

Публикация в Threads

Ассистент может публиковать в Threads через официальный API Meta — текстовые посты, посты с изображением и цепочки ответов (длинную мысль, разбитую на несколько связанных постов).

Как и всё остальное, вручную это настраивать не нужно: попросите ассистента в чате («подключи наш аккаунт Threads»), и он соберёт скрипт публикации и проведёт вас через авторизацию. Страница написана для вас обоих; ассистент запрашивает её по адресу https://plank.md/help/connecting-threads.md перед публикацией.

Если нужен ещё и Instagram, делайте их по отдельности. Они могут жить в одном приложении Meta, но это по-настоящему разные подключения: другой продукт, другой app ID, другой токен, другие разрешения. См. Публикация в Instagram — и учтите, что поток входа, который для Instagram не работает, здесь как раз работает.

Шаг 1 — Создайте приложение Meta

  1. Откройте developers.facebook.com и создайте приложение с use case Threads.
  2. В настройках приложения найдите Threads app ID и Threads app secret.
  3. Добавьте свой redirect URI в список разрешённых OAuth-редиректов.
  4. Добавьте аккаунт, который будет публиковать, как тестировщика Threads и примите приглашение с этого аккаунта.

Threads app ID — это не ваш Meta App ID. Одно приложение Meta выдаёт несколько похожих числовых ID, и они невзаимозаменяемы: Threads нужен тот, что на странице продукта Threads. Не тот ID даёт «Invalid App ID» либо вход, который завершается и ничего не спрашивает.

Разрешения

  • threads_basic
  • threads_content_publish

Пока приложение не прошло проверку Meta, публикация работает только для владельца приложения и аккаунтов, добавленных тестировщиками. Обычно этого достаточно: корпоративному аккаунту, публикующему от своего имени, проверка не нужна.

Шаг 2 — Авторизуйте аккаунт

Ассистент даёт ссылку, вы открываете её и подтверждаете доступ, а затем присылаете обратно полный адрес из адресной строки браузера.

  1. Ассистент печатает ссылку авторизации.
  2. Откройте её в своём браузере и подтвердите, войдя тем аккаунтом, который должен публиковать.
  3. Страница, на которую вас перебросит, может не загрузиться. Это ожидаемо — важна адресная строка.
  4. Скопируйте URL целиком, включая всё после code=, и пришлите ассистенту.

Он обменяет это на долгоживущий токен, сохранит его и подтвердит, какому аккаунту тот принадлежит.

Шаг 3 — Публикация

Просто попросите: «опубликуй это в Threads». Ассистент сначала делает пробный прогон, показывая, что именно выйдет, и проверяет текст по всем лимитам ниже до обращения к Meta.

Лимит в 500 байт — то, что застаёт врасплох

Пост в Threads ограничен 500 байтами, а не 500 символами. Для английского это почти одно и то же. Для остальных языков — нет:

АлфавитБайт на символСколько примерно влезает
Английский и другая латиница1~500 символов
Русский, казахский и другая кириллица2~250 символов
Эмодзипо 4

То есть русский текст заканчивается примерно на половине ожидаемой длины, и черновик, выглядящий с запасом коротким, отклоняется. Это не особенность Plank — так считает сам API Threads.

Решение — цепочка ответов. Вместо того чтобы урезать хороший пост, ассистент может разбить его: первый пост несёт зацепку, каждый следующий отвечает предыдущему, и всё вместе читается как один тред. Для нелатинских алфавитов это обычный способ опубликовать что-то содержательное, а не обходной приём.

Остальные лимиты, все проверяются до отправки

Длина поста500 байт
Ссылок в посте5 уникальных
Постов за 24 часа250
Изображение и вложенная ссылкаНельзя совместить в одном посте

Также можно задать тематический тег, прикрепить ссылку и настроить, кто может отвечать.

Когда публикации тихо перестают выходить

Именно этот сбой стоит предусмотреть, потому что он уже случался: токен истёк, и никто об этом не сообщил. Сохранённый токен перестал действовать 11 июня 2026 года, и каждый следующий запланированный пост готовился, проходил пробный прогон и падал на последнем шаге. Заметили это примерно через три недели.

Как это выглядит: пост пишется и проверяется как обычно, и не срабатывает только сама публикация — обычно с сообщением об истёкшей сессии. Обновление не поможет, если токен истёк полностью: аккаунту нужно авторизоваться заново, а для этого нужен живой человек.

Поэтому: долгоживущие токены действуют около 60 дней и обновляются до истечения. Попросите ассистента проверять срок токена при настройке любой регулярной публикации и сообщать о сбое публикации в чат, а не только в лог. Запланированная задача, которая молча ничего не делает, выглядит точно так же, как работающая.


Для ассистента: детали реализации

База APIhttps://graph.threads.net/v1.0. Публикация в два шага: создать контейнер (POST /<user-id>/threads), затем опубликовать его (POST /<user-id>/threads_publish с creation id).

Проверяйте до отправки, а не после. Проверьте локально каждый пункт и падайте с внятным сообщением, чтобы отклонённый пост ничего не стоил:

  • Buffer.byteLength(text, 'utf8') <= 500 — именно байты, а не text.length. Кириллица занимает 2 байта на символ, поэтому русский пост на 300 символов уже за пределом. Указывайте в ошибке количество байт: «слишком длинно» само по себе бесполезно, когда текст выглядит коротким.
  • Не более 5 уникальных URL, считая и ссылки в тексте, и явно вложенную ссылку.
  • Изображение и вложенная ссылка взаимоисключающи в одном посте.

Переносы строк в тексте поста — настоящие, а не литеральный \n. Threads показывает те символы, которые вы отправили: пост, собранный как шелловская строка в двойных кавычках, придёт с видимым обратным слэшем и буквой n там, где должен быть абзацный отступ, — и займёт 2 байта из лимита в 500 вместо одного. Запишите текст в файл и прочитайте его как есть (jq --rawfile text /tmp/threads-post.txt); для короткого поста — TEXT=$'Первая строка.\n\nВторая строка.': внутри $'…', и только там, \n — это перенос. Считайте байты по этому же настоящему тексту. В Python "\n" внутри строки уже настоящий перенос; ловушка — шелловская.

Цепочки ответов — штатный ответ на лимит по байтам, а не редкий случай. Публикуйте посты по очереди и передавайте id предыдущего опубликованного поста как цель ответа: привязка к id контейнера вместо id публикации молча ломает цепочку. Публикуйте по порядку и только после успеха предыдущего.

Черновик за пределом лимита? Лучше разбить на цепочку, чем молча обрезать. Если всё же сокращаете, сохраните мысль целиком и покажите пользователю сокращённый текст до публикации — в журнале рабочего пространства полно случаев, когда черновик на 557 или 608 байт урезали, и именно запись о том, что изменилось, позволила потом это проверить.

Хранение токена. В некоторых рабочих пространствах токен Threads лежит в /home/coder/.config/threads/<workspace>/token.json, а не в scripts/. Это допустимая старая схема — продолжайте использовать токен там, где он есть. Это не утечка и не сломанная интеграция, а перенос в scripts/ открыл бы доступ одного человека всем участникам общего рабочего пространства. См. Скрипты рабочего пространства и боковая панель, а про подключения в целом — Подключение ваших инструментов.

Проверяйте срок действия заранее при настройке любой регулярной публикации и выносите сбой публикации в чат, а не только в файл лога.

Всегда сначала пробный прогон и записывайте, что именно опубликовано — текст поста плюс возвращённые media и creation id, — чтобы на более поздний вопрос «что вышло» был ответ.