Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vaayne/notionai-py
Unofficial Python SDK for NotionAI
https://github.com/vaayne/notionai-py
Last synced: about 2 months ago
JSON representation
Unofficial Python SDK for NotionAI
- Host: GitHub
- URL: https://github.com/vaayne/notionai-py
- Owner: vaayne
- License: mit
- Created: 2023-03-13T13:10:11.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-24T02:12:13.000Z (12 months ago)
- Last Synced: 2024-11-05T05:34:00.454Z (2 months ago)
- Language: Python
- Size: 704 KB
- Stars: 61
- Watchers: 7
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# NotionAI Python SDK
The NotionAI Python SDK is a wrapper for the NotionAI APIs with Python bindings, simplifying integration of NotionAI solutions into your projects.
### Features
- Full APIs from Notion AI
- Support stream response### API
All NotionAI functionalities are supported. Check out the [notionai.py](./notionai/notionai.py) file to see all the available APIs.
#### Basic API Shortcuts
APIs like `blog_post`, `help_me_write`, `help_me_edit`, and `summarize` are shortcuts for the basic APIs.
#### Advanced APIs
We also support advanced APIs that allow you to dispatch by parameters:
1. `writing_with_topic`
```
Writing for special topic
Args:
topic (TopicEnum): the special topic
prompt (str): prompt for writing
Example:
ao = NotionAI(token)
ai.writing_with_topic(TopicEnum.blog_post, "Please help to introduce Notion")
```
2. `writing_with_prompt`
```
Writing with special prompt, like summarize, explain_this, improve_writingArgs:
prompt_type (PromptTypeEnum): special prompt
context (str): the context for your writingExample:
ai = NotionAI(token)
ai.writing_with_prompt(PromptTypeEnum.summarize, "I am a student")
```
3. `translate`
```
Translate the text
Args:
language (TranslateLanguageEnum): target language
context (str): context to translateExample:
ai = NotionAI(token)
ai.translate(TranslateLanguageEnum.Chinese, "I am a student")
```
4. `change_tone`
```
Change the tone of your context
Args:
context (str): context to change
tone (ToneEnum): target toneReturns:
str: Response from NotionAI
Example:
ai = NotionAI(token)
ai.change_tone("I am a student", ToneEnum.professional)
```### Usage
#### Install
`pip install --upgrade notionai-py`
#### Get Notion Token and Workspace ID
To use the NotionAI Python SDK, you need to obtain a Notion token. You can do this by following these steps:
1. Open Chrome or Firefox DevTools
2. Find Cookies and copy the value for `token_v2`
3. Find the `spaceId` of your Notion workspace- get notion token
![Get Notion Token](./docs/images/get_notion_token.png)
- get notion workspace id
![Get Notion Workspace ID](./docs/images/notion-space-id.png)**Note: Now can get Notion space id using api**
```python
import os
from notionai import NotionAI
TOKEN = os.getenv("NOTION_TOKEN")spaces = NotionAI.get_spaces(TOKEN)
print(spaces)
# the result will looks like
# [{'id': 'xxxxx', 'name': 'xxxxx'}]```
**Note2: Now supports custom api proxy links**
```python
import os
from notionai import NotionAI
TOKEN = os.getenv("NOTION_TOKEN")
SPACE_ID = os.getenv("NOTION_SPACE_ID")
API_URL = "https://xxx.xxx.xxx" # this is your custom proxy linksai = NotionAI(TOKEN, SPACE_ID, api_url=API_URL)
res = ai.blog_post("write a blog about the meaning of life")
print(res)
```#### Examples
Check out the [examples](./examples/) directory for usage examples.
1. Basic
```python
import os
from notionai import NotionAITOKEN = os.getenv("NOTION_TOKEN")
SPACE_ID = os.getenv("NOTION_SPACE_ID")def main():
ai = NotionAI(TOKEN, SPACE_ID)
res = ai.blog_post("write a blog about the meaning of life")
print(res)if __name__ == "__main__":
main()```
2. Stream API
```python
import os
import sys
from notionai import NotionAITOKEN = os.getenv("NOTION_TOKEN")
SPACE_ID = os.getenv("NOTION_SPACE_ID")def main():
ai = NotionAIStream(TOKEN, SPACE_ID)
res = ai.blog_post("write a blog about the meaning of life")
for item in res:
sys.stdout.write(item)if __name__ == "__main__":
main()
```3. WebUI
Check out the [webui](./examples/webui/README.md) directory for instructions on how to use the NotionAI Python SDK with a web user interface.