apify tool, tools API + automation UI, integrations config, super admin restrictions
- apify tool: TOOL.md definition, index.ts implementation with auto-auth via OFFICER_APIFY_TOKEN, output_path for large datasets - tools API: /tools routes (list, detail, chat, create, delete) mirroring tasks pattern - automation UI: tools tab in sidebar, NewTool component, tool detail view - apify integration: settings page for enterprise API key config, pi-bridge passes env var to containers - tiktok-trends task: rewritten as agent instructions using apify tool with output_path, scripted report generation for 50KB read limit - restrict edit/delete of native/global capabilities to Super Admin only (backend + frontend) - tools authoring guide: TOOLS.md with full spec for TOOL.md frontmatter, index.ts execute signature, patterns Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
---
|
||||
name: apify
|
||||
label: Apify
|
||||
version: 4
|
||||
description: Run any Apify actor and return its dataset results. Use for web scraping, data extraction, and automation — TikTok, Twitter, Facebook, Instagram, YouTube, Google, and hundreds more. Authentication is handled automatically when configured in Settings → Integrations.
|
||||
language: typescript
|
||||
inputs:
|
||||
actor_id:
|
||||
type: string
|
||||
description: "Actor ID to run (format: owner~actor-name or owner/actor-name, e.g. 'novi~fast-tiktok-scraper', 'apify/twitter-scraper')"
|
||||
input:
|
||||
type: object
|
||||
description: Actor-specific input parameters as a JSON object (varies per actor)
|
||||
optional: true
|
||||
output_path:
|
||||
type: string
|
||||
description: File path to save JSON results to. When provided, the tool writes the dataset to this file and returns a summary instead of the raw JSON. Recommended for large datasets to avoid flooding the context.
|
||||
optional: true
|
||||
api_token:
|
||||
type: string
|
||||
description: Override the configured API token. Usually not needed — the token is provided automatically from Settings → Integrations → Apify.
|
||||
optional: true
|
||||
sensitive: true
|
||||
timeout_ms:
|
||||
type: number
|
||||
description: Max time to wait for actor completion in milliseconds (default 300000 = 5 min)
|
||||
optional: true
|
||||
poll_interval_ms:
|
||||
type: number
|
||||
description: How often to check run status in milliseconds (default 3000)
|
||||
optional: true
|
||||
---
|
||||
|
||||
# Apify
|
||||
|
||||
Run any actor from the Apify Store, wait for completion, and return the dataset items as JSON.
|
||||
|
||||
## Authentication
|
||||
|
||||
The API token is resolved automatically:
|
||||
1. `api_token` input parameter (explicit override)
|
||||
2. `OFFICER_APIFY_TOKEN` environment variable (set automatically when configured in Settings → Integrations → Apify)
|
||||
|
||||
If neither is available, the tool returns an error prompting the user to configure the integration.
|
||||
|
||||
## Usage
|
||||
|
||||
Just provide the `actor_id` and optional `input`:
|
||||
```
|
||||
apify(actor_id: "novi~fast-tiktok-scraper", input: { type: "TREND", region: "PT", maxItems: 20 })
|
||||
```
|
||||
|
||||
The tool starts the actor, polls until completion, fetches the dataset, and returns all items as JSON.
|
||||
|
||||
## Common Actors
|
||||
|
||||
| Actor | ID | Input example |
|
||||
|-------|----|---------------|
|
||||
| TikTok Scraper | `novi~fast-tiktok-scraper` | `{ type: 'TREND', region: 'US', maxItems: 20 }` |
|
||||
| Twitter Scraper | `apify/twitter-scraper` | `{ searchTerms: ['#ai'], tweetsCount: 100 }` |
|
||||
| Twitter User | `jupri/twitter-user-scraper` | `{ twitterUser: 'username', maxPosts: 50 }` |
|
||||
| Facebook Scraper | `apify/facebook-scraper` | `{ startUrls: ['https://facebook.com/Page'], maxPostsPerPage: 50 }` |
|
||||
| Facebook Search | `jupri/facebook-search-scraper` | `{ searchTerm: 'keyword', maxPosts: 30 }` |
|
||||
| Instagram Hashtag | `apify/instagram-hashtag-scraper` | `{ hashtags: ['travel'], resultsLimit: 50 }` |
|
||||
| Instagram User | `apify/instagram-user-scraper` | `{ usernames: ['natgeo'], resultsLimit: 50 }` |
|
||||
| YouTube Scraper | `apify/youtube-scraper` | `{ searchTerms: ['tutorial'], maxResults: 20 }` |
|
||||
| Google Search | `apify/google-search-scraper` | `{ queries: ['best restaurants lisbon'] }` |
|
||||
|
||||
## Error Handling
|
||||
|
||||
The tool returns clear error messages for:
|
||||
- Missing API token → "Configure it in Settings → Integrations → Apify"
|
||||
- API errors (401, 403, etc.) → includes the HTTP status and response body
|
||||
- Actor failures → includes the actor's `statusMessage`
|
||||
- Timeouts → reports the run ID and last known status
|
||||
|
||||
## Notes
|
||||
|
||||
- Actor IDs use `~` (Apify URL format) or `/` — both work
|
||||
- Browse actors at https://apify.com/store
|
||||
- Monitor usage and credits at https://console.apify.com/billing
|
||||
Reference in New Issue
Block a user