Cross-Provider Workflow

Notion Content Calendar to YouTube Publish and Slack

Version 1.0.0

Query a Notion content calendar, publish the next item to YouTube, then announce in Slack.

1 workflow 3 source APIs 3 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

notion youtube slack

Workflows

calendar-to-youtube-publish
Query Notion calendar, publish to YouTube, announce in Slack.
Queries a Notion content-calendar database for scheduled items, inserts a YouTube video for the next item, then posts a Slack announcement linking the published video.
3 steps inputs: description, notionDatabaseId, slackChannel, title outputs: messageTs, nextItemId, videoId
1
query-calendar
$sourceDescriptions.notionApi.queryDatabase
Query the Notion content-calendar database for scheduled items.
2
publish-video
$sourceDescriptions.youtubeDataApi.youtube.videos.insert
Insert the calendar item as a new YouTube video.
3
announce-slack
$sourceDescriptions.slackChatApi.postChatPostmessage
Announce the calendar publish in Slack.

Source API Descriptions

Arazzo Workflow Specification

soc-notion-content-calendar-to-youtube-publish-slack-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Notion Content Calendar to YouTube Publish and Slack
  summary: Query a Notion content calendar, publish the next item to YouTube, then announce in Slack.
  description: >-
    A content calendar workflow that queries a Notion database for the next
    scheduled item, creates the corresponding video resource on YouTube, and
    announces the publish to a Slack channel. Demonstrates driving a video
    platform publish from an editorial calendar and broadcasting it to a team in
    one Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: notionApi
    url: https://raw.githubusercontent.com/api-evangelist/notion/refs/heads/main/openapi/notion-openapi.yml
    type: openapi
  - name: youtubeDataApi
    url: https://raw.githubusercontent.com/api-evangelist/youtube/refs/heads/main/openapi/youtube-data-api-openapi.yml
    type: openapi
  - name: slackChatApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-chat-openapi.yml
    type: openapi
workflows:
  - workflowId: calendar-to-youtube-publish
    summary: Query Notion calendar, publish to YouTube, announce in Slack.
    description: >-
      Queries a Notion content-calendar database for scheduled items, inserts a
      YouTube video for the next item, then posts a Slack announcement linking the
      published video.
    inputs:
      type: object
      properties:
        notionDatabaseId:
          type: string
        title:
          type: string
        description:
          type: string
        slackChannel:
          type: string
    steps:
      - stepId: query-calendar
        description: Query the Notion content-calendar database for scheduled items.
        operationId: $sourceDescriptions.notionApi.queryDatabase
        requestBody:
          contentType: application/json
          payload:
            page_size: 1
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          nextItemId: $response.body#/results/0/id
      - stepId: publish-video
        description: Insert the calendar item as a new YouTube video.
        operationId: $sourceDescriptions.youtubeDataApi.youtube.videos.insert
        requestBody:
          contentType: application/json
          payload:
            snippet:
              title: $inputs.title
              description: $inputs.description
              categoryId: "22"
            status:
              privacyStatus: public
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          videoId: $response.body#/id
      - stepId: announce-slack
        description: Announce the calendar publish in Slack.
        operationId: $sourceDescriptions.slackChatApi.postChatPostmessage
        requestBody:
          contentType: application/x-www-form-urlencoded
          payload:
            channel: $inputs.slackChannel
            text: Calendar item $steps.query-calendar.outputs.nextItemId published https://youtu.be/$steps.publish-video.outputs.videoId
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          messageTs: $response.body#/ts
    outputs:
      nextItemId: $steps.query-calendar.outputs.nextItemId
      videoId: $steps.publish-video.outputs.videoId
      messageTs: $steps.announce-slack.outputs.messageTs