diy-pc-ingest
Setup (required)
This skill is intended to be shared. Do not hardcode your Notion IDs or token in the skill.
- •Copy the example config:
- •
skills/diy-pc-ingest/references/config.example.json→~/.config/diy-pc-ingest/config.json
- •Fill in your Notion targets (IDs):
- •
notion.targets.*.data_source_id(for schema/query) - •
notion.targets.*.database_id(for creating pages)
- •Provide a Notion integration token (choose one):
- •env:
NOTION_API_KEY(recommended) - •or
~/.config/notion/api_key(legacy local path) - •or inline
notion.api_keyinconfig.json(not recommended if you publish/share configs)
Notes:
- •This skill uses Notion-Version
2025-09-03by default. - •Targets are read at runtime from config; see
references/config.example.json.
Canonical Notion targets
Use data_sources endpoints for schema/query, and pages endpoint for row creation.
(IDs are intentionally not included in this public skill. They live in your local config.)
Workflow (A: user pastes raw text)
- •
Read the pasted text and decide target table per item:
- •エンクロージャー: USB/RAID/HDDケース/ドック、ベイ数、JAN/型番、"安全な取り外し"表示名。
- •ストレージ: HDD/SSD/NVMe/SATA/容量/シリアル/健康状態。
- •PCConfig: CPU/GPU/RAM/PSU/MB/ケース/冷却/NIC/キャプチャ等。
- •
Extract fields (best-effort). Prefer Japanese column names as they exist in each table.
- •
Enrich specs using web_search/web_fetch when it reduces user work (e.g., bay count, interface, capacity, form factor). Keep it minimal; don’t overfill.
- •
Ask follow-up questions only for fields needed to avoid ambiguity or bad joins.
- •ストレージ: Serial missing → ask for serial (or confirm creating as “暫定/シリアル不明”).
- •エンクロージャー: ベイ数 or USB/Thunderbolt/LAN unclear → ask.
- •PCConfig: Identifier/型番 missing but needed to match existing row → ask.
- •
Upsert into Notion using
scripts/notion_apply_records.js:- •Provide JSONL records (one per item) on stdin.
- •Script will:
- •find an existing row by key (see below)
- •patch only missing fields unless
overwrite=true - •otherwise create a new row
- •
Report results (created/updated/skipped) and link any created rows.
Upsert keys (rules)
- •ストレージ:
シリアル(exact) is the primary key. If the existing row was created without serial, allow a safe fallback match by title + (optional)購入日/価格(円)to support post-fill of serial/health/scan-date. - •エンクロージャー:
取り外し表示名(exact) else title/name. - •PCConfig:
(Name + Purchase Date)を複合キーとして扱う(exact)。重複ヒット時は書き込まず質問。 - •If a key collides with multiple rows, do not write; ask user.
JSONL input format for the apply script
Each line is a JSON object:
{"target":"enclosure","title":"RATOC RS-EC32-R5G","properties":{"種別":"USBケース","接続":"USB","ベイ数":2,"普段つないでるPC":"RECRYZEN","購入日":"2026-01-18","購入店":"PCワンズ","価格(円)":8977,"取り外し表示名":"RS-EC32-R5G","メモ":"JAN: 4949090752191"}}
Optional control fields (for cleanup / manual fixes):
- •
page_id(orid): update this Notion page directly (bypasses upsert matching) - •
archive: true: archive the page (useful for de-dup) - •
overwrite: true: allow overwriting existing values (including clearing with null)
Optional behavior flags:
- •
mirror_to_pcconfig: true(only fortarget=storage): also create/update apcconfigrow for the installed component.- •requires:
現在の接続先PC,購入日,Name
- •requires:
Targets: enclosure | storage | pcconfig | pcinput
Property value encoding:
- •select/status: string name
- •rich_text: string
- •number: number
- •date:
YYYY-MM-DD - •checkbox: boolean
- •relation: array of page_ids (advanced; avoid unless needed)
Notes
- •Always use Notion-Version
2025-09-03. - •Prefer
POST /v1/data_sources/{id}/queryover/databases/{id}/query. - •Relation schema updates require
relation.data_source_id(not database_id).
Note (implementation)
- •JS implementation is the default:
scripts/notion_apply_records.js - •Legacy Python implementation is kept for reference:
scripts/_deprecated/notion_apply_records.py
Notion tooling (recommended)
- •Install
notion-api-automationvia ClawHub for Notion API debugging:clawhub install notion-api-automation - •This skill does not depend on
skills/notionkit/*. - •Primary ingestion path is
scripts/notion_apply_records.js; useskills/notion-api-automation/scripts/notionctl.mjsfor diagnostics/manual API operations.