फ़ीड के स्ट्रक्चर की खास जानकारी

मीडिया ऐक्शन फ़ीड, एक JSON ऑब्जेक्ट है. इसमें इकाइयों का कलेक्शन होता है. इकाई, schema.org ऑब्जेक्ट होती है. यह आपके कैटलॉग में मौजूद किसी आइटम के बारे में बताती है. जैसे, टीवी एपिसोड, टीवी सीरीज़, फ़िल्म, गाना, एल्बम वगैरह.

पहली इमेज. देखने की कार्रवाइयों और सुनने की कार्रवाइयों के फ़ीड स्ट्रक्चर.

फ़ीड का स्ट्रक्चर

'वीडियो देखने की कार्रवाइयां' और 'गाने सुनने की कार्रवाइयां' के फ़ीड के स्ट्रक्चर अलग-अलग होते हैं.

'वीडियो देखने की कार्रवाइयां' की हैरारकी इस तरह है:
सुनने की कार्रवाइयों की हैरारकी इस तरह है:

डेटा फ़ीड का लिफाफा

डेटा फ़ीड का लिफाफा, मीडिया ऐक्शन फ़ीड में टॉप लेवल का ऑब्जेक्ट होता है. इस ऑब्जेक्ट में कॉन्टेंट मार्कअप ऑब्जेक्ट (इकाइयां) का एक कलेक्शन होता है, जो आपके कैटलॉग के सभी कॉन्टेंट को दिखाता है.

डेटा फ़ीड के इनवॉइस में ये प्रॉपर्टी काम करती हैं:

प्रॉपर्टी टाइप ब्यौरा
@context यूआरएल ज़रूरी है - http://schema.org पर सेट करें
@type टेक्स्ट ज़रूरी है - इसे DataFeed पर सेट करें.
dateModified DateTime ज़रूरी है - ISO 8601 फ़ॉर्मैट में, फ़ीड में आखिरी बार बदलाव करने की तारीख और समय. इसमें टाइमज़ोन भी शामिल है.
dataFeedElement चीज़ ज़रूरी है - आपके मीडिया कैटलॉग की इकाइयां.

डेटा फ़ीड का टेंप्लेट

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    { <CONTENT MARKUP OBJECT 01> },
    { <CONTENT MARKUP OBJECT 02> },
    { <CONTENT MARKUP OBJECT 03> },
    ...
  ]
}

कॉन्टेंट मार्कअप

कॉन्टेंट मार्कअप ऑब्जेक्ट, आपके कैटलॉग में मौजूद किसी एक इकाई को दिखाता है: फ़िल्म, टीवी एपिसोड, टीवी सीरीज़, गाना, एल्बम, रेडियो स्टेशन वगैरह. इस ऑब्जेक्ट में कॉन्टेंट का आइडेंटिफ़ायर और कैननिकल यूआरएल होता है. साथ ही, metadata की मदद से कॉन्टेंट के बारे में बताने में मदद मिलती है.

कॉन्टेंट मार्कअप टेंप्लेट

कॉन्टेंट मार्कअप ऑब्जेक्ट में ऐक्शन मार्कअप ऑब्जेक्ट का कलेक्शन हो सकता है. इससे कॉन्टेंट को कई ऐक्शन मार्कअप ऑब्जेक्ट से जोड़ा जा सकता है. उदाहरण के लिए, कॉन्टेंट में हर इलाके के लिए अलग-अलग ऐक्शन मार्कअप ऑब्जेक्ट हो सकता है.

{
   "@context": ["http://schema.org", {"@language": "en"}],
   "@type": "Movie",
   "@id": "http://www.example.com/my_favorite_movie",
   "url": "http://www.example.com/my_favorite_movie",
   "name": "My Favorite Movie",
   "potentialAction": [
     { <ACTION MARKUP OBJECT 01> },
     { <ACTION MARKUP OBJECT 02> }
   ],
   ...
}

ऐक्शन मार्कअप

ऐक्शन मार्कअप ऑब्जेक्ट, डीप लिंक के बारे में बताता है. यह लिंक, उपयोगकर्ताओं को कॉन्टेंट पर ले जाता है. साथ ही, इससे कॉन्टेंट के लिए ज़रूरी ऐक्सेस लेवल के बारे में भी पता चलता है. यह ऑब्जेक्ट, कॉन्टेंट मार्कअप ऑब्जेक्ट की प्रॉपर्टी (potentialAction) है.

ऐक्सेस की पाबंदियां तय करने के दो तरीके हैं:

ऐक्शन मार्कअप टेंप्लेट

