毎日の UPSC 時事分析

上級

これは自動化ワークフローで、20個のノードを含みます。主にCode, Html, HttpRequest, GoogleSheets, ManualTriggerなどのノードを使用。 The Hinduから自動のにUPSCのトレンド要約をGoogle Sheetsに抽出(Gemini AI使用)

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
  • Google Sheets API認証情報
  • Google Gemini API Key

カテゴリー

-
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "name": "Daily UPSC Current Affairs Analysis from The Hindu to Google Sheets",
  "tags": [],
  "nodes": [
    {
      "name": "ワークフロー実行時",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -64,
        160
      ],
      "parameters": {},
      "typeVersion": 1,
      "id": "--0"
    },
    {
      "name": "HTTP Request: The Hindu フロントページ取得",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        272,
        16
      ],
      "parameters": {
        "url": "https://www.thehindu.com/latest-news/",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "id": "HTTP-Request-The-Hindu--1"
    },
    {
      "name": "AI Agent: UPSCニュースのフィルタリング・分析",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1616,
        16
      ],
      "parameters": {
        "text": "=Please analyze only those news article which is important for upsc exam (left others) (Only 5-6 most important article needed.) and provide the following information in a structured JSON format.\nOnly 5-6 most important article needed.\n\nArticle URL: {{ $('Code in JavaScript: Pair URL & Title').item.json.url }}\nArticle Content:\n{{ $json.articleText }}\n\nBased on the content, provide:\n1.  A brief summary (2-3 sentences).\n2.  What is important for the UPSC exam (1 sentence).\n3.  The main subject (e.g., Polity, Economy, International Relations, Science & Tech, Environment).\n\nUpload on the google sheet in following columns:\nDate;\tURL;\tSubject;\tBrief Summary;\tWhat is Important",
        "options": {
          "systemMessage": "You are an AI expert in Current Affairs analysis for the UPSC Civil Services Examination. Your task is to filter, analyze, and summarize news articles from The Hindu based *strictly* on their relevance to the official UPSC syllabus (GS Papers I, II, III, IV) and Current Affairs. For every article provided, you must first assess its importance. If it is not one of the *top 5-6 most important* articles, output a rejection statement and do not call the Append tool. If it is relevant, call the Append tool with the extracted and analyzed data.",
          "returnIntermediateSteps": true
        },
        "promptType": "define"
      },
      "typeVersion": 2.2,
      "id": "AI-Agent-UPSC--2"
    },
    {
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1600,
        160
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {},
      "typeVersion": 1,
      "id": "Google-Gemini-Chat-Model-3"
    },
    {
      "name": "HTML: 記事リンク・タイトル抽出",
      "type": "n8n-nodes-base.html",
      "position": [
        512,
        16
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "url",
              "attribute": "href",
              "cssSelector": "h3.title > a",
              "returnArray": true,
              "returnValue": "attribute"
            },
            {
              "key": "title",
              "cssSelector": "h3.title > a",
              "returnArray": true
            }
          ]
        }
      },
      "typeVersion": 1.2,
      "id": "HTML--4"
    },
    {
      "name": "HTTP Request1: 記事全文取得",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1104,
        16
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "id": "HTTP-Request1--5"
    },
    {
      "name": "HTML1: 記事本文抽出",
      "type": "n8n-nodes-base.html",
      "position": [
        1376,
        16
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "articleText",
              "cssSelector": "div[id^=\"content-body-\"]"
            }
          ]
        }
      },
      "typeVersion": 1.2,
      "id": "HTML1--6"
    },
    {
      "name": "シートに行を追加",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1920,
        16
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.intermediateSteps[0].action.toolInput.URL || $json.URL }}",
            "Date": "={{ $json.intermediateSteps[0].action.toolInput.Date || $json.Date }}",
            "Subject": "={{ $json.intermediateSteps[0].action.toolInput.Subject || $json.Subject }}",
            "Brief Summary": "={{ $json.intermediateSteps[0].action.toolInput.Brief_Summary || $json['Brief Summary'] }}",
            "What is Important": "={{ $json.intermediateSteps[0].action.toolInput.What_is_Important || $json['What is Important'] }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Subject",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Brief Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Brief Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "What is Important",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "What is Important",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "<GOOGLE_SHEET_GID_UPSC_NEWS>",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/<GOOGLE_SHEET_ID_UPSC_NEWS>/edit#gid=<GOOGLE_SHEET_GID_UPSC_NEWS>",
          "cachedResultName": "UPSC Hindu News"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "<GOOGLE_SHEET_ID_UPSC_NEWS>",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/<GOOGLE_SHEET_ID_UPSC_NEWS>/edit?usp=drivesdk",
          "cachedResultName": "Untitled spreadsheet"
        }
      },
      "credentials": {},
      "typeVersion": 4.7,
      "id": "--7"
    },
    {
      "name": "Google Sheets1に行を追加",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        1776,
        160
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
            "Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', ``, 'string') }}",
            "Subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
            "Brief Summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Brief_Summary', ``, 'string') }}",
            "What is Important": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('What_is_Important', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Subject",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Brief Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Brief Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "What is Important",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "What is Important",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "<GOOGLE_SHEET_GID_UPSC_NEWS>",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/<GOOGLE_SHEET_ID_UPSC_NEWS>/edit#gid=<GOOGLE_SHEET_GID_UPSC_NEWS>",
          "cachedResultName": "UPSC Hindu News"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "<GOOGLE_SHEET_ID_UPSC_NEWS>",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/<GOOGLE_SHEET_ID_UPSC_NEWS>/edit?usp=drivesdk",
          "cachedResultName": "Untitled spreadsheet"
        },
        "descriptionType": "manual",
        "toolDescription": "Append row in sheet in Google Sheets"
      },
      "credentials": {},
      "typeVersion": 4.7,
      "id": "Google-Sheets1--8"
    },
    {
      "name": "JavaScriptコード: URLとタイトルのペアリング",
      "type": "n8n-nodes-base.code",
      "position": [
        832,
        16
      ],
      "parameters": {
        "jsCode": "// Get the JSON output from the previous node, which is named \"HTML: Extract Article Links & Titles\"\nconst inputData = $('HTML: Extract Article Links & Titles').first().json;\n\n// Get the arrays from that data\nconst urls = inputData.url;\nconst titles = inputData.title;\n\nconst pairedItems = [];\n\n// Loop through the URLs and pair each one with its title\nfor (let i = 0; i < urls.length; i++) {\n  pairedItems.push({\n    json: {\n      url: urls[i],\n      title: titles[i]\n    }\n  });\n}\n\n// Return the new list of paired items\nreturn pairedItems;"
      },
      "typeVersion": 2,
      "id": "JavaScript-URL--9"
    },
    {
      "name": "スケジュールトリガー: 毎日午前7時",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -64,
        -16
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 7
            }
          ]
        }
      },
      "typeVersion": 1.2,
      "id": "-7--10"
    },
    {
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -704,
        -128
      ],
      "parameters": {
        "width": 480,
        "height": 816,
        "content": "Automated Daily UPSC Current Affairs Compilation\n\nThis workflow automates the process of creating daily current affairs notes for the Competitive Exams like UPSC.\n\nIt scrapes the latest news from The Hindu, uses an **AI Agent (powered by Google Gemini)** to filter only the **most relevant articles** (5-6 per run), generates a concise summary and UPSC-specific importance note, and automatically logs the analyzed data to a **Google Sheet**.\n\n## Who’s it for\n\n* **UPSC/CSE Aspirants** who want a curated, concise, and focused daily current affairs digest.\n* **Coaching Institutes** who need to automate the creation of daily study material.\n* **Educators** focused on Governance, Economy, and International Relations topics.\n\n## Requirements\n\n* **Google Gemini API Key:** For the Chat Model node.\n* **Google Sheets:** To store the final compiled current affairs digest.\n\n## How to set up\n\n1.  **Credentials:** Connect your **Google Gemini** and **Google Sheets** credentials.\n2.  **Google Sheet Setup:** Link the two Google Sheets nodes to your spreadsheet. Ensure your sheet has the column headers: `Date`, `URL`, `Subject`, `Brief Summary`, and `What is Important`.\n3.  **Scheduling:** Adjust the **Schedule Trigger** time (default is 7 AM) if needed."
      },
      "typeVersion": 1,
      "id": "--11"
    },
    {
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        -96
      ],
      "parameters": {
        "width": 288,
        "height": 416,
        "content": "Sets the time for the workflow to run every morning."
      },
      "typeVersion": 1,
      "id": "-1-12"
    },
    {
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        -96
      ],
      "parameters": {
        "width": 288,
        "height": 400,
        "content": "Sends a request to the latest news section of Newspaper Web."
      },
      "typeVersion": 1,
      "id": "-2-13"
    },
    {
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -96
      ],
      "parameters": {
        "width": 272,
        "height": 384,
        "content": "Parses the received HTML "
      },
      "typeVersion": 1,
      "id": "-3-14"
    },
    {
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        -96
      ],
      "parameters": {
        "width": 272,
        "height": 384,
        "content": "Creates a separate data item for every single news article for individual processing"
      },
      "typeVersion": 1,
      "id": "-4-15"
    },
    {
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1024,
        -96
      ],
      "parameters": {
        "width": 272,
        "height": 384,
        "content": "Retrieve its full text/HTML content."
      },
      "typeVersion": 1,
      "id": "-5-16"
    },
    {
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        -96
      ],
      "parameters": {
        "height": 384,
        "content": "Isolates and extracts the clean, primary article text"
      },
      "typeVersion": 1,
      "id": "-6-17"
    },
    {
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1568,
        -96
      ],
      "parameters": {
        "width": 304,
        "height": 384,
        "content": "Filter for UPSC relevance, summarize, categorize, and prepare the data for the sheet"
      },
      "typeVersion": 1,
      "id": "-7-18"
    },
    {
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        -96
      ],
      "parameters": {
        "width": 256,
        "height": 368,
        "content": "Ensuring the structured data is physically written to the Google Sheet."
      },
      "typeVersion": 1,
      "id": "-8-19"
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "Google-Gemini-Chat-Model-3": {
      "ai_languageModel": [
        [
          {
            "node": "AI-Agent-UPSC--2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "HTML1--6": {
      "main": [
        [
          {
            "node": "AI-Agent-UPSC--2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "-7--10": {
      "main": [
        [
          {
            "node": "HTTP-Request-The-Hindu--1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI-Agent-UPSC--2": {
      "main": [
        [
          {
            "node": "--7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JavaScript-URL--9": {
      "main": [
        [
          {
            "node": "HTTP-Request1--5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML--4": {
      "main": [
        [
          {
            "node": "JavaScript-URL--9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "--0": {
      "main": [
        [
          {
            "node": "HTTP-Request-The-Hindu--1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google-Sheets1--8": {
      "ai_tool": [
        [
          {
            "node": "AI-Agent-UPSC--2",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "HTTP-Request-The-Hindu--1": {
      "main": [
        [
          {
            "node": "HTML--4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP-Request1--5": {
      "main": [
        [
          {
            "node": "HTML1--6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数20
カテゴリー-
ノードタイプ10
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者

Automation consultant with expertise in n8n, AI models, and workflow optimization. I help educators, startups, and businesses design scalable automation for content creation, exam prep, and process efficiency. Skilled in integrating Google Sheets, Telegram, and AI agents for impactful results.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34