Decode, track, and guide through furniture assembly instructions from step diagrams. Manages parts inventory, tracks assembly progress, identifies the current step from a photo, and warns about common mistakes. Use when assembling flat-pack furniture or following visual-only instruction manuals.
Integrations
diy-pc-ingest
Try itParse pasted PC parts text and upsert records into Notion DIY_PC tables with classification and follow-up.
What it does
Locally parses pasted PC parts text into one of four Notion targets: enclosure (USB/RAID/HDD cases, bay count, removal label), storage (HDD/SSD/NVMe, capacity, serial, health), pcconfig (CPU/GPU/RAM/PSU/MB/case/cooling/NIC/capture), and pcinput. Optionally enriches specs via web_search/web_fetch, then asks targeted follow-up questions when fields are missing or a key would collide with multiple rows. Records are previewed through scripts/notion_apply_records.js in auto-discovery mode (read-only) before any write, and then upserted via the notion-api-automation skill using Notion-Version 2025-09-03 data_sources endpoints.
When to use it
- Logging a new storage drive from a pasted receipt
- Registering an enclosure with bay count and 取り外し表示名
- Adding a PCConfig component by Name + 購入日 composite key
- Back-filling serial or health status on an existing storage row
The skill document
diy-pc-ingest
Setup (required)
This skill is intended to be shared. Do not hardcode your Notion IDs or token in the skill.
Install the required dependency skill via ClawHub before using this skill:
clawhub install notion-api-automation
- Read the
DIY-PC Notion Targetstable in the workspaceAGENTS.md## Toolssection for the data_source_id and database_id values for each target. Pass them as explicit CLI arguments:
--pcconfig-dsid,--pcconfig-dbid--pcinput-dsid,--pcinput-dbid--storage-dsid,--storage-dbid--enclosure-dsid,--enclosure-dbid
- Provide Notion auth for
notion-api-automation(notionctl):
- env:
NOTION_API_KEY(legacy shell/service env remains supported) - OpenClaw config:
skills.entries["diy-pc-ingest"].apiKey
apiKey is associated with metadata.openclaw.primaryEnv and is injected as
NOTION_API_KEY for the host agent run. It may be a plaintext value or any
OpenClaw SecretRef supported by the local gateway (env, file, exec, etc.).
Do not hardcode provider-specific secret paths in this shared skill.
Example SecretRef shape:
{
skills: {
entries: {
"diy-pc-ingest": {
apiKey: { source: "exec", provider: "your_notion_secret_provider", id: "value" }
}
}
}
}
Notes:
- This skill uses Notion-Version
2025-09-03by default. - If
NOTIONCTL_PATHis set,scripts/notion_apply_records.jsuses that notionctl path; otherwise it uses the siblingnotion-api-automationskill.
Data flow disclosure
- Local input: pasted receipts/spec notes are parsed locally.
- External enrichment (optional):
web_search/web_fetchmay send partial product text to external web providers. - Notion write path: records are queried/upserted via
notion-api-automation/scripts/notionctl.mjs.
Security rules:
- If user does not want external enrichment, skip
web_search/web_fetchand proceed with local extraction only. - Use minimal-scope Notion integration permissions (only target DIY_PC data sources).
Canonical Notion targets
Use data_sources endpoints for schema/query, and pages endpoint for row creation.
IDs are documented in the DIY-PC Notion Targets table in the workspace AGENTS.md ## Tools section. Pass them as CLI arguments at runtime.
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.
- If a key collides with multiple rows, do not write; ask user.
-
Search existing records in Notion using
scripts/notion_apply_records.js(auto-discovery mode):- Provide JSONL records (one per item) on stdin.
- Script will:
- find an existing row by key (see below)
- report what would be created/updated/skipped without making changes
- Do not write anything (no create/update operations)
- Use this to preview results before actual upsert.
-
Review search results and confirm with user:
- Show what would be created/updated/skipped
- Ask for confirmation before proceeding to actual upsert
-
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. 3
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.
Questions people ask
- Does it write to Notion immediately on paste?
- No. The apply script is first run in auto-discovery mode, which only queries Notion and reports what would be created, updated, or skipped. Actual upsert happens only after the user confirms the preview.
- What credentials are required?
- A Notion API key must be available as NOTION_API_KEY, either as an environment variable or as an OpenClaw SecretRef under skills.entries["diy-pc-ingest"].apiKey. The skill is meant to be shared, so IDs and tokens are not hardcoded.
- What dependencies does it have?
- The notion-api-automation skill must be installed via ClawHub (clawhub install notion-api-automation); its scripts/notionctl.mjs is used for diagnostics, while scripts/notion_apply_records.js handles the primary ingestion path.
Related skills
Identify OEM part numbers from PDF parts catalogs by matching vehicle scope, exploded positions, and parts-table entries.
Extracts structured data from receipt text (OCR/photo description) and generates monthly spending reports. Parses merchant, date, line items, tax, total, and category. Produces summary stats: top merchants, category breakdown, total spend.
Parse PDF, image, Word, or PPT files with SoMark and publish the result to Feishu, DingTalk, or Notion as editable documents, spreadsheets, record tables, or databases. Also use when an exact matching SoMark Markdown-and-JSON pair must be imported into one or more of these platforms.
Ingest a single document, uploaded file, meeting note, experiment record, or chat-provided material into a personal or team knowledge base, including summari...
Document everything you own for insurance, moving, or estate planning. Manage a JSON database of household items with depreciation tracking, insurance-ready reports, and moving box labeling.