একটি স্ক্রিপ্ট, CI জব বা AI এজেন্ট থেকে নিজের শিরোনাম, বিবরণ ও ভিজিবিলিটি দিয়ে নির্ধারিত সময়ে YouTube-এ ভিডিও আপলোড করুন। Google সাইন ইন দিয়ে চ্যানেলটি একবার যুক্ত করুন।
বেস URL https://api.so-me.studio/v1 · প্রমাণীকরণ X-API-Key · socialMedia: YOUTUBE
এই মানগুলোর একটি postType হিসেবে পাঠান। প্রতিটি পোস্টে টেক্সট লাগবে, আর ছবি বা ভিডিও আপনার মিডিয়া লাইব্রেরি থেকে fileId দিয়ে যুক্ত করা হয়।
VIDEO
একটি ভিডিও ফাইল। YouTube সর্বোচ্চ ৩ মিনিটের ভার্টিকাল ভিডিওকে Short হিসেবে গণ্য করে, তাই আলাদা কোনো Shorts টাইপ নেই।
মিডিয়া আপলোড করুন, তারপর পোস্ট তৈরি করুন। সঙ্গে সঙ্গে পাবলিশ করতে scheduledAt বাদ দিন।
POST /v1/media/presign-upload ফাইলটি আপনার মিডিয়া লাইব্রেরিতে যোগ করে এবং একটি fileId ও একটি প্রি-সাইনড uploadUrl ফেরত দেয়।
curl -X POST https://api.so-me.studio/v1/media/presign-upload \
-H "X-API-Key: $SOME_API_KEY" \
-H "Content-Type: application/json" \
-d '{"files":[{"filename":"build-time.mp4","mimetype":"video/mp4","size":209715200}]}'
# → [{ "fileId": "…", "uploadUrl": "https://…", "fileSrc": "…", "s3Key": "…" }]আপনি যে Content-Type ঘোষণা করেছেন ঠিক সেটি দিয়ে uploadUrl-এ বাইটগুলো PUT করুন। URL-টি এক ঘণ্টা বৈধ থাকে।
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: video/mp4" \
--upload-file ./build-time.mp4fileId সহ POST /v1/posts করুন। রেসপন্স হলো SCHEDULED স্ট্যাটাসের পোস্টটি, আর এটি scheduledAt-এ একটি কিউয়ের মাধ্যমে পাবলিশ হয়, ব্যর্থ হলে কিউটি আবার চেষ্টা করে।
curl -X POST https://api.so-me.studio/v1/posts \
-H "X-API-Key: $SOME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"socialMedia": "YOUTUBE",
"postType": "VIDEO",
"text": "কীভাবে আমরা বিল্ড টাইম অর্ধেকে নামিয়ে আনলাম",
"fileIds": ["<fileId>"],
"scheduledAt": "2026-11-08T16:00:00Z",
"metaData": {
"title": "কীভাবে আমরা বিল্ড টাইম অর্ধেকে নামিয়ে আনলাম",
"description": "ক্যাশিং, প্যারালাল জব এবং একটি বিস্ময়কর ফ্ল্যাগ।",
"visibility": "public"
}
}'ওয়ার্কস্পেসে একটিমাত্র YouTube অ্যাকাউন্ট থাকলে accountId ঐচ্ছিক। না হলে GET /v1/accounts থেকে একটি id দিন।
fileIds দিয়ে যুক্ত ফাইলগুলো কিউতে যাওয়ার আগে নিচের YouTube সীমার সাথে মিলিয়ে দেখা হয়। কোনো ফাইল নিয়ম ভাঙলে প্রতিটি ফাইলের রিপোর্টসহ 400 ফেরত আসে।
যেসব ফিল্ড YouTube-এ পোস্ট কীভাবে পাবলিশ হবে তা বদলায়।
| ফিল্ড | এটি কী করে |
|---|---|
| metaData.title | ভিডিওর শিরোনাম। YouTube ১০০ অক্ষর পর্যন্ত অনুমতি দেয়, তাই বড় শিরোনাম কেটে ফেলা হয়। না দিলে text ব্যবহার হয়। |
| metaData.description | ভিডিওর বিবরণ। না দিলে text ব্যবহার হয়। |
| metaData.visibility | private, unlisted বা public (privacyStatus একটি বিকল্প নাম হিসেবে কাজ করে)। এটি স্পষ্টভাবে সেট করুন: অবৈধ বা পরস্পরবিরোধী মান আপলোডের আগেই ব্যর্থ হয়। |
| firstComment | ভিডিও লাইভ হওয়ার পর এর নিচে করা একটি কমেন্ট, সর্বোচ্চ ১০,০০০ অক্ষর। |
Social media studio পাবলিশ করার আগে প্রতিটি ফাইল এই সীমাগুলোর সাথে মিলিয়ে দেখে। এগুলো আমাদের কনফিগার করা সীমা, YouTube-এর কোনো প্রতিশ্রুতি নয়: GET /v1/media/rules লাইভ টেবিলটি ফেরত দেয়, আর POST /v1/media/validate পোস্ট না করেই একটি ফাইল যাচাই করে।
পোস্টের ধরন VIDEO
পাবলিশিং অ্যাসিনক্রোনাস। post.published ও post.failed-এ সাবস্ক্রাইব করুন, অথবা postStatus POSTED বা FAILED না হওয়া পর্যন্ত GET /v1/posts/:id পোল করুন।
curl -X POST https://api.so-me.studio/v1/webhooks/subscriptions \
-H "X-API-Key: $SOME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/hooks/social",
"categories": ["post"],
"events": ["post.published", "post.failed"]
}'
# The response includes the secret that signs every delivery.POST /hooks/social
X-Webhook-Event: post.published
X-Webhook-Signature: <hex HMAC-SHA256 of the raw body>
{
"event": "post.published",
"category": "post",
"timestamp": "2026-11-03T15:00:07.412Z",
"data": { "postId": "…", "platform": "YOUTUBE" }
}প্রতিটি ডেলিভারি X-Webhook-Signature-এ HMAC-SHA256 দিয়ে সাইন করা থাকে। post.failed শেষ রিট্রাইয়ের পরে ট্রিগার হয়; কারণটি ঠিক করে POST /v1/posts/:id/retry কল করুন। প্রথম কমেন্টের ফলাফল আলাদাভাবে post.first_comment_posted বা post.first_comment_failed দিয়ে জানানো হয়।
একই API কী ২০০+ টুলসহ একটি MCP সার্ভার এবং একটি CLI চালায়, তাই একটি এজেন্ট হাতে লেখা HTTP কল ছাড়াই YouTube-এ পোস্ট করতে পারে।
আপনার API কী দিয়ে সার্ভারটি Claude, Cursor বা যেকোনো MCP ক্লায়েন্টে যোগ করুন। OAuth-ও কাজ করে। YouTube-এর জন্য এজেন্ট REST রিকোয়েস্টের একই ফিল্ড দিয়ে এই টুলগুলো কল করে:
{
"mcpServers": {
"so-me-studio": {
"url": "https://api.so-me.studio/mcp",
"headers": { "X-API-Key": "sk_live_…" }
}
}
}npm i -g @social-media-scheduler/cli দিয়ে ইনস্টল করুন। এটি আপনার হয়ে লোকাল ফাইল আপলোড করে এবং JSON প্রিন্ট করে, তাই একটি স্ক্রিপ্ট বা CI জব একটি কমান্ডেই YouTube পোস্ট শিডিউল করতে পারে।
so-me posts:create --platform YOUTUBE --post-type VIDEO \
-m ./build-time.mp4 \
-c "কীভাবে আমরা বিল্ড টাইম অর্ধেকে নামিয়ে আনলাম" \
-s 2026-11-08T16:00:00Z \
--metadata '{"title":"কীভাবে আমরা বিল্ড টাইম অর্ধেকে নামিয়ে আনলাম","visibility":"public"}'API, CLI ও MCP অ্যাক্সেস প্রতিটি পেইড প্ল্যানে অন্তর্ভুক্ত: Lite, Creator, Standard, Advanced ও Lifetime। প্ল্যান ও সীমা দেখুন
হ্যাঁ। সর্বোচ্চ ৩ মিনিটের একটি ভার্টিকাল ভিডিও postType VIDEO হিসেবে আপলোড করুন। YouTube এটিকে Short হিসেবে শ্রেণিবদ্ধ করে; আলাদা কোনো Shorts সেটিং নেই।
হ্যাঁ। Social media studio প্রতিটি YouTube ভিডিও সর্বোচ্চ ৩৫০ MB পর্যন্ত গ্রহণ করে, যা YouTube-এর সীমার চেয়ে অনেক কম। লম্বা বা উচ্চ বিটরেটের ভিডিও আপলোডের আগে কম্প্রেস করুন।
হ্যাঁ। metaData.visibility private বা unlisted সেট করুন। মান অবশ্যই private, unlisted বা public হতে হবে।
না। আপনি Social media studio ড্যাশবোর্ডে YouTube-এ সাইন ইনের মাধ্যমে একবারই YouTube অ্যাকাউন্ট যুক্ত করেন। এর টোকেন এনক্রিপ্ট করে সংরক্ষণ করা হয় এবং আমাদের দিকে রিফ্রেশ করা হয়, আর আপনার কোড কেবল X-API-Key হেডারে আপনার Social media studio API কী পাঠায়।
না। পোস্ট কিউতে ঢোকামাত্রই এটি ফেরত আসে। পাবলিশিং এমন একটি ওয়ার্কারে চলে যা ব্যর্থ হলে আবার চেষ্টা করে, তাই post.published ও post.failed শুনুন, অথবা GET /v1/posts/:id পোল করুন।
REST API, CLI ও MCP সার্ভার প্রতিটি পেইড প্ল্যানে অন্তর্ভুক্ত: Lite, Creator, Standard, Advanced ও Lifetime। Lite, Creator, Standard ও Advanced ৭ দিনের ট্রায়াল দিয়ে শুরু হয় (কার্ড প্রয়োজন), আর Lifetime একবারের পেমেন্ট।
ট্যাব নিয়ে টানাহেঁচড়া বন্ধ করুন, একটিমাত্র ক্যালেন্ডার থেকেই ২০টি প্ল্যাটফর্মের জন্য লিখুন, সাজান ও প্রকাশ করুন।