Automate GitHub + Notion
Where the code — and half the process — lives. The team wiki agents can actually keep current. Put an agent between them and the hand-off stops being manual: it reads, decides, acts, and shows its work.
First-Pass Reviewer is a ready-made agent built around GitHub; point its last step at Notion to finish this hand-off.
Automations teams run
These are not field mappings. An agent reads the GitHub side, works out what it means, and only then decides what — if anything — should happen in Notion.
When a PR opens or merges in GitHub…
…an agent can create and update pages in Notion — after reading the context and deciding it should.
When an issue is filed in GitHub…
…an agent can write database rows in Notion — after reading the context and deciding it should.
When a release is cut in GitHub…
…an agent can append meeting notes in Notion — after reading the context and deciding it should.
When a page is created or edited in Notion…
…an agent can comment on PRs and issues in GitHub — with the reasoning recorded in the run’s receipt.
When a database row changes in Notion…
…an agent can open issues with structured detail in GitHub — with the reasoning recorded in the run’s receipt.
When a status flips in Notion…
…an agent can draft release notes in GitHub — with the reasoning recorded in the run’s receipt.
The GitHub and Notion hand-off, setup template
Start with the github-api node and the notion-api node. Configure the GitHub source payload, the agent input, and the Notion operation. The sequential template does not implement conditional writes or approval by itself.
This is a schema-checked starting point, not an end-to-end tested automation. Replace every CONFIGURE_ value, choose the operations you intend, connect credentials and map source outputs into later inputs. An edge orders steps; it does not supply a condition, an approval gate or a field mapping. Add and test those controls explicitly before any write. Cloud APIs and model providers may receive data. Keep the workflow inactive until tested with fixtures.
{
"id": "fcdfc78a-1ecb-45f8-a65f-e76e70e39970",
"name": "GitHub → Notion",
"nodes": [
{
"id": "4274eabc-ba3f-407d-a517-efdbd3f843b6",
"text": "Run on a schedule",
"x": 512,
"y": 144,
"isEditing": false,
"type": "trigger-timer",
"icon": "connect",
"category": "trigger",
"isSelected": false,
"parameters": {
"fireOnStart": "No",
"scheduleType": "Interval",
"schedule": "Every 15 Minutes"
},
"description": "Setup template for Timer Trigger. This trigger node fires the workflow at specified intervals or at a specific time. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "d850bdba-a48c-4c47-a1db-b67145ebf96a",
"text": "Read GitHub",
"x": 512,
"y": 336,
"isEditing": false,
"type": "github-api",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"action": "GET_AUTHENTICATED_USER",
"owner": "CONFIGURE_OWNER",
"repo": "CONFIGURE_REPO"
},
"description": "Setup template for GitHub API. Interact with GitHub: repos, branches, files, issues, comments, pull requests, reviews, releases, Actions/CI, and search. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "76b9c4f4-d782-4f73-abb0-673b5c251afe",
"text": "Review source and draft",
"x": 512,
"y": 528,
"isEditing": false,
"type": "agnt-agent",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"agentId": "CONFIGURE_AGENTID",
"message": "Read the GitHub item. Decide whether it warrants action in Notion, and explain why.\nSource input: CONFIGURE_SOURCE_INPUT. Produce a reviewable draft only; do not take external actions."
},
"description": "Setup template for Agent Chat. Chat with an AI agent from your agent library. Select an agent and send messages to interact with it within your workflow. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "06063023-cb99-43ce-acb0-0c3fd96ba910",
"text": "Configure destination in Notion",
"x": 512,
"y": 720,
"isEditing": false,
"type": "notion-api",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"operation": "search",
"pageSize": 1,
"query": "CONFIGURE_QUERY",
"filterType": "all"
},
"description": "Setup template for Notion API. Interact with Notion - search, query databases, get pages, and create pages. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
}
],
"edges": [
{
"id": "f673eaab-c0b1-40d4-aaaf-36d958e5dc08",
"start": {
"id": "4274eabc-ba3f-407d-a517-efdbd3f843b6",
"type": "output"
},
"end": {
"id": "d850bdba-a48c-4c47-a1db-b67145ebf96a",
"type": "input"
},
"startX": 800,
"startY": 168,
"endX": 512,
"endY": 360
},
{
"id": "65466312-10cf-49dd-a4c7-64bf5f041a76",
"start": {
"id": "d850bdba-a48c-4c47-a1db-b67145ebf96a",
"type": "output"
},
"end": {
"id": "76b9c4f4-d782-4f73-abb0-673b5c251afe",
"type": "input"
},
"startX": 800,
"startY": 360,
"endX": 512,
"endY": 552
},
{
"id": "27f4ce77-a458-4572-afe4-b465b82aebc0",
"start": {
"id": "76b9c4f4-d782-4f73-abb0-673b5c251afe",
"type": "output"
},
"end": {
"id": "06063023-cb99-43ce-acb0-0c3fd96ba910",
"type": "input"
},
"startX": 800,
"startY": 552,
"endX": 512,
"endY": 744
}
],
"zoomLevel": 1,
"canvasOffsetX": 0,
"canvasOffsetY": 0,
"isTinyNodeMode": false
}
Configure GitHub API
Interact with GitHub: repos, branches, files, issues, comments, pull requests, reviews, releases, Actions/CI, and search.
- action — The action to perform on GitHub Current example:
GET_AUTHENTICATED_USER. - owner — The owner of the repository (not needed for account-level or search actions) Current example:
CONFIGURE_OWNER. - repo — The name of the repository (for CREATE_REPO: the name of the new repository) Current example:
CONFIGURE_REPO.
Configure Notion API
Interact with Notion - search, query databases, get pages, and create pages.
- operation — Operation to perform Current example:
search. - query — Search query text Current example:
CONFIGURE_QUERY. - filterType — Filter results by type Current example:
all. - pageSize — Max results (default: 10-100) Current example:
1.
Install First-Pass Reviewer
First-Pass Reviewer is a working agent built around GitHub. Install it, point its last step at Notion, and you have this hand-off without building it from an empty canvas.
Runs on your own machine · See what it does
Build it in AGNT
- Install AGNT — it runs on your own machine and needs no account to start.
- Authorise Notion (one OAuth sign-in) and GitHub (one OAuth sign-in). Nothing is stored anywhere but your disk.
- Describe the job in plain language, or paste the definition above; github-api does the reading and notion-api the writing.
- Gate anything you would not want done unattended, then let it run and read the first receipt end to end.
GitHub and Notion — common questions
Can I connect GitHub to Notion without writing code?
Yes. GitHub connects with one OAuth sign-in and Notion with one OAuth sign-in, both from the local credential vault. You then describe the job in plain language — “when a PR opens or merges, create and update pages” — and the agent handles the rest.
How is this different from a field-mapping GitHub to Notion automation?
A field mapping copies values and breaks on the first record nobody anticipated. The middle step here reads the GitHub item in full and decides — whether it matters, how to summarise it, and what belongs in Notion. Deciding to do nothing is a valid outcome, which no mapping can express.
Does my GitHub and Notion data leave my machine?
AGNT Community Core is local-first, so there is no vendor middleman holding your GitHub or Notion tokens. The runtime talks directly to both services. Choose a local model and the content of what it reads never leaves the machine at all.
What does a GitHub and Notion run leave behind?
A receipt: what was read in GitHub, which tools ran with which arguments, what the agent concluded, and what it wrote to Notion. Anything consequential can sit behind an approval gate so a person signs off before it happens.