MCPcopy Create free account
hub / github.com/pollinations/pollinations / create_buffer_post

Function create_buffer_post

social/scripts/buffer_utils.py:148–222  ·  view source on GitHub ↗

Create a Buffer post for a single channel via GraphQL. Args: access_token: Buffer API access token channel_id: Buffer channel ID to post to text: The post text content media: Optional media dict with key 'photo' or 'url' containing image URL metadata: Opt

(
    access_token: str,
    channel_id: str,
    text: str,
    media: Optional[Dict] = None,
    metadata: Optional[Dict] = None,
    scheduled_at: Optional[str] = None,
    now: bool = False,
)

Source from the content-addressed store, hash-verified

146# --- Post creation ---
147
148def create_buffer_post(
149 access_token: str,
150 channel_id: str,
151 text: str,
152 media: Optional[Dict] = None,
153 metadata: Optional[Dict] = None,
154 scheduled_at: Optional[str] = None,
155 now: bool = False,
156) -> Dict:
157 """Create a Buffer post for a single channel via GraphQL.
158
159 Args:
160 access_token: Buffer API access token
161 channel_id: Buffer channel ID to post to
162 text: The post text content
163 media: Optional media dict with key 'photo' or 'url' containing image URL
164 metadata: Optional per-platform metadata for Buffer GraphQL
165 scheduled_at: Optional ISO 8601 timestamp for scheduling
166 now: If True, post immediately (shareNow mode)
167
168 Returns:
169 Dict with success status. On success: {"success": True, "post": {...}}.
170 On failure: {"success": False, "error": "..."}.
171 """
172 if scheduled_at:
173 mode = "customScheduled"
174 elif now:
175 mode = "shareNow"
176 else:
177 mode = "addToQueue"
178
179 post_input: Dict = {
180 "channelId": channel_id,
181 "text": text,
182 "schedulingType": "automatic",
183 "mode": mode,
184 }
185
186 if scheduled_at:
187 post_input["dueAt"] = scheduled_at
188
189 if metadata:
190 post_input["metadata"] = metadata
191
192 # Map media (REST used media[photo], GraphQL uses assets.images)
193 if media:
194 photos = media.get("photos") # list of URLs (for carousel)
195 if photos:
196 post_input["assets"] = {
197 "images": [{"url": u} for u in photos]
198 }
199 else:
200 image_url = media.get("photo") or media.get("url")
201 if image_url:
202 post_input["assets"] = {
203 "images": [{"url": image_url}]
204 }
205

Callers 1

Calls 2

_graphql_requestFunction · 0.85
getMethod · 0.65

Tested by

no test coverage detected