I thought the Notion API might be a fun thing to play with via Script Kit. I have a singular "tasks" database that I use to capture all manner of things, so I always want to insert pages into it in order to process them later. These scripts will require you to update the databaseID value in the code itself. I could see an expansion of this script to allow for the selection of a specific Notion database from a list.
The second script below takes a second input in order to insert content into the new page -- I was wondering if there is a way to allow multiline text input via Script Kit, which would make that script more robust.
You can get a Notion API token here and find quick-start instructions here, as well as the API reference here.
For a quick overview of the data model, check out Chris Biscardi's video here. For a more in-depth overview, check out this Notion blog post.
Install notion-add-task
let notionToken = await env('NOTION_USER_TOKEN')
let databaseID = "3859b567fda3464ea5a69d5ccb56274b"
let content = await arg('Enter Task')
let {data} = await post(
  'https://api.notion.com/v1/pages', {
  "parent": { "database_id": databaseID },
  "properties": {
    "Name": {
      "title": [
        {
          "text": {
            "content": content
          }
        }
      ]
    }
  }
},
{
  headers: {
    Authorization: `Bearer ${notionToken}`,
  }
})
let pageID = data.id.replace(/-/g, "");
let pageURL = `https://notion.so/${databaseID}?p=${pageID}`
copy(pageURL)
Install notion-add-task-with-content
let notionToken = await env('NOTION_USER_TOKEN')
let databaseID = "3859b567fda3464ea5a69d5ccb56274b"
let content = await arg('Enter Task')
let {data} = await post(
  'https://api.notion.com/v1/pages', {
  "parent": { "database_id": databaseID },
  "properties": {
    "Name": {
      "title": [
        {
          "text": {
            "content": content
          }
        }
      ]
    }
  }
},
{
  headers: {
    Authorization: `Bearer ${notionToken}`,
    "Content-Type": "application/json",
    "Notion-Version": "2021-05-13"
  }
})
let bodyContent = await arg('Enter Content')
let {bodyData} = await patch(
  `https://api.notion.com/v1/blocks/${data.id}/children`, {
  "children": [
    {
      "object": "block",
      "type": "paragraph",
      "paragraph": {
        "text": [
          {
            "type": "text",
            "text": {
              "content": bodyContent
            }
          }
        ]
      }
    }
  ]
},
{
  headers: {
    Authorization: `Bearer ${notionToken}`,
    "Content-Type": "application/json",
    "Notion-Version": "2021-05-13"
  }
})
let pageID = data.id.replace(/-/g, "");
let pageURL = `https://notion.so/${databaseID}?p=${pageID}`
copy(pageURL)
(I just noticed that I haven't updated the first script to pass the "Notion-Version" header, but it seems unnecessary for now.)