{
  "commands": [
    {
      "command": "run_script",
      "params": {
        "script": "export default async function(page, context, state, helpers) {\n  try {\n    await helpers.handleConsent();\n    await helpers.resolveFinalUrl();\n    \n    // Ensure the main list is loaded\n    const isLoaded = await helpers.waitForElement('tr.athing', 10000);\n    if (!isLoaded) return { success: false, error: 'SELECTOR_ERROR: Content not loaded' };\n    \n    await helpers.waitForNetworkIdle();\n    \n    // Extract the datasets in parallel contexts\n    const itemsData = await helpers.extractData('news_items', { saveToApi: false });\n    const metadataData = await helpers.extractData('metadata', { saveToApi: false });\n\n    if (!itemsData || itemsData.length === 0) {\n      return { success: false, error: 'SELECTOR_ERROR: No items extracted' };\n    }\n\n    // Save the data to the respective datasets\n    await helpers.saveData('news_items', itemsData);\n    await helpers.saveData('metadata', metadataData);\n    \n    return { success: true, items: itemsData.length };\n  } catch (e) {\n    console.error(e);\n    return { success: false, error: e.message };\n  }\n}"
      }
    }
  ],
  "datasets": {
    "metadata": {
      "item_selector": "tr.athing + tr",
      "properties": [
        {
          "name": "score",
          "selector": "span.score",
          "type": "text"
        },
        {
          "name": "user",
          "selector": "a.hnuser",
          "type": "text"
        },
        {
          "name": "age",
          "selector": "span.age",
          "type": "text"
        }
      ]
    },
    "news_items": {
      "item_selector": "tr.athing",
      "properties": [
        {
          "name": "rank",
          "selector": "span.rank",
          "type": "text"
        },
        {
          "name": "title",
          "selector": "span.titleline > a",
          "type": "text"
        },
        {
          "attribute": "href",
          "name": "url",
          "selector": "span.titleline > a",
          "type": "attribute"
        },
        {
          "name": "source",
          "selector": "span.sitestr",
          "type": "text"
        }
      ]
    }
  },
  "name": "HN_Newest_Scraper",
  "settings": {
    "headless": true,
    "urls": [
      "https://news.ycombinator.com/newest"
    ]
  }
}