अगर कॉन्टेंट में एक से ज़्यादा डीप लिंक हैं, तो ऐक्शन मार्कअप ऑब्जेक्ट में एक से ज़्यादा टारगेट ऑब्जेक्ट शामिल होते हैं. उदाहरण के लिए, iOS के लिए कॉन्टेंट का डीप लिंक, Android के डीप लिंक से अलग हो सकता है. साथ ही, अगर इलाकों और समयावधि के आधार पर ऐक्सेस से जुड़ी अलग-अलग पाबंदियां हैं, तो ऐक्शन मार्कअप ऑब्जेक्ट में कई ऐक्शन ऐक्सेस स्पेसिफ़िकेशन ऑब्जेक्ट या ऑफ़र ऑब्जेक्ट हो सकते हैं. इन ऑब्जेक्ट के बारे में नीचे दिए गए टेंप्लेट में बताया गया है.

Watch Actions के लिए ऐक्शन मार्कअप ऑब्जेक्ट टेंप्लेट:

"potentialAction": {
  "@type": "WatchAction",
  "target": [
    { <TARGET OBJECT 01> },
    { <TARGET OBJECT 02> }
  ],
  "actionAccessibilityRequirement": [
    { <ACTION ACCESSIBILITY OBJECT 01> },
    { <ACTION ACCESSIBILITY OBJECT 02> }
  ]
}

सुनने की कार्रवाइयों के लिए, ऐक्शन मार्कअप ऑब्जेक्ट टेंप्लेट:

"potentialAction": {
  "@type": "ListenAction",
  "target": [
    { <TARGET OBJECT 01> },
    { <TARGET OBJECT 02> }
  ],
  "expectsAcceptanceOf": [
    { <OFFER OBJECT 01> },
    { <OFFER OBJECT 02> }
  ]
}

टारगेट

टारगेट ऑब्जेक्ट, अलग-अलग Google प्लैटफ़ॉर्म पर डीप लिंक की मैपिंग करता है. यह ऑब्जेक्ट, ऐक्शन मार्कअप ऑब्जेक्ट की प्रॉपर्टी (target) है.

टारगेट का उदाहरण

अगर कॉन्टेंट में प्लैटफ़ॉर्म के आधार पर कई डीप लिंक हैं, तो अलग-अलग मैपिंग देने के लिए कई टारगेट ऑब्जेक्ट बनाएं. उदाहरण के लिए, Chromecast के लिए कॉन्टेंट का डीप लिंक, दूसरे प्लैटफ़ॉर्म के डीप लिंक से अलग हो सकता है. इसकी जानकारी नीचे दिए गए उदाहरण में दी गई है.

टारगेट ऑब्जेक्ट का उदाहरण (सामान्य):

"target": {
  "@type": "EntryPoint",
  "urlTemplate": "http://www.example.com/my_favorite_movie?autoplay=true",
  "actionPlatform": [
    "http://schema.org/DesktopWebPlatform",
    "http://schema.org/MobileWebPlatform",
    "http://schema.org/AndroidPlatform",
    "http://schema.org/AndroidTVPlatform",
    "http://schema.org/IOSPlatform",
    "http://schema.googleapis.com/GoogleVideoCast"
  ]
}

दो डीप लिंक वाले टारगेट ऑब्जेक्ट का उदाहरण:

"target": [
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/my_favorite_movie?autoplay=true",
    "actionPlatform": [
      "http://schema.org/DesktopWebPlatform",
      "http://schema.org/MobileWebPlatform",
      "http://schema.org/AndroidPlatform",
      "http://schema.org/AndroidTVPlatform",
      "http://schema.org/IOSPlatform"
    ]
  },
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/cast/my_favorite_movie?autoplay=true",
    "actionPlatform": [
      "http://schema.googleapis.com/GoogleVideoCast"
    ]
  }
]

कार्रवाई के ऐक्सेस की जानकारी

ऐक्शन ऐक्सेस स्पेसिफ़िकेशन ऑब्जेक्ट, इलाके और समयावधि के आधार पर कॉन्टेंट के ऐक्सेस की ज़रूरी शर्तों के बारे में बताता है. यह ऑब्जेक्ट, ऐक्शन मार्कअप ऑब्जेक्ट की प्रॉपर्टी, actionAccessibilityRequirement है.

ऑब्जेक्ट का category इनमें से कोई भी हो सकता है:

  • nologinrequired
  • free
  • subscription

    सदस्यता की जानकारी देने के लिए, एक मीडिया सदस्यता ऑब्जेक्ट बनाएं. अगर सदस्यों को कॉन्टेंट का इस्तेमाल करने के लिए, कोई और खरीदारी करनी पड़ती है, तो कीमत बताने के लिए ऑफ़र ऑब्जेक्ट का इस्तेमाल करें.

  • externalsubscription

    सदस्यता की जानकारी देने के लिए, एक मीडिया सदस्यता ऑब्जेक्ट बनाएं. अगर सदस्यों को कॉन्टेंट का इस्तेमाल करने के लिए, कोई और खरीदारी करनी पड़ती है, तो कीमत बताने के लिए ऑफ़र ऑब्जेक्ट का इस्तेमाल करें.

  • rental

    कीमत बताने के लिए, offer ऑब्जेक्ट का इस्तेमाल करें.

  • purchase

    कीमत बताने के लिए, offer ऑब्जेक्ट का इस्तेमाल करें.

