YouTubeVideoUploadService
আপনাকে Google Ads API-এর মাধ্যমে সরাসরি YouTube-এ ভিডিও আপলোড করতে দেয়। এইসব
ভিডিও পরে বিভিন্ন ধরনের বিজ্ঞাপনে ভিডিও অ্যাসেট তৈরি করতে ব্যবহার করা যেতে পারে, যেমন
পারফর্ম্যান্স ম্যাক্স ক্যাম্পেন অথবা
ডিমান্ড জেনারেশন ক্যাম্পেন।
এই পরিষেবা YouTube আপলোড প্রসেস ম্যানেজ করার মাধ্যমে ভিডিও বিজ্ঞাপন তৈরি করার ওয়ার্কফ্লোকে স্ট্রিমলাইন করে, ভিডিওগুলি আপনার অ্যাকাউন্টের সাথে সঠিকভাবে যুক্ত আছে কিনা তা নিশ্চিত করে।
মূল ধারণা
শুরু করার আগে, ভিডিও আপলোড কীভাবে ম্যানেজ করা হয় এবং সেগুলি কোন কোন আলাদা আলাদা স্টেজে যেতে পারে তা বোঝা গুরুত্বপূর্ণ।
এন্ড-টু-এন্ড ওয়ার্কফ্লো
ভিডিও ফাইল আপলোড করে বিজ্ঞাপনে দেখানোর জন্য চারটি ধাপ পরপর অনুসরণ করতে হয়:
| ধাপ | পরিষেবা ও পদ্ধতি | সারাংশ |
|---|---|---|
| ১. ভিডিও বাইট শুরু ও আপলোড করা | CreateYouTubeVideoUpload, YouTubeVideoUploadService এ |
YouTubeVideoUpload রিসোর্স (customers/{customer_id}/youTubeVideoUploads/{video_upload_id}) তৈরি করতে ভিডিও মেটাডেটা ও বাইনারি ফাইল আপলোড করুন। |
| ২. পোল প্রসেসিং স্টেট | SearchStream, GoogleAdsService এ |
state = 'PROCESSED' পর্যন্ত you_tube_video_upload কোয়েরি করুন এবং ১১-অক্ষরের YouTube video_id পপুলেট করা হয়েছে। |
| ৩. আবার ব্যবহার করা যাবে এমন ভিডিও অ্যাসেট তৈরি করা | MutateAssets, AssetService এ |
অ্যাসেট রিসোর্স নাম (customers/{customer_id}/assets/{asset_id}) পেতে YoutubeVideoAsset (youtube_video_id = video_id) তৈরি করুন। |
| ৪. ক্যাম্পেন বা বিজ্ঞাপনের সাথে অ্যাসেট লিঙ্ক করুন | AssetGroupAssetService-এ MutateAssetGroupAssets অথবা AdGroupAdService-এ MutateAdGroupAds |
অ্যাসেটকে পারফর্ম্যান্স ম্যাক্স AssetGroupAsset (field_type = YOUTUBE_VIDEO) বা ডিমান্ড জেনারেশন DemandGenVideoResponsiveAdInfo (videos[].asset) ক্যাম্পেনের সাথে লিঙ্ক করুন। |
চ্যানেলের মালিকানা
ভিডিও আপলোড করার সময়, আপনি YouTubeVideoUpload রিসোর্সের channel_id ফিল্ড ব্যবহার করে
গন্তব্য YouTube চ্যানেল উল্লেখ করতে পারেন।
- বিজ্ঞাপনদাতার মালিকানাধীন (ব্র্যান্ড) চ্যানেল: বিজ্ঞাপনদাতার মালিকানাধীন আগে থেকে থাকা YouTube চ্যানেলের
channel_idপ্রদান করুন। এটি শুধুমাত্র ব্যবহারকারী যাচাইকরণ ফ্লোতে কাজ করে; এটি পরিষেবা অ্যাকাউন্টের সাথে ব্যবহার করা যাবে না। - Google-এর ম্যানেজ করা চ্যানেল:
channel_idবাদ দেওয়া হলে, ভিডিওটি Google Ads অ্যাকাউন্টের সাথে যুক্ত Google-এর ম্যানেজ করা YouTube চ্যানেলে আপলোড করা হয়।
আপলোড স্ট্যাটাস
YouTube ভিডিও আপলোডের লাইফসাইকেল state ফিল্ডের মাধ্যমে ট্র্যাক করা হয়।
YouTubeVideoUploadState
enum নিম্নলিখিত স্টেটগুলি নির্ধারণ করে:
| রাজ্য | বিবরণ |
|---|---|
PENDING |
ভিডিওটি আপলোড করা হচ্ছে। |
UPLOADED |
ভিডিওটি আপলোড করা হয়েছে এবং YouTube সেটি প্রসেস করছে। |
PROCESSED |
ভিডিওটি প্রসেস করা হয়েছে এবং ব্যবহারের জন্য রেডি। |
FAILED |
আপলোড বা প্রসেস করা যায়নি এবং সম্পূর্ণ করা যাবে না। |
REJECTED |
যাচাইকরণ বা নীতি সংক্রান্ত কারণে ভিডিওটি বাতিল করা হয়েছে। |
UNAVAILABLE |
ভিডিওর স্ট্যাটাস উপলভ্য নেই; এটি হয়ত YouTube থেকে সরিয়ে দেওয়া হয়েছে। |
গোপনীয়তা সেটিংস
video_privacy ফিল্ড থেকে আপলোড করা ভিডিও কে দেখতে পাবেন তা নিয়ন্ত্রণ করা যায়। YouTubeVideoPrivacy
enum-এ এগুলি কাজ করে:
PUBLIC: YouTube-এ যেকোনও ব্যক্তি ভিডিওটি দেখতে পাবেন। (শুধু ব্র্যান্ড চ্যানেলের জন্য অনুমোদিত)।UNLISTED: ভিডিওটি সার্চ করে পাওয়া যাবে না, তবে লিঙ্ক থাকলে যে কেউ দেখতে পারবেন। Google-এর ম্যানেজ করা চ্যানেলের জন্য এটি ডিফল্ট এবং একমাত্র বিকল্প।
জেনারেটিভ কন্টেন্ট ডিসক্লোজার
v26 থেকে শুরু করে, EU AI অ্যাক্টের মতো রেগুলেশনের অধীনে, আপলোড করা ভিডিও কন্টেন্টে AI-জেনারেটেড বা সিন্থেটিক মিডিয়া আছে কিনা তা বিজ্ঞাপনদাতারা প্রকাশ করতে পারবেন।
YouTubeVideoUpload-এর video_content_metadata ফিল্ডে
VideoContentMetadata আছে। YouTubeVideoUploadGenerativeContentDisclosure
enum ব্যবহার করে
generative_content_disclosure নেস্টেড ফিল্ড সেট করুন:
| ভ্যালু | বিবরণ |
|---|---|
NON_GENERATIVE_CONTENT |
বিজ্ঞাপনদাতা জানিয়েছেন যে ভিডিওটি AI-এর মাধ্যমে তৈরি করা হয়নি। |
GENERATIVE_CONTENT |
বিজ্ঞাপনদাতা ভিডিওটি AI-জেনারেটেড হিসেবে প্রকাশ করেছেন। |
ভিডিও আপলোড করুন
ভিডিও আপলোড করতে, আপনাকে অবশ্যই
CreateYouTubeVideoUpload পদ্ধতির জন্য মাল্টি-পার্ট অনুরোধ ব্যবহার করতে হবে। অনুরোধে আপলোড করা ভিডিওর মেটাডেটা এবং ভিডিও ফাইল, দুটিই আছে।
১. আপলোড শুরু করুন
নিম্নলিখিত ফিল্ড সহ একটি CreateYouTubeVideoUploadRequest তৈরি করুন:
| ফিল্ড | এই ব্যাজ অর্জন করার জন্য প্রয়োজনীয় যোগ্যতা | বিবরণ ও সীমাবদ্ধতা |
|---|---|---|
customer_id |
প্রয়োজনীয় | ১০-সংখ্যার Google Ads কাস্টমার আইডি (হাইফেন ছাড়া)। |
you_tube_video_upload.video_title |
প্রয়োজন (INPUT_ONLY, IMMUTABLE) |
YouTube-এ আপলোড করা ভিডিওর শীর্ষক (সর্বাধিক ১০০ অক্ষর; < বা > থাকতে পারবে না)। |
you_tube_video_upload.video_description |
ঐচ্ছিক (INPUT_ONLY, IMMUTABLE) |
YouTube-এ ভিডিওর বিবরণ (সর্বাধিক ৫,০০০ অক্ষর; < বা > থাকতে পারবে না)। |
you_tube_video_upload.channel_id |
ঐচ্ছিক (IMMUTABLE) |
বিজ্ঞাপনদাতার মালিকানাধীন ব্র্যান্ড চ্যানেলের জন্য ২৪-অক্ষরের ডেস্টিনেশন YouTube চ্যানেল আইডি (UC দিয়ে শুরু হয়)। বাদ দেওয়া হলে, Google-এর ম্যানেজ করা চ্যানেলে আপলোড করা হয়। |
you_tube_video_upload.video_privacy |
ঐচ্ছিক (ব্র্যান্ড চ্যানেলে পরিবর্তন করা যায়) | YouTubeVideoPrivacy সেটিং (UNLISTED ডিফল্ট, অথবা বিজ্ঞাপনদাতার মালিকানাধীন ব্র্যান্ড চ্যানেলের জন্য PUBLIC)। |
you_tube_video_upload.video_content_metadata |
ঐচ্ছিক (INPUT_ONLY, IMMUTABLE) |
v26 থেকে উপলভ্য: VideoContentMetadata-এ generative_content_disclosure-এর মান YouTubeVideoUploadGenerativeContentDisclosure (NON_GENERATIVE_CONTENT বা GENERATIVE_CONTENT) হিসেবে সেট করা আছে। |
আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করলে,
CreateYouTubeVideoUpload
মেথড কল করুন, আপনার ভিডিও ফাইল পাস করুন এবং ভিডিও আপলোড ইন্টার্নালি
ম্যানেজ করা হবে।
Java
String videoUploadResourceName; try (YouTubeVideoUploadServiceClient youTubeVideoUploadServiceClient = googleAdsClient.getLatestVersion().createYouTubeVideoUploadServiceClient()) { YouTubeVideoUpload youTubeVideoUpload = YouTubeVideoUpload.newBuilder() .setVideoTitle("Test Video") .setVideoDescription("Test Video Description") .setVideoPrivacy(YouTubeVideoPrivacy.UNLISTED) .build(); CreateYouTubeVideoUploadRequest createUploadRequest = CreateYouTubeVideoUploadRequest.newBuilder() .setCustomerId(Long.toString(customerId)) .setYouTubeVideoUpload(youTubeVideoUpload) .build(); CreateYouTubeVideoUploadResponse response = youTubeVideoUploadServiceClient.createYouTubeVideoUpload( createUploadRequest, () -> new FileInputStream(videoFile), null); videoUploadResourceName = response.getResourceName(); System.out.printf("Created YouTube video upload: %s%n", videoUploadResourceName); }
C#
YouTubeVideoUploadServiceClient ytService = client.GetService( Services.V26.YouTubeVideoUploadService); CreateYouTubeVideoUploadRequest createUploadRequest = new CreateYouTubeVideoUploadRequest() { CustomerId = customerId.ToString(), YouTubeVideoUpload = new YouTubeVideoUpload() { VideoTitle = "Test Video", VideoDescription = "Test Video Description", VideoPrivacy = YouTubeVideoPrivacy.Unlisted } }; string videoUploadResourceName; using (FileStream stream = File.OpenRead(videoFilePath)) { ResumableUploadSession<CreateYouTubeVideoUploadRequest, CreateYouTubeVideoUploadResponse> session = ytService.CreateYouTubeVideoUpload(); CreateYouTubeVideoUploadResponse response = session.BeginUploadAsync(createUploadRequest, stream).Result; videoUploadResourceName = response.ResourceName; Console.WriteLine($"Created YouTube video upload: {videoUploadResourceName}"); }
PHP
$youTubeVideoUploadServiceClient = $googleAdsClient->getYouTubeVideoUploadServiceClient(); $youTubeVideoUpload = new YouTubeVideoUpload([ 'video_title' => 'Test Video', 'video_description' => 'Test Video Description', 'video_privacy' => YouTubeVideoPrivacy::UNLISTED ]); $createYouTubeVideoUploadRequest = CreateYouTubeVideoUploadRequest::build( $customerId, $youTubeVideoUpload ); /** @var ResumableUpload $resumableUpload */ $resumableUpload = $youTubeVideoUploadServiceClient->createYouTubeVideoUpload( $createYouTubeVideoUploadRequest ); $stream = Utils::streamFor(fopen($videoFilePath, 'rb')); /** @var CreateYouTubeVideoUploadResponse $response */ $response = $resumableUpload->startUpload($stream); $videoUploadResourceName = $response->getResourceName(); printf("Created YouTube video upload: '%s'%s", $videoUploadResourceName, PHP_EOL);
Python
yt_service: YouTubeVideoUploadServiceClient = client.get_service( "YouTubeVideoUploadService" ) create_upload_request: CreateYouTubeVideoUploadRequest = ( youtube_video_upload_service.CreateYouTubeVideoUploadRequest() ) create_upload_request.customer_id = customer_id create_upload_request.you_tube_video_upload.video_title = "Test Video" create_upload_request.you_tube_video_upload.video_description = ( "Test Video Description" ) create_upload_request.you_tube_video_upload.video_privacy = ( client.enums.YouTubeVideoPrivacyEnum.UNLISTED ) video_upload_resource_name: str with open(video_file_path, "rb") as stream: response: CreateYouTubeVideoUploadResponse = ( yt_service.create_you_tube_video_upload( stream=stream, request=create_upload_request, retry=None, ) ) video_upload_resource_name = response.resource_name print(f"Created YouTube video upload: {video_upload_resource_name}")
Ruby
video_upload = client.resource.you_tube_video_upload do |v| v.video_title = "Test Video" v.video_description = "Test Video Description" v.video_privacy = :UNLISTED end upload = client.service.you_tube_video_upload.create_you_tube_video_upload( customer_id: customer_id, you_tube_video_upload: video_upload, ) video_upload_resource_name = nil File.open(video_file_path, "rb") do |stream| response = upload.start( stream: stream, content_type: "application/octet-stream", ) video_upload_resource_name = response.resource_name puts "Created YouTube video upload: #{video_upload_resource_name}" end
Perl
This example is not yet available in Perl; you can take a look at the other languages.
কার্ল
# # Use the --i curl parameter to capture response headers in the $RESPONSE # variable. FILE_SIZE=$(wc -c < "${VIDEO_FILE_NAME}" | tr -d '\r') RESPONSE=$(curl -i -f -v -s --request POST \ "https://googleads.googleapis.com/resumable/upload/v${API_VERSION}/customers/${CUSTOMER_ID}/youTubeVideoUploads:create" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Protocol: resumable" \ --header "X-Goog-Upload-Command: start" \ --header "X-Goog-Upload-Header-Content-Length: ${FILE_SIZE}" \ --data @- <<EOF { "customer_id": "${CUSTOMER_ID}", "you_tube_video_upload": { "video_title": "${VIDEO_TITLE}", "video_description": "${VIDEO_DESCRIPTION}", "video_privacy": "UNLISTED" } } EOF ) # Extract the value of the "x-goog-upload-url" header from the HTTP response. UPLOAD_URL=$(echo "${RESPONSE}" \ | grep -i '^x-goog-upload-url' \ | awk '{print $2}' \ | tr -d '\r') CHUNK_SIZE=$(echo "${RESPONSE}" \ | grep -i '^x-goog-upload-chunk-granularity' \ | awk '{print $2}' \ | tr -d '\r')
আপনি REST ব্যবহার করলে, নিম্নলিখিত বিভাগ থেকে জানতে পারবেন যে কীভাবে ভিডিও আপলোড ম্যানেজ করতে হয়।
২. ভিডিও আপলোড করুন
REST-এর মাধ্যমে আপলোড করার সময়, CreateYouTubeVideoUpload দুটি ধাপের
রিজিউমেবল আপলোড প্রোটোকল ব্যবহার করে:
- আপলোড সেশন শুরু করুন:
x-goog-upload-command: startসহ (এবং ঐচ্ছিকভাবেx-goog-upload-header-content-lengthফাইলের সাইজ ঘোষণা করতে) একটি প্রাথমিকPOSTঅনুরোধCreateYouTubeVideoUploadআপলোড এন্ডপয়েন্টে (/upload/v26/customers/{customer_id}/youTubeVideoUploads:create) পাঠান। প্রত্যাশিত চাঙ্ক সাইজের মতো মেটাডেটার সাথেx-goog-upload-urlHTTP রেসপন্স হেডারে আপলোড সেশন URL রেসপন্স ফিরিয়ে দেয়। - ভিডিও বাইট স্ট্রিম ও চূড়ান্ত করা: বাইনারি ভিডিও পেলোড
x-goog-upload-urlএন্ডপয়েন্টেx-goog-upload-command: upload, finalize-এর সাথে পাঠান। আপলোড সম্পূর্ণ হলে, উত্তরে তৈরি করাresource_name(customers/{customer_id}/youTubeVideoUploads/{video_upload_id}) ফেরত আসে।
ভিডিও আপলোড প্রোটোকলে ব্যবহৃত HTTP হেডারের সম্পূর্ণ বিবরণের জন্য, নিম্নলিখিত কোডের উদাহরণ দেখুন:
# Take the first ${CHUNK_SIZE} bytes of the video file and upload them. head -c ${CHUNK_SIZE} ${VIDEO_FILE_NAME} | curl -i -v -X PUT "${UPLOAD_URL}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Offset: 0" \ --header "X-Goog-Upload-Command: upload" \ --header "Content-Length: ${CHUNK_SIZE}" \ --data-binary @- # Query the status of the upload. QUERY_RESPONSE=$(curl -i -s -X POST "${UPLOAD_URL}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Command: query") # Extract the value of the "x-goog-upload-size-received" header from the HTTP # response. UPLOADED_BYTES=$(echo "${QUERY_RESPONSE}" \ | grep -i '^x-goog-upload-size-received' \ | awk '{print $2}' \ | tr -d '\r') echo "Uploaded ${UPLOADED_BYTES} bytes." REMAINING_BYTES=$((FILE_SIZE - UPLOADED_BYTES)) echo "${REMAINING_BYTES} bytes remaining to upload." FINALIZE_RESPONSE=$(tail -c ${REMAINING_BYTES} ${VIDEO_FILE_NAME} | curl -v -X PUT "${UPLOAD_URL}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Offset: ${UPLOADED_BYTES}" \ --header "X-Goog-Upload-Command: upload, finalize" \ --data-binary @-) UPLOADED_VIDEO_RESOURCE_NAME=$(echo $FINALIZE_RESPONSE | jq -r '.resourceName')
৩. ভিডিও আপলোডের স্ট্যাটাস ফিরিয়ে আনুন
ভিডিও আপলোড শুরু করার পরে, state = 'PROCESSED' (INPUT_ONLY ফিল্ড
GAQL-এ বেছে নেওয়া যাবে না) না হওয়া পর্যন্ত GAQL-এর মাধ্যমে you_tube_video_upload রিসোর্সের
বেছে নেওয়ার যোগ্য ফিল্ড (resource_name, video_upload_id, channel_id, video_id, state এবং
video_privacy) কোয়েরি করে এর প্রসেসিং স্ট্যাটাস পোল করুন:
Java
// Retrieve the metadata of the newly uploaded video. String query = String.format( "SELECT " + "you_tube_video_upload.resource_name, " + "you_tube_video_upload.video_id, " + "you_tube_video_upload.state " + "FROM you_tube_video_upload " + "WHERE you_tube_video_upload.resource_name = '%s'", videoUploadResourceName); try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) { SearchGoogleAdsStreamRequest request = SearchGoogleAdsStreamRequest.newBuilder() .setCustomerId(Long.toString(customerId)) .setQuery(query) .build(); ServerStream<SearchGoogleAdsStreamResponse> stream = googleAdsServiceClient.searchStreamCallable().call(request); for (SearchGoogleAdsStreamResponse response : stream) { for (GoogleAdsRow googleAdsRow : response.getResultsList()) { YouTubeVideoUpload video = googleAdsRow.getYouTubeVideoUpload(); System.out.printf( "Video with ID %s was found in state %s.%n", video.getVideoId(), video.getState()); } } }
C#
// Retrieve the metadata of the newly uploaded video. string query = $@" SELECT you_tube_video_upload.resource_name, you_tube_video_upload.video_id, you_tube_video_upload.state FROM you_tube_video_upload WHERE you_tube_video_upload.resource_name = '{videoUploadResourceName}'"; GoogleAdsServiceClient gaService = client.GetService( Services.V26.GoogleAdsService); gaService.SearchStream(customerId.ToString(), query, delegate (SearchGoogleAdsStreamResponse resp) { foreach (GoogleAdsRow row in resp.Results) { Console.WriteLine( $"Video with ID {row.YouTubeVideoUpload.VideoId} was found in " + $"state {row.YouTubeVideoUpload.State}."); } } );
PHP
// Retrieve the metadata of the newly uploaded video. $query = sprintf( "SELECT you_tube_video_upload.resource_name, " . "you_tube_video_upload.video_id, " . "you_tube_video_upload.state " . "FROM you_tube_video_upload " . "WHERE you_tube_video_upload.resource_name = '%s'", $videoUploadResourceName ); $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $stream = $googleAdsServiceClient->searchStream( SearchGoogleAdsStreamRequest::build($customerId, $query) ); foreach ($stream->iterateAllElements() as $googleAdsRow) { /** @var GoogleAdsRow $googleAdsRow */ printf( "Video with ID '%s' was found in state '%s'.%s", $googleAdsRow->getYouTubeVideoUpload()->getVideoId(), YouTubeVideoUploadState::name($googleAdsRow->getYouTubeVideoUpload()->getState()), PHP_EOL ); }
Python
# Retrieve the metadata of the newly uploaded video. query: str = f""" SELECT you_tube_video_upload.resource_name, you_tube_video_upload.video_id, you_tube_video_upload.state FROM you_tube_video_upload WHERE you_tube_video_upload.resource_name = '{video_upload_resource_name}'""" ga_service: GoogleAdsServiceClient = client.get_service("GoogleAdsService") stream: Iterator[SearchGoogleAdsStreamResponse] = ga_service.search_stream( customer_id=customer_id, query=query ) for row in itertools.chain.from_iterable(batch.results for batch in stream): video = row.you_tube_video_upload print( f"Video with ID {row.you_tube_video_upload.video_id} was found in state {row.you_tube_video_upload.state}." )
Ruby
# Retrieve the metadata of the newly uploaded video. query = <<~EOQ SELECT you_tube_video_upload.resource_name, you_tube_video_upload.video_id, you_tube_video_upload.state FROM you_tube_video_upload WHERE you_tube_video_upload.resource_name = '#{video_upload_resource_name}' EOQ responses = client.service.google_ads.search_stream( customer_id: customer_id, query: query, ) responses.each do |batch| batch.results.each do |row| puts "Video with ID #{row.you_tube_video_upload.video_id} was found in " \ "state #{row.you_tube_video_upload.state}." end end
Perl
This example is not yet available in Perl; you can take a look at the other languages.
কার্ল
curl -i -v -X POST \ "https://qa-prod-googleads.sandbox.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --header "Content-Type: application/json" \ --header "Developer-Token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "query": "SELECT you_tube_video_upload.resource_name, you_tube_video_upload.video_id, you_tube_video_upload.state FROM you_tube_video_upload WHERE you_tube_video_upload.resource_name = '$UPLOADED_VIDEO_RESOURCE_NAME'" } EOF
আপলোড ম্যানেজ করা
ভিডিও আপলোড করা হয়ে গেলে, আপনি এটি ভিডিও অ্যাসেট হিসেবে ব্যবহার করতে পারবেন।
আপলোড করা ভিডিও ব্যবহার করুন
ভিডিওটি PROCESSED স্টেজে পৌঁছানোর পরে, আপনি YouTubeVideoUpload রিসোর্সের video_id ফিল্ডে এটির ১১-ক্যারেক্টারের
YouTube ভিডিও আইডি দেখতে পাবেন।
MutateAssets-এর সাথে YoutubeVideoAsset তৈরি করতে এই video_id ব্যবহার করুন এবং
আপনার ক্যাম্পেন বা বিজ্ঞাপনে অ্যাসেট রিসোর্সের নাম (customers/{customer_id}/assets/{asset_id}) লিঙ্ক করুন:
AssetService.MutateAssets-এyoutube_video_idপাস করেYoutubeVideoAssetতৈরি করুন:POST https://googleads.googleapis.com/v26/customers/{customer_id}/assets:mutate { "operations": [ { "create": { "name": "Product Launch Video", "youtubeVideoAsset": { "youtubeVideoId": "dQw4w9WgXcQ" } } } ] }Asset-কেAssetGroupবাAdGroupAd-এর সাথে লিঙ্ক করুন:পারফর্ম্যান্স ম্যাক্স:
AssetGroupAssetব্যবহার করেAssetGroupAssetService.MutateAssetGroupAssetsfield_typeYOUTUBE_VIDEOহিসেবে সেট করে:POST https://googleads.googleapis.com/v26/customers/{customer_id}/assetGroupAssets:mutate { "operations": [ { "create": { "assetGroup": "customers/{customer_id}/assetGroups/{asset_group_id}", "asset": "customers/{customer_id}/assets/{asset_id}", "fieldType": "YOUTUBE_VIDEO" } } ] }Demand Gen:
AdGroupAdService.MutateAdGroupAdsকল করার সময়DemandGenVideoResponsiveAdInfoঅবজেক্টেরvideosতালিকার মধ্যেcustomers/{customer_id}/assets/{asset_id}রেফারেন্স:POST https://googleads.googleapis.com/v26/customers/{customer_id}/adGroupAds:mutate { "operations": [ { "create": { "adGroup": "customers/{customer_id}/adGroups/{ad_group_id}", "status": "PAUSED", "ad": { "name": "Demand Gen Video Ad", "finalUrls": ["https://www.example.com"], "demandGenVideoResponsiveAd": { "videos": [ { "asset": "customers/{customer_id}/assets/{asset_id}" } ], "logoImages": [ { "asset": "customers/{customer_id}/assets/{logo_asset_id}" } ], "headlines": [ { "text": "Example Headline" } ], "longHeadlines": [ { "text": "Example Long Headline" } ], "descriptions": [ { "text": "Example Description" } ], "businessName": { "text": "Example Business" } } } } } ] }
আগে থেকে থাকা
YOUTUBE_VIDEOঅ্যাসেট কোয়েরি করতেGoogleAdsService.SearchStreamব্যবহার করুন:SELECT asset.id, asset.resource_name, asset.name, asset.type, asset.youtube_video_asset.youtube_video_id, asset.youtube_video_asset.youtube_video_title FROM asset WHERE asset.type = 'YOUTUBE_VIDEO' AND asset.youtube_video_asset.youtube_video_id = '{video_id}'
মেটাডেটা আপডেট করুন
আপনি "video_privacy"-এ সেট করা update_mask-এর সাথে UpdateYouTubeVideoUpload পদ্ধতি ব্যবহার করে
এই API-এর মাধ্যমে আপলোড করা ভিডিওর গোপনীয়তা সেটিংস আপডেট করতে পারবেন। তৈরি করার পরে শুধুমাত্র video_privacy ফিল্ড (PUBLIC বা
UNLISTED, বিজ্ঞাপনদাতার মালিকানাধীন ব্র্যান্ড চ্যানেলে আপলোড করা ভিডিওর জন্য) আপডেট করা যাবে;
video_title, video_description, channel_id এবং
video_content_metadata অপরিবর্তনীয়।
আপলোড সরিয়ে দিন
Google Ads API-এর মাধ্যমে আপলোড করা ভিডিও মুছে দিতে চাইলে, সেগুলির
customers/{customer_id}/youTubeVideoUploads/{video_upload_id} রিসোর্স নাম
resource_names ফিল্ডে
RemoveYouTubeVideoUpload মেথডে পাস করুন। এটি Google Ads অ্যাসেট লাইব্রেরি এবং YouTube, উভয় জায়গা থেকেই
ভিডিওটি সরিয়ে দেয়।