Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,33 @@
# ScrapeGraphAI
## Description
ScrapeGraphAI is a powerful web scraping and content extraction API. This piece enables integration with ScrapeGraphAI's API to perform smart scraping, local scraping, and markdown conversion.
## Actions
1. **Smart Scraper**: Advanced web scraping with AI-powered content extraction
- Automatic content detection
- Clean HTML output
- Support for dynamic websites
- Configurable options for content types
2. **Local Scraper**: Fast and lightweight web scraping
- Basic content extraction
- Static website support
- Configurable selectors
- Resource-efficient
3. **Markdownify**: Convert web content to clean Markdown
- Clean and formatted markdown output
- Preserves content structure
- Handles various content types
- Customizable output options
## Authentication
This piece requires an API key from ScrapeGraphAI. To obtain your API key:
1. Visit https://scrapegraphai.com
2. Sign up for an account
3. Navigate to your dashboard
4. Copy your API key
## Requirements
- ScrapeGraphAI API Key

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-scrapegrapghai",
"version": "0.0.8"
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-scrapegrapghai",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/scrapegrapghai/src",
"projectType": "library",
"release": {
"version": {
"currentVersionResolver": "git-tag",
"preserveLocalDependencyProtocols": false,
"manifestRootsToUpdate": [
"dist/{projectRoot}"
]
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/scrapegrapghai",
"tsConfig": "packages/pieces/community/scrapegrapghai/tsconfig.lib.json",
"packageJson": "packages/pieces/community/scrapegrapghai/package.json",
"main": "packages/pieces/community/scrapegrapghai/src/index.ts",
"assets": [
"packages/pieces/community/scrapegrapghai/*.md",
{
"input": "packages/pieces/community/scrapegrapghai/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/scrapegrapghai",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "KI-betriebene Web-Scraping und Inhaltsextraktion.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFolgen Sie diesen Schritten, um Ihren ScrapeGraphAI API-Schlüssel zu erhalten:\n\n1. Besuchen Sie [ScrapeGraphAI](https://scrapegraphai.com) und erstellen Sie ein Konto.\n2. Melden Sie sich an und navigieren Sie zu Ihrem Dashboard.\n3. Suchen und kopieren Sie Ihren API-Schlüssel aus dem Dashboard.\n",
"Smart Scraper": "Smart Scraper",
"Local Scraper": "Lokaler Scraper",
"Convert to Markdown": "In Markdown umwandeln",
"Custom API Call": "Eigener API-Aufruf",
"Extract content from a webpage using AI by providing a natural language prompt.": "Extrahieren Sie Inhalte aus einer Webseite mit Hilfe von AI durch eine natürliche Sprachenabfrage.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Extrahieren Sie Inhalte aus HTML-Inhalten mit Hilfe von KI über eine natürliche Sprachenabfrage.",
"Convert any webpage into clean, readable Markdown format.": "Konvertieren Sie jede Webseite in sauberes, lesbares Markdown Format.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Website URL": "Website-URL",
"Extraction Prompt": "Prompt für Extraktion",
"Output Schema": "Ausgabeschema",
"HTML Content": "HTML-Inhalt",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Body": "Körper",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"The webpage URL to scrape.": "Die URL der Webseite.",
"Describe what information you want to extract in natural language.": "Beschreiben Sie, welche Informationen Sie in natürlicher Sprache extrahieren möchten.",
"Optional schema to structure the output data.": "Optionales Schema, um die Ausgabedaten zu strukturieren.",
"The HTML content to process (max 2MB).": "Der zu verarbeitende HTML-Inhalt (max 2MB).",
"The webpage URL to convert to Markdown": "Die URL der Webseite, die zu Markdown konvertiert werden soll",
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "Extracción de contenido y raspado web propulsado por AI.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nSigue estos pasos para obtener tu clave API de ScrapeGraphAI:\n\n1. Visita [ScrapeGraphAI](https://scrapegraphai.com) y crea una cuenta.\n2. Inicie sesión y vaya a su panel de control.\n3. Localice y copie su clave API del panel de control.\n",
"Smart Scraper": "Raspador Inteligente",
"Local Scraper": "Raspador local",
"Convert to Markdown": "Convertir a Markdown",
"Custom API Call": "Llamada API personalizada",
"Extract content from a webpage using AI by providing a natural language prompt.": "Extraiga contenido de una página web usando AI proporcionando una indicación de idioma natural.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Extraiga contenido del contenido HTML usando AI proporcionando una indicación de idioma natural.",
"Convert any webpage into clean, readable Markdown format.": "Convierte cualquier página web en formato Markdown limpio y legible.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Website URL": "URL del sitio web",
"Extraction Prompt": "Prompt de extracción",
"Output Schema": "Esquema de salida",
"HTML Content": "Contenido HTML",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"Body": "Cuerpo",
"Response is Binary ?": "¿Respuesta es binaria?",
"No Error on Failure": "No hay ningún error en fallo",
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
"The webpage URL to scrape.": "La URL de la página web a scrape.",
"Describe what information you want to extract in natural language.": "Describa qué información desea extraer en lenguaje natural.",
"Optional schema to structure the output data.": "Esquema opcional para estructurar los datos de salida.",
"The HTML content to process (max 2MB).": "El contenido HTML a procesar (máx. 2MB).",
"The webpage URL to convert to Markdown": "La URL de la página web para convertir a Markdown",
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "Exploitation de sites web et d'extraction de contenu.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Smart Scraper": "Écraseur intelligent",
"Local Scraper": "Broyeur local",
"Convert to Markdown": "Convertir en Markdown",
"Custom API Call": "Appel d'API personnalisé",
"Extract content from a webpage using AI by providing a natural language prompt.": "Extraire le contenu d'une page Web à l'aide de l'IA en fournissant une invite en langage naturel.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Extraire le contenu du contenu HTML à l'aide de l'IA en fournissant une invite en langage naturel.",
"Convert any webpage into clean, readable Markdown format.": "Convertissez n'importe quelle page Web au format propre et lisible Markdown.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Website URL": "URL du site web",
"Extraction Prompt": "Proposition d'extraction",
"Output Schema": "Schéma de sortie",
"HTML Content": "Contenu HTML",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
"The webpage URL to scrape.": "L'URL de la page Web à explorer.",
"Describe what information you want to extract in natural language.": "Décrivez quelles informations vous voulez extraire en langage naturel.",
"Optional schema to structure the output data.": "Schéma facultatif pour structurer les données de sortie.",
"The HTML content to process (max 2MB).": "Le contenu HTML à traiter (max 2MB).",
"The webpage URL to convert to Markdown": "L'URL de la page Web à convertir en Markdown",
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "AI駆動のWebスクレイピングとコンテンツ抽出。",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Smart Scraper": "スマートスクレーパー",
"Local Scraper": "ローカルスクレーパー",
"Convert to Markdown": "マークダウンに変換",
"Custom API Call": "カスタムAPI通話",
"Extract content from a webpage using AI by providing a natural language prompt.": "自然言語プロンプトを提供することにより、AIを使用してWebページからコンテンツを抽出する。",
"Extract content from HTML content using AI by providing a natural language prompt.": "自然言語プロンプトを提供することにより、AIを使用してHTMLコンテンツからコンテンツを抽出する。",
"Convert any webpage into clean, readable Markdown format.": "任意のWebページをきれいで読みやすいMarkdown形式に変換します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Website URL": "Website URL",
"Extraction Prompt": "Extraction Prompt",
"Output Schema": "出力スキーマ",
"HTML Content": "HTML コンテンツ",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The webpage URL to scrape.": "スクレイプするウェブページのURL。",
"Describe what information you want to extract in natural language.": "自然言語で抽出したい情報を説明します。",
"Optional schema to structure the output data.": "出力データを構造化するオプションのスキーマ。",
"The HTML content to process (max 2MB).": "処理する HTML コンテンツ (最大 2MB)",
"The webpage URL to convert to Markdown": "Markdownに変換するウェブページのURL",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "Webscraping en content extractie aangedreven door AI-kracht.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nVolg deze stappen om uw ScrapeGraphAI API-sleutel te verkrijgen:\n\n1. Bezoek [ScrapeGraphAI](https://scrapegraphai.com) en maak een account aan.\n2. Log in en navigeer naar uw dashboard.\n3. Zoek en kopieer uw API-sleutel vanuit het dashboard.\n",
"Smart Scraper": "Slimme schroot",
"Local Scraper": "Lokale Schrader",
"Convert to Markdown": "Converteren naar Markdown",
"Custom API Call": "Custom API Call",
"Extract content from a webpage using AI by providing a natural language prompt.": "Haal inhoud van een webpagina uit met behulp van AI door een natuurlijke taalprompte aan te bieden.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Haal inhoud uit HTML met behulp van AI uit door een natuurlijke taalprompte te bieden.",
"Convert any webpage into clean, readable Markdown format.": "Zet elke webpagina om in schone, leesbare Markdown formaat.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Website URL": "Website URL",
"Extraction Prompt": "Extractie Prompt",
"Output Schema": "Uitvoer Schema",
"HTML Content": "HTML inhoud",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Body": "Lichaam",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"The webpage URL to scrape.": "De URL van de webpagina om te scrapen.",
"Describe what information you want to extract in natural language.": "Beschrijf welke informatie u in de natuurlijke taal wilt extraheren.",
"Optional schema to structure the output data.": "Optioneel schema om de output data te structureren.",
"The HTML content to process (max 2MB).": "De te verwerken HTML-inhoud (max 2MB).",
"The webpage URL to convert to Markdown": "De webpagina URL om te converteren naar Markdown",
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "Remoção de conteúdo e remoção de conteúdo com tecnologia AI.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nSiga estes passos para obter sua Chave de API ScrapeGraphAI:\n\n1. Visite [ScrapeGraphAI](https://scrapegraphai.com) e crie uma conta.\n2. Inicie sessão e navegue para o seu painel.\n3. Localize e copie sua chave de API a partir do painel de controle.\n",
"Smart Scraper": "Scraper Inteligente",
"Local Scraper": "Scraper local",
"Convert to Markdown": "Converter para Markdown",
"Custom API Call": "Chamada de API personalizada",
"Extract content from a webpage using AI by providing a natural language prompt.": "Extraia conteúdo de uma página da web usando a IA fornecendo um prompt de linguagem natural.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Extraia conteúdo de conteúdo HTML usando a IA fornecendo um prompt de linguagem natural.",
"Convert any webpage into clean, readable Markdown format.": "Converta qualquer página web em formato Markdown limpo e legível.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Website URL": "URL do site",
"Extraction Prompt": "Solicitação de extração",
"Output Schema": "Esquema de saída",
"HTML Content": "Conteúdo HTML",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Body": "Conteúdo",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"The webpage URL to scrape.": "A URL da página web para scrape.",
"Describe what information you want to extract in natural language.": "Descreva que informações você deseja extrair na língua natural.",
"Optional schema to structure the output data.": "Esquema opcional para estruturar os dados de saída.",
"The HTML content to process (max 2MB).": "O conteúdo HTML a processar (máx. 2MB).",
"The webpage URL to convert to Markdown": "O URL da página da Web para converter para Markdown",
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,35 @@
{
"ScrapeGraphAI": "ScrapeGraphAI",
"AI-powered web scraping and content extraction.": "Поддерживаемый AI веб-архив и распаковка контента.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Smart Scraper": "Умный скрепер",
"Local Scraper": "Локальный Scraper",
"Convert to Markdown": "Преобразовать в Markdown",
"Custom API Call": "Пользовательский вызов API",
"Extract content from a webpage using AI by providing a natural language prompt.": "Извлечь содержимое веб-страницы с помощью ИИ путем естественного языкового подсказки.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Извлечь содержимое из HTML с помощью AI, предоставляя естественную языковую подсказку.",
"Convert any webpage into clean, readable Markdown format.": "Конвертируйте любую веб-страницу в чистый, читаемый формат Markdown .",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Website URL": "URL сайта",
"Extraction Prompt": "Подсказка к извлечению",
"Output Schema": "Схема вывода",
"HTML Content": "Содержимое HTML",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The webpage URL to scrape.": "URL веб-страницы для scrape.",
"Describe what information you want to extract in natural language.": "Опишите, какую информацию вы хотите извлечь на естественном языке.",
"Optional schema to structure the output data.": "Необязательная схема структурирования выходных данных.",
"The HTML content to process (max 2MB).": "Содержимое HTML для обработки (макс. 2MB).",
"The webpage URL to convert to Markdown": "URL веб-страницы для преобразования в Markdown",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "AI-powered web scraping and content extraction.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Smart Scraper": "Smart Scraper",
"Local Scraper": "Local Scraper",
"Convert to Markdown": "Convert to Markdown",
"Custom API Call": "Custom API Call",
"Extract content from a webpage using AI by providing a natural language prompt.": "Extract content from a webpage using AI by providing a natural language prompt.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Extract content from HTML content using AI by providing a natural language prompt.",
"Convert any webpage into clean, readable Markdown format.": "Convert any webpage into clean, readable Markdown format.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Website URL": "Website URL",
"Extraction Prompt": "Extraction Prompt",
"Output Schema": "Output Schema",
"HTML Content": "HTML Content",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The webpage URL to scrape.": "The webpage URL to scrape.",
"Describe what information you want to extract in natural language.": "Describe what information you want to extract in natural language.",
"Optional schema to structure the output data.": "Optional schema to structure the output data.",
"The HTML content to process (max 2MB).": "The HTML content to process (max 2MB).",
"The webpage URL to convert to Markdown": "The webpage URL to convert to Markdown",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,35 @@
{
"ScrapeGraphAI": "ScrapeGraphAI",
"AI-powered web scraping and content extraction.": "AI-powered web scraping and content extraction.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Smart Scraper": "Smart Scraper",
"Local Scraper": "Local Scraper",
"Convert to Markdown": "Convert to Markdown",
"Custom API Call": "Custom API Call",
"Extract content from a webpage using AI by providing a natural language prompt.": "Extract content from a webpage using AI by providing a natural language prompt.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Extract content from HTML content using AI by providing a natural language prompt.",
"Convert any webpage into clean, readable Markdown format.": "Convert any webpage into clean, readable Markdown format.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Website URL": "Website URL",
"Extraction Prompt": "Extraction Prompt",
"Output Schema": "Output Schema",
"HTML Content": "HTML Content",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The webpage URL to scrape.": "The webpage URL to scrape.",
"Describe what information you want to extract in natural language.": "Describe what information you want to extract in natural language.",
"Optional schema to structure the output data.": "Optional schema to structure the output data.",
"The HTML content to process (max 2MB).": "The HTML content to process (max 2MB).",
"The webpage URL to convert to Markdown": "The webpage URL to convert to Markdown",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,36 @@
{
"AI-powered web scraping and content extraction.": "AI-powered web scraping and content extraction.",
"\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your ScrapeGraphAI API Key:\n\n1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Smart Scraper": "Smart Scraper",
"Local Scraper": "Local Scraper",
"Convert to Markdown": "Convert to Markdown",
"Custom API Call": "自定义 API 呼叫",
"Extract content from a webpage using AI by providing a natural language prompt.": "Extract content from a webpage using AI by providing a natural language prompt.",
"Extract content from HTML content using AI by providing a natural language prompt.": "Extract content from HTML content using AI by providing a natural language prompt.",
"Convert any webpage into clean, readable Markdown format.": "Convert any webpage into clean, readable Markdown format.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Website URL": "Website URL",
"Extraction Prompt": "Extraction Prompt",
"Output Schema": "Output Schema",
"HTML Content": "HTML Content",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The webpage URL to scrape.": "The webpage URL to scrape.",
"Describe what information you want to extract in natural language.": "Describe what information you want to extract in natural language.",
"Optional schema to structure the output data.": "Optional schema to structure the output data.",
"The HTML content to process (max 2MB).": "The HTML content to process (max 2MB).",
"The webpage URL to convert to Markdown": "The webpage URL to convert to Markdown",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,68 @@
import { createCustomApiCallAction, httpClient, HttpMethod } from '@activepieces/pieces-common';
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { smartScraper } from './lib/actions/smart-scraper';
import { localScraper } from './lib/actions/local-scraper';
import { markdownify } from './lib/actions/markdownify';
const markdownDescription = `
Follow these steps to obtain your ScrapeGraphAI API Key:
1. Visit [ScrapeGraphAI](https://scrapegraphai.com) and create an account.
2. Log in and navigate to your dashboard.
3. Locate and copy your API key from the dashboard.
`;
export const scrapegraphaiAuth = PieceAuth.SecretText({
description: markdownDescription,
displayName: 'API Key',
required: true,
validate: async ({ auth }) => {
try {
await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.scrapegraphai.com/v1/smartscraper',
headers: {
'Content-Type': 'application/json',
'SGAI-APIKEY': auth,
},
body: {
user_prompt: 'test',
website_url: 'https://www.example.com',
},
});
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid API Key',
};
}
},
});
export const scrapegraphai = createPiece({
displayName: 'ScrapeGraphAI',
description: 'AI-powered web scraping and content extraction.',
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/scrapegraphai.jpg',
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE],
authors: ["OsamaHaikal"],
auth: scrapegraphaiAuth,
actions: [
smartScraper,
localScraper,
markdownify,
createCustomApiCallAction({
baseUrl: () => 'https://api.scrapegraphai.com/v1',
auth: scrapegraphaiAuth,
authMapping: async (auth) => ({
'SGAI-APIKEY': `${auth.secret_text}`,
}),
}),
],
triggers: [],
});

View File

@@ -0,0 +1,44 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { scrapegraphaiAuth } from '../../index';
export const localScraper = createAction({
name: 'local_scraper',
displayName: 'Local Scraper',
description: 'Extract content from HTML content using AI by providing a natural language prompt.',
auth: scrapegraphaiAuth,
props: {
website_html: Property.LongText({
displayName: 'HTML Content',
description: 'The HTML content to process (max 2MB).',
required: true,
}),
user_prompt: Property.LongText({
displayName: 'Extraction Prompt',
description: 'Describe what information you want to extract in natural language.',
required: true,
}),
output_schema: Property.Json({
displayName: 'Output Schema',
description: 'Optional schema to structure the output data.',
required: false,
}),
},
async run({ auth, propsValue }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.scrapegraphai.com/v1/localscraper',
headers: {
'Content-Type': 'application/json',
'SGAI-APIKEY': auth.secret_text,
},
body: {
website_html: propsValue.website_html,
user_prompt: propsValue.user_prompt,
output_schema: propsValue.output_schema,
},
});
return response.body;
},
});

View File

@@ -0,0 +1,32 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { scrapegraphaiAuth } from '../../index';
export const markdownify = createAction({
name: 'markdownify',
displayName: 'Convert to Markdown',
description: 'Convert any webpage into clean, readable Markdown format.',
auth: scrapegraphaiAuth,
props: {
website_url: Property.ShortText({
displayName: 'Website URL',
description: 'The webpage URL to convert to Markdown',
required: true,
}),
},
async run({ auth, propsValue }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.scrapegraphai.com/v1/markdownify',
headers: {
'Content-Type': 'application/json',
'SGAI-APIKEY': auth.secret_text,
},
body: {
website_url: propsValue.website_url,
},
});
return response.body;
},
});

View File

@@ -0,0 +1,44 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { scrapegraphaiAuth } from '../../index';
export const smartScraper = createAction({
name: 'smart_scraper',
displayName: 'Smart Scraper',
description: 'Extract content from a webpage using AI by providing a natural language prompt.',
auth: scrapegraphaiAuth,
props: {
website_url: Property.ShortText({
displayName: 'Website URL',
description: 'The webpage URL to scrape.',
required: true,
}),
user_prompt: Property.LongText({
displayName: 'Extraction Prompt',
description: 'Describe what information you want to extract in natural language.',
required: true,
}),
output_schema: Property.Json({
displayName: 'Output Schema',
description: 'Optional schema to structure the output data.',
required: false,
}),
},
async run({ auth, propsValue }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.scrapegraphai.com/v1/smartscraper',
headers: {
'Content-Type': 'application/json',
'SGAI-APIKEY': auth.secret_text,
},
body: {
website_url: propsValue.website_url,
user_prompt: propsValue.user_prompt,
output_schema: propsValue.output_schema,
},
});
return response.body;
},
});

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}