मीडिया की सदस्यता

मीडिया सदस्यता ऑब्जेक्ट, कॉन्टेंट के लिए ज़रूरी सदस्यता की जानकारी देता है. यह ऑब्जेक्ट, ऐक्शन ऐक्सेस स्पेसिफ़िकेशन ऑब्जेक्ट की प्रॉपर्टी requiresSubscription है. अगर actionAccessibilityRequirement.category की वैल्यू subscription या externalSubscription है और सदस्यता के ऑफ़र में कई पैकेज या टीयर शामिल हैं या इसमें ऐड-ऑन की सुविधा है, तो यह जानकारी देना ज़रूरी है. अगर आपकी सदस्यता एक-टीयर की है और इसमें आपके कैटलॉग के सभी कॉन्टेंट का ऐक्सेस मिलता है, तो इसे शामिल न करें.

मीडिया की सदस्यता का उदाहरण

मीडिया सदस्यता ऑब्जेक्ट का उदाहरण:

"requiresSubscription": {
  "@type": "MediaSubscription",
  "@id": "http://www.example.com/premium_subscription",
  "name": "Example Premium",
  "sameAs": "http://www.example.com/premium_subscription"
}

ऑफ़र

ऑफ़र ऑब्जेक्ट से, कॉन्टेंट की कीमत के बारे में पता चलता है. यह ऑब्जेक्ट, इन ऑब्जेक्ट की प्रॉपर्टी (expectsAcceptanceOf) है:

ऑफ़र का उदाहरण

ऐक्शन ऐक्सेस स्पेसिफ़िकेशन ऑब्जेक्ट में, वॉच ऐक्शन expectsAcceptanceOf प्रॉपर्टी की जानकारी देते हैं:

"potentialAction":{
  "@type":"WatchAction",
  "target":{
    "@type":"EntryPoint",
    "urlTemplate":"http://www.example.com/my_favorite_movie?autoplay=true",
    "actionPlatform":[ "http://schema.org/DesktopWebPlatform" ]
  },
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "purchase",
    "availabilityStarts": "2019-01-01T00:00Z",
    "availabilityEnds": "2019-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    },
    "expectsAcceptanceOf": {
      "@type": "Offer",
      "price": 7.99,
      "priceCurrency": "USD",
      "seller": {
        "@type": "Organization",
        "name": "My example seller"
      }
    }
  }
}

सुनने की कार्रवाइयां, expectsAcceptanceOf प्रॉपर्टी की जानकारी सीधे कार्रवाई मार्कअप ऑब्जेक्ट में देती हैं:

"potentialAction":{
  "@type":"ListenAction",
  "target":{
    "@type":"EntryPoint",
    "urlTemplate":"http://www.example.com/playlist/top_pop_songs?autoplay=true",
    "actionPlatform":[ "http://schema.org/DesktopWebPlatform" ]
  },
  "expectsAcceptanceOf":{
    "@type": "Offer",
    "eligibleRegion": {
      "@type":"Country",
      "name":"US"
    },
    "category": "subscription",
    "name": "Example Music",
    "price": 9.99,
    "priceCurrency": "USD",
    "seller": {
      "@type": "Organization",
      "name": "My example seller",
      "sameAs": "http://www.example.com"
    }
  }
}

इमेज

इमेज ऑब्जेक्ट, कॉन्टेंट से जुड़ी इमेज के बारे में बताता है.

इमेज के लिए ये ज़रूरी शर्तें हैं:

  • स्मार्टवॉच पर होने वाली कार्रवाइयों के लिए, ज़्यादा रिज़ॉल्यूशन वाली इमेज (कम से कम 140x210 पिक्सल) उपलब्ध कराएं. साथ ही, यह भी ज़रूरी है कि इमेज का आसपेक्ट रेशियो 2:3 हो.
    • इमेज .jpg या .png फ़ॉर्मैट में होनी चाहिए.
  • सुनने की कार्रवाइयों के लिए, 1x1 आसपेक्ट रेशियो वाली हाई रिज़ॉल्यूशन वाली इमेज (कम से कम 300x300 पिक्सल) उपलब्ध कराएं.
    • हमारा सुझाव है कि आप 600x600 पिक्सल या इससे ज़्यादा पिक्सल का साइज़ इस्तेमाल करें.
    • इमेज, .jpg, .png या .gif फ़ॉर्मैट में होनी चाहिए.
  • इमेज का यूआरएल ऐसा होना चाहिए जिसे क्रॉल और इंडेक्स किया जा सके.
  • आपके पास इमेज का इस्तेमाल करने और उसे Google के डिवाइसों और प्रॉपर्टी पर दिखाने की अनुमति होनी चाहिए.
  • इमेज में ये चीज़ें नहीं होनी चाहिए:
    • धुंधली, पिक्सलेट वाली, घुमाई गई या खराब क्वालिटी वाली इमेज.
    • बिना लाइसेंस वाली या स्टॉक फ़ोटोग्राफ़ी.
    • नग्नता.
    • गैर-कानूनी कॉन्टेंट.
  • MusicPlaylist को अपडेट करते समय, नया कॉन्टेंट दिखाने के लिए उसकी इमेज अपडेट करें.

