agentsclimarketplace

Notion row writer

Skill baronguyen001/ai-automation-skills/skills/notion-row-writer

8 production-tested Claude skills: automation, Gemini cost/structured output, OSS bounty scouting, ML validation.

Install
npx -y skills add baronguyen001/ai-automation-skills --skill notion-row-writer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Upsert a row into a Notion database by a stable key with NOTION_API_KEY and database id from env. Use when the user asks to write automation results to Notion, update a tracker row, dedupe by URL/id/date, or keep a lightweight Notion database in sync.

SKILL.md

2.2 KB, 461 tokens by cl100k_base, as published. Nobody here has run it

Notion Row Writer

Use this skill when an automation run needs to write one result row into a Notion database and update the existing row when the stable key already exists. The helper uses the Notion HTTP API through requests, reads credentials from env, and fails clearly when configuration is missing.

When to invoke

  • User says: "write this to Notion", "update my Notion tracker", "upsert by URL", "dedupe rows in a Notion database".
  • A script has result metadata that should be visible in a Notion table.

When NOT to invoke

  • The user needs relational Notion schema design or a complex sync engine.
  • The row store should be private/local; use SQLite or CSV instead.

Concrete example

User input:

Upsert each scraped bounty into my Notion database by its URL.

Output:

# Copy assets/notion.py into your project, then:
from notion import upsert_row

page_id = upsert_row(
    key_property="URL",
    key_value="https://example.com/item/123",
    properties={
        "Name": {"title": [{"text": {"content": "Example item"}}]},
        "Status": {"select": {"name": "New"}},
    },
)
print("notion page:", page_id)

The helper reads NOTION_API_KEY and NOTION_DATABASE_ID from env. The stable key property must already exist in the target database.

Pattern to apply

  1. Pick one stable key such as URL, external id, or date+source; do not dedupe by title alone.
  2. Query the database for that key before writing.
  3. Create a page when no match exists; update the first matching page otherwise.
  4. Keep Notion property payloads explicit so type errors are easy to spot.
  5. Treat missing keys or database ids as configuration errors, not silent no-ops.

Reference: assets/notion.py.

Source

Distilled from production use across the author's automation projects. v1.0.0. See also: [[github-label-scout]], [[csv-report-writer]], [[sqlite-state]].

→ Build the full runnable bot with Trawlkit.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.