79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
import os
|
|
import requests
|
|
import json
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv(dotenv_path="/home/node/clawd/.env")
|
|
|
|
NOTION_TOKEN = os.getenv("NOTION_API_KEY")
|
|
HEADERS = {
|
|
"Authorization": f"Bearer {NOTION_TOKEN}",
|
|
"Content-Type": "application/json",
|
|
"Notion-Version": "2022-06-28"
|
|
}
|
|
|
|
def find_db_id(query_name):
|
|
url = "https://api.notion.com/v1/search"
|
|
payload = {"query": query_name, "filter": {"value": "database", "property": "object"}}
|
|
resp = requests.post(url, headers=HEADERS, json=payload)
|
|
if resp.status_code == 200:
|
|
results = resp.json().get("results", [])
|
|
if results:
|
|
return results[0]['id']
|
|
return None
|
|
|
|
def get_page_id(db_id, title_col, title_val):
|
|
url = f"https://api.notion.com/v1/databases/{db_id}/query"
|
|
payload = {
|
|
"filter": {
|
|
"property": title_col,
|
|
"title": {"equals": title_val}
|
|
}
|
|
}
|
|
resp = requests.post(url, headers=HEADERS, json=payload)
|
|
if resp.status_code == 200:
|
|
results = resp.json().get("results", [])
|
|
if results:
|
|
return results[0]
|
|
return None
|
|
|
|
def update_page(page_id, properties):
|
|
url = f"https://api.notion.com/v1/pages/{page_id}"
|
|
payload = {"properties": properties}
|
|
resp = requests.patch(url, headers=HEADERS, json=payload)
|
|
if resp.status_code == 200:
|
|
print(f"✅ Updated page {page_id}")
|
|
else:
|
|
print(f"❌ Error updating {page_id}: {resp.text}")
|
|
|
|
def append_text(current_text, new_text):
|
|
if not current_text:
|
|
return new_text
|
|
if new_text in current_text:
|
|
return current_text
|
|
return f"{current_text}\n\n[Auto-Update]: {new_text}"
|
|
|
|
# --- DATA TO UPDATE (Example) ---
|
|
PERSONA_UPDATES = {
|
|
"Wirtschaftlicher Entscheider": "10-25% Reduktion Personalkosten\n15-30% höhere Gästezufriedenheit (Hypothese)",
|
|
"Operativer Entscheider": "20-40% Entlastung bei Routineaufgaben\n100% Abdeckung Reinigungszyklen",
|
|
"Infrastruktur-Verantwortlicher": "20-30% schnellere Integration\n80-90% weniger Ausfallzeiten",
|
|
"Innovations-Treiber": "10-20% höhere Servicekapazität\nSteigerung Upselling 5-10%"
|
|
}
|
|
|
|
def run_updates():
|
|
print("--- Starting Notion Updates ---")
|
|
db_personas = find_db_id("Personas")
|
|
if db_personas:
|
|
for role, kpi_text in PERSONA_UPDATES.items():
|
|
page = get_page_id(db_personas, "Role", role)
|
|
if page:
|
|
update_page(page['id'], {
|
|
"KPIs": {"rich_text": [{"text": {"content": kpi_text}}]}
|
|
})
|
|
|
|
# Industries update logic omitted for brevity in restore, but structure is here.
|
|
|
|
if __name__ == "__main__":
|
|
run_updates()
|