इमेज का उदाहरण

"image": {
  "@type": "ImageObject",
  "contentUrl" : "http://www.example.com/artist/my_favorite_artist/1x1/photo1.jpg",
  "dateModified" : "2019-01-05T22:11:33+00:00",
  "regionsAllowed" : ["US","UK","MX"]
}

फ़ीड के उदाहरण

नीचे दिए गए उदाहरणों में, वीडियो देखने और ऑडियो सुनने के ऐक्शन के फ़ीड स्ट्रक्चर में अंतर दिखाया गया है.

Watch Action का उदाहरण

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/my_favorite_movie",
      "url": "http://www.example.com/my_favorite_movie",
      "name": "My Favorite Movie",
      "potentialAction": {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/my_favorite_movie?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/AndroidTVPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
         "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-07-21T10:35:29Z",
           "availabilityEnds": "2019-10-21T10:35:29Z",
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ],
        }
      },
      "sameAs": "https://en.wikipedia.org/wiki/my_favorite_movie",
      "releasedEvent": {
        "@type": "PublicationEvent",
        "startDate": "2008-01-20",
        "location": {
          "@type": "Country",
          "name": "US"
        }
      },
      "description": "This is my favorite movie.",
      "actor": [
        {
          "@type": "Person",
          "name": "John Doe",
          "sameAs": "https://en.wikipedia.org/wiki/John_Doe"
        },
        {
          "@type": "Person",
          "name": "Jane Doe",
          "sameAs": "https://en.wikipedia.org/wiki/Jane_Doe"
        }
      ],
      "identifier": [
        {
          "@type": "PropertyValue",
          "propertyID": "IMDB_ID",
          "value":  "tt0123456"
        }
      ]
    }
  ]
}

Listen Actions का उदाहरण

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    {
      "@context":"http://schema.googleapis.com/",
      "@type":"MusicGroup",
      "@id":"http://www.example.com/artist/my_favorite_artist/",
      "url":"http://www.example.com/artist/my_favorite_artist/",
      "name":"My Favorite Artist",
      "sameAs":"https://en.wikipedia.org/wiki/my_favorite_artist",
      "description":"This is my favorite pop music artist.",
      "potentialAction": {
        "@type":"ListenAction",
        "target": {
          "@type":"EntryPoint",
          "urlTemplate":"http://www.example.com/artist/my_favorite_artist?autoplay=true",
          "actionPlatform":[
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/AndroidTVPlatform",
            "http://schema.googleapis.com/GoogleAudioCast",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
        "expectsAcceptanceOf":{
          "@type":"Offer",
          "category":"subscription",
          "eligibleRegion": {
            "@type":"Country",
            "name":"US"
          },
          "price": 8.99,
          "priceCurrency": "USD"
        }
      },
      "subjectOf": {
        "@type":"MusicPlaylist",
        "@id":"http://www.example.com/artist_mix/my_favorite_artist/",
        "url":"http://www.example.com/artist_mix/my_favorite_artist/",
        "name":"My Favorite Artist Mix",
        "description":"A mix of music similar to My Favorite Artist",
        "potentialAction":{
          "@type":"ListenAction",
          "target": {
            "@type":"EntryPoint",
            "urlTemplate":"http://www.example.com/artist_mix/my_favorite_artist?autoplay=true",
            "actionPlatform":[
              "http://schema.org/DesktopWebPlatform",
              "http://schema.org/IOSPlatform",
              "http://schema.org/AndroidPlatform",
              "http://schema.org/AndroidTVPlatform",
              "http://schema.googleapis.com/GoogleAudioCast",
              "http://schema.googleapis.com/GoogleVideoCast"
            ]
          },
          "expectsAcceptanceOf":{
            "@type":"Offer",
            "category":"free",
            "eligibleRegion": {
              "@type":"Country",
              "name":"US"
            }
          }
        }
      }
    }
  ]
}