Conversation
gynsus
force-pushed
the
pr/youtube-description-first-comment
branch
from
September 16, 2026 08:25
ddfb2f0 to
fd55ed6
Compare
Two per-platform meta fields, wired through web/API/MCP validation like Pinterest's board_id: - description (YouTube, ≤5000): full video description with clickable links; the publisher falls back to the post content when absent, so the pre-meta behavior is unchanged. - first_comment (YouTube + Instagram, ≤2200): posted by the account right after a successful publish — the classic home for links Instagram captions can't render and YouTube descriptions bury. Runs after markAsPublished and never fails the post; failures are logged. Instagram connects now request the manage-comments scope (existing accounts keep publishing; the first comment logs a permission error until reconnected). YouTube already held youtube.force-ssl.
The 100-char cap predates the per-platform meta: back then the whole content served as both title and description. Now the title comes from meta.title (validated at 100) or is auto-truncated by buildTitle, and the content lands in the description (5000) unless meta.description overrides it — yet a fully meta-equipped post still failed publish-time validation because the shared caption was longer than a title. Cap at 5000.
gynsus
force-pushed
the
pr/youtube-description-first-comment
branch
from
September 22, 2026 08:24
fd55ed6 to
5347ff5
Compare
Contributor
|
@gynsus it's ready for review? |
Contributor
Author
|
@paulocastellano Yes, ready for review! The branch is rebased on v1.1.0 (also adapted the new repurpose caption tests to the raised YouTube description limit) and CI is fully green. |
…tit#371), keep the first comment Upstream reimplemented the separate YouTube description, so this branch now carries only the first-comment-after-publish feature (YouTube + Instagram): dropped our meta.description rule, publisher override, editor textarea and duplicated test coverage in favor of upstream's, and grafted the first-comment field into the rewritten YouTubeSettings panel.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The classic "link in the first comment" trick isn't possible through TryPost: neither a YouTube Short nor an Instagram post can carry an automatic comment posted right after publishing — the spot where creators put the links a caption can't make clickable (Instagram) or wants to keep out of the description (YouTube).
What changed
meta.first_commentfor YouTube (commentThreads.insert, ≤ 10,000 but capped at 2,200 to share the field with Instagram) and Instagram (/{media_id}/comments;instagram_manage_commentsjoins the requested scopes — existing IG connections need one reconnect to pick it up).FirstCommentPosterthat catches everything and only logs: a failed comment must never fail a published post. Posts held in pending review (Google Business) get no comment.PostPlatformMetaRules, so the web editor, the REST API, and MCP all accept and persist it (fields without a rule there get silently stripped byvalidated()— covered by the meta persistence tests).Testing
FirstCommentPosterTest,YouTubePublisherTest,PostApiPlatformMetaTest,PostPlatformMetaToolTestpass. Battle-tested live: first comments posted on YouTube Shorts and Instagram.