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
- Откройте developers.facebook.com и создайте приложение с use case Threads.
- В настройках приложения найдите Threads app ID и Threads app secret.
- Добавьте свой redirect URI в список разрешённых OAuth-редиректов.
- Добавьте аккаунт, который будет публиковать, как тестировщика Threads и примите приглашение с этого аккаунта.
Threads app ID — это не ваш Meta App ID. Одно приложение Meta выдаёт несколько похожих числовых ID, и они невзаимозаменяемы: Threads нужен тот, что на странице продукта Threads. Не тот ID даёт «Invalid App ID» либо вход, который завершается и ничего не спрашивает.
Разрешения
threads_basicthreads_content_publish
Пока приложение не прошло проверку Meta, публикация работает только для владельца приложения и аккаунтов, добавленных тестировщиками. Обычно этого достаточно: корпоративному аккаунту, публикующему от своего имени, проверка не нужна.
Шаг 2 — Авторизуйте аккаунт
Ассистент даёт ссылку, вы открываете её и подтверждаете доступ, а затем присылаете обратно полный адрес из адресной строки браузера.
- Ассистент печатает ссылку авторизации.
- Откройте её в своём браузере и подтвердите, войдя тем аккаунтом, который должен публиковать.
- Страница, на которую вас перебросит, может не загрузиться. Это ожидаемо — важна адресная строка.
- Скопируйте URL целиком, включая всё после
code=, и пришлите ассистенту.
Он обменяет это на долгоживущий токен, сохранит его и подтвердит, какому аккаунту тот принадлежит.
Шаг 3 — Публикация
Просто попросите: «опубликуй это в Threads». Ассистент сначала делает пробный прогон, показывая, что именно выйдет, и проверяет текст по всем лимитам ниже до обращения к Meta.
Лимит в 500 байт — то, что застаёт врасплох
Пост в Threads ограничен 500 байтами, а не 500 символами. Для английского это почти одно и то же. Для остальных языков — нет:
| Алфавит | Байт на символ | Сколько примерно влезает |
|---|---|---|
| Английский и другая латиница | 1 | ~500 символов |
| Русский, казахский и другая кириллица | 2 | ~250 символов |
| Эмодзи | по 4 | — |
То есть русский текст заканчивается примерно на половине ожидаемой длины, и черновик, выглядящий с запасом коротким, отклоняется. Это не особенность Plank — так считает сам API Threads.
Решение — цепочка ответов. Вместо того чтобы урезать хороший пост, ассистент может разбить его: первый пост несёт зацепку, каждый следующий отвечает предыдущему, и всё вместе читается как один тред. Для нелатинских алфавитов это обычный способ опубликовать что-то содержательное, а не обходной приём.
Остальные лимиты, все проверяются до отправки
| Длина поста | 500 байт |
| Ссылок в посте | 5 уникальных |
| Постов за 24 часа | 250 |
| Изображение и вложенная ссылка | Нельзя совместить в одном посте |
Также можно задать тематический тег, прикрепить ссылку и настроить, кто может отвечать.
Когда публикации тихо перестают выходить
Именно этот сбой стоит предусмотреть, потому что он уже случался: токен истёк, и никто об этом не сообщил. Сохранённый токен перестал действовать 11 июня 2026 года, и каждый следующий запланированный пост готовился, проходил пробный прогон и падал на последнем шаге. Заметили это примерно через три недели.
Как это выглядит: пост пишется и проверяется как обычно, и не срабатывает только сама публикация — обычно с сообщением об истёкшей сессии. Обновление не поможет, если токен истёк полностью: аккаунту нужно авторизоваться заново, а для этого нужен живой человек.
Поэтому: долгоживущие токены действуют около 60 дней и обновляются до истечения. Попросите ассистента проверять срок токена при настройке любой регулярной публикации и сообщать о сбое публикации в чат, а не только в лог. Запланированная задача, которая молча ничего не делает, выглядит точно так же, как работающая.
Для ассистента: детали реализации
База API — https://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, — чтобы на более поздний вопрос «что вышло» был ответ.