On this page API Notion через curl: страницы, базы данных, блоки, поиск.
Метаданные навыка¶
| |
|---|---|
|Источник| Встроенный (устанавливается по умолчанию) |
|Путь| skills/productivity/notion |
|Версия| 1.0.0 |
|Автор| community |
|Лицензия| MIT |
|Теги| Notion, Productivity, Notes, Database, API |
Справочник: полный SKILL.md¶
info Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Это инструкции, которые видит агент, когда навык активен.
Notion API¶
Используйте Notion API через curl для создания, чтения и обновления страниц, баз данных (источников данных) и блоков. Никаких дополнительных инструментов не требуется — только curl и ключ API Notion.
Предварительные требования¶
- Создайте интеграцию на https://notion.so/my-integrations
- Скопируйте ключ API (начинается с
ntn_илиsecret_) - Сохраните его в
~/.hermes/.env: [code] NOTION_API_KEY=ntn_your_key_here
[/code] 4. Важно: Предоставьте доступ к целевым страницам/базам данных вашей интеграции в Notion (нажмите «...» → «Connect to» → название вашей интеграции)
Основы API¶
Все запросы используют этот шаблон:
[code]
curl -s -X GET \"https://api.notion.com/v1/...\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\" \
-H \"Content-Type: application/json\"
[/code]
Заголовок Notion-Version обязателен. Этот навык использует 2025-09-03 (последняя версия). В этой версии базы данных называются «источниками данных» (data sources) в API.
Распространённые операции¶
Поиск¶
[code]
curl -s -X POST \"https://api.notion.com/v1/search\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\" \
-H \"Content-Type: application/json\" \
-d '{\"query\": \"page title\"}'
[/code]
Получить страницу¶
[code]
curl -s \"https://api.notion.com/v1/pages/{page_id}\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\"
[/code]
Получить содержимое страницы (блоки)¶
[code]
curl -s \"https://api.notion.com/v1/blocks/{page_id}/children\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\"
[/code]
Создать страницу в базе данных¶
[code]
curl -s -X POST \"https://api.notion.com/v1/pages\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\" \
-H \"Content-Type: application/json\" \
-d '{
\"parent\": {\"database_id\": \"xxx\"},
\"properties\": {
\"Name\": {\"title\": [{\"text\": {\"content\": \"New Item\"}}]},
\"Status\": {\"select\": {\"name\": \"Todo\"}}
}
}'
[/code]
Запросить базу данных¶
[code]
curl -s -X POST \"https://api.notion.com/v1/data_sources/{data_source_id}/query\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\" \
-H \"Content-Type: application/json\" \
-d '{
\"filter\": {\"property\": \"Status\", \"select\": {\"equals\": \"Active\"}},
\"sorts\": [{\"property\": \"Date\", \"direction\": \"descending\"}]
}'
[/code]
Создать базу данных¶
[code]
curl -s -X POST \"https://api.notion.com/v1/data_sources\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\" \
-H \"Content-Type: application/json\" \
-d '{
\"parent\": {\"page_id\": \"xxx\"},
\"title\": [{\"text\": {\"content\": \"My Database\"}}],
\"properties\": {
\"Name\": {\"title\": {}},
\"Status\": {\"select\": {\"options\": [{\"name\": \"Todo\"}, {\"name\": \"Done\"}]}},
\"Date\": {\"date\": {}}
}
}'
[/code]
Обновить свойства страницы¶
[code]
curl -s -X PATCH \"https://api.notion.com/v1/pages/{page_id}\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\" \
-H \"Content-Type: application/json\" \
-d '{\"properties\": {\"Status\": {\"select\": {\"name\": \"Done\"}}}}'
[/code]
Добавить содержимое на страницу¶
[code]
curl -s -X PATCH \"https://api.notion.com/v1/blocks/{page_id}/children\" \
-H \"Authorization: Bearer $NOTION_API_KEY\" \
-H \"Notion-Version: 2025-09-03\" \
-H \"Content-Type: application/json\" \
-d '{
\"children\": [
{\"object\": \"block\", \"type\": \"paragraph\", \"paragraph\": {\"rich_text\": [{\"text\": {\"content\": \"Hello from Hermes!\"}}]}}
]
}'
[/code]
Типы свойств¶
Распространённые форматы свойств для элементов базы данных:
* Title: {\"title\": [{\"text\": {\"content\": \"...\"}}]}
* Rich text: {\"rich_text\": [{\"text\": {\"content\": \"...\"}}]}
* Select: {\"select\": {\"name\": \"Option\"}}
* Multi-select: {\"multi_select\": [{\"name\": \"A\"}, {\"name\": \"B\"}]}
* Date: {\"date\": {\"start\": \"2026-01-15\", \"end\": \"2026-01-16\"}}
* Checkbox: {\"checkbox\": true}
* Number: {\"number\": 42}
* URL: {\"url\": \"https://...\"}
* Email: {\"email\": \"user@example.com\"}
* Relation: {\"relation\": [{\"id\": \"page_id\"}]}
Ключевые отличия в версии API 2025-09-03¶
- Базы данных → Источники данных: Используйте эндпоинты
/data_sources/для запросов и получения данных - Два ID: Каждая база данных имеет как
database_id, так иdata_source_id- Используйте
database_idпри создании страниц (parent: {\"database_id\": \"...\"}) - Используйте
data_source_idпри запросах (POST /v1/data_sources/{id}/query)
- Используйте
- Результаты поиска: Базы данных возвращаются как
\"object\": \"data_source\"с ихdata_source_id
Примечания¶
- ID страниц/баз данных — это UUID (с дефисами или без)
- Лимит запросов: ~3 запроса/секунду в среднем
- API не может устанавливать фильтры представлений базы данных — это только через интерфейс
- Используйте
is_inline: trueпри создании источников данных для встраивания их на страницы - Добавьте флаг
-sк curl для подавления индикаторов прогресса (более чистый вывод для Hermes) -
Передавайте вывод через
jqдля читаемого JSON:... | jq '.results[0].properties' - Справочник: полный SKILL.md
- Предварительные требования
- Основы API
- Распространённые операции
- Типы свойств
- Ключевые отличия в версии API 2025-09-03
- Примечания