Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 19 additions & 5 deletions .github/styles/Apify/Apify.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,24 @@
extends: substitution
message: "Use '%s' instead of '%s'."
ignorecase: false
ignorecase: true
level: warning
scope: text
swap:
Apify Dashboard: Apify Console
apify freelancers: Apify freelancers
Apify Platform: Apify platform
'(?:[Tt]he\s)?[Aa]pify\sproxy': Apify Proxy
# Product name changes
'apify dashboard': Apify Console
'apify console': Apify Console
'apify store': Apify Store
'the apify console': Apify Console
'the apify store': Apify Store

# Capitalization fixes
'apify freelancers': Apify freelancers
'apify platform': Apify platform

# Proxy variations (simplified)
'apify proxy': Apify Proxy
'the apify proxy': Apify Proxy

# Common abbreviations
circa: approx.
'ca\.': circa
12 changes: 7 additions & 5 deletions .github/styles/Apify/Capitalization.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
extends: existence
message: "The word '%s' should always be capitalized."
extends: substitution
message: "Use '%s' instead of '%s'."
ignorecase: false
level: error
tokens:
- '\bactor\b'
- '\bactors\b'
nonword: true
scope: text,~alt,~code
swap:
'\bactor\b': Actor
'\bactors\b': Actors
7 changes: 4 additions & 3 deletions .github/styles/config/vocabularies/Docs/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ node_modules
SDK
Dockerfile
Docker's
CAPTCHAs

Docusaurus
navbar
Expand Down Expand Up @@ -67,7 +68,7 @@ exploitability
[Ww]hitepaper
[Cc]ron
scalably
metamorph
[Mm]etamorph
hostname
IPs
unscoped
Expand All @@ -89,8 +90,8 @@ preconfigured
devs
asyncio
backlinks?
captchas?
Chatbot


combinator
deduplicating
dev
Expand Down
9 changes: 2 additions & 7 deletions .vale.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
StylesPath = .github/styles
MinAlertLevel = warning
IgnoredScopes = code, tt, table, tr, td, frontmatter, link, alt
IgnoredScopes = code, tt, table, tr, td, frontmatter, link, alt, heading

Vocab = Docs

Expand All @@ -12,7 +12,7 @@ mdx = md
[*.md]
BasedOnStyles = Vale, Apify, write-good, Microsoft
# Ignore URLs, HTML/XML tags, lines with =, emails, curly braces, inline code
TokenIgnores = (<\/?[A-Z][^>]*>), ([^\n]+=[^\n]*), ([^\n]+@[^\n]+\.[^\n]), ({[^}]*})
TokenIgnores = (<\/?[A-Z][^>]*>), ([^\n]+@[^\n]+\.[^\n]), ({[^}]*})
# Ignore HTML comments and Markdown code blocks
BlockIgnores = (?s) (<!--.*?-->)|(```.*?```)

Expand All @@ -25,14 +25,9 @@ Microsoft.Contractions = NO
Microsoft.Foreign = NO
Microsoft.We = NO
Microsoft.Quotes = NO
Microsoft.ThereIs = NO
Microsoft.Auto = NO
Microsoft.URLFormat = NO
Microsoft.GeneralURL = NO
Microsoft.RangeFormat = NO
Apify.Apify = NO
Apify.Capitalization = NO
Apify.Languages = NO

[{README.md,CONTRIBUTING.md}]
Apify.H1 = NO
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ This section explains the various sources types available for Apify Actors and h

This is the default option when your Actor's source code is hosted on the Apify platform. It offers quick previews and updates to your source code, easy file and directory browsing, and direct testing of the [`INPUT_SCHEMA.json`](/platform/actors/development/actor-definition/input-schema) on the Apify platform.

A `Dockerfile` is mandatory for all Actors. When using the default NodeJS Dockerfile, you'll typically need `main.js` for your source code and `package.json` for [NPM](https://www.npmjs.com/) package configurations.
A `Dockerfile` is mandatory for all Actors. When using the default NodeJS Dockerfile, you'll typically need `main.js` for your source code and `package.json` for [npm](https://www.npmjs.com/) package configurations.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to add NPM to npm also to the swap rules?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to try one more package once I deal with those rules and another PR with fixes to almost everything except H1's in Academy called Openly. I think it deals with a lot of those tech terms, might even lead to simplifying accept.txt


For more information on creating custom Dockerfiles or using Apify's base images, refer to the [Dockerfile](/platform/actors/development/actor-definition/dockerfile#custom-dockerfile) and [base Docker images](/platform/actors/development/actor-definition/dockerfile#base-docker-images) documentation.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ Here's a table of key system environment variables:
| `ACTOR_WEB_SERVER_PORT` | TCP port for the Actor to start an HTTP server on. This server can be used to receive external messages or expose monitoring and control interfaces. The server also receives messages from the [Actor Standby](/platform/actors/development/programming-interface/standby) mode. |
| `ACTOR_WEB_SERVER_URL` | Unique public URL for accessing the Actor run web server from the outside world. |
| `APIFY_API_PUBLIC_BASE_URL` | Public URL of the Apify API. May be used to interact with the platform programmatically. Typically set to `api.apify.com`. |
| `APIFY_DEDICATED_CPUS` | Number of CPU cores reserved for the actor, based on allocated memory. |
| `APIFY_DEDICATED_CPUS` | Number of CPU cores reserved for the Actor, based on allocated memory. |
| `APIFY_WORKFLOW_KEY` | Identifier used for grouping related runs and API calls together. |
| `APIFY_META_ORIGIN` | Specifies how an Actor run was started. Possible values are in [Runs and builds](/platform/actors/running/runs-and-builds#origin) documentation. |
| `APIFY_INPUT_SECRETS_KEY_FILE` | Path to the secret key used to decrypt [Secret inputs](/platform/actors/development/actor-definition/input-schema/secret-input). |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Metamorph is a powerful operation that transforms an Actor run into the run of a

## Understand metamorph

The metamorph process involves several key steps. It stops the current Actor's Docker container, then starts a new container using a different Docker image. During this transition, all default storages are preserved. The new input is stored under the _INPUT-METAMORPH-1_ key in the default key-value store, ensuring seamless data transfer between Actor runs.
The metamorph process involves several key steps. It stops the current Actor's Docker container, then starts a new container using a different Docker image. During this transition, all default storages are preserved. The new input is stored under the `INPUT-METAMORPH-1` key in the default key-value store, ensuring seamless data transfer between Actor runs.

## Benefits of metamorph

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,12 @@ In the next step, we’ll explore the results in more detail.
### Step 3: Explore the Actor

Let's explore the Actor structure.

<!-- vale Apify.Capitalization = NO -->
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I imagine there are multiple occurrences (or multiple occurrences can happen) of the .actors folder. Would it make sense to define the swap rule as:
actor/ actors Actor/Actors
.actor.actor
I.e., with the leading space. Because I cannot see a situation where Actor would be used without a space before itself.

But it's true that it doesn't solve actor.json.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

technically Vale should ignore prose in inline code done with backticks and for the 95% it does... until it doesn't thus this ugly hack

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and even more so, it should ignore things in headings... but for some god forsaken reason it didn't here

#### The `.actor` folder


The `.actor` folder contains the Actor configuration. The `actor.json` file defines the Actor's name, description, and other settings. Find more info in the [actor.json](https://docs.apify.com/platform/actors/development/actor-definition/actor-json) definition.
<!-- vale Apify.Capitalization = YES -->

#### Actor's `input`

Expand Down
2 changes: 1 addition & 1 deletion sources/platform/actors/running/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ sidebar_label: Tasks

---

Actor tasks let you create multiple reusable configurations of a single Actor, adapted for specific use cases. For example, you can create one [_Web Scraper_](https://apify.com/apify/web-scraper) configuration (task) that scrapes the latest reviews from imdb.com, another that scrapes nike.com for the latest sneakers, and a third that scrapes your competitor's e-shop. You can then use and reuse these configurations directly from [Apify Console](https://console.apify.com/actors/tasks), [Schedules](../../schedules.md), or [API](/api/v2/actor-task-runs-post).
Actor tasks let you create multiple reusable configurations of a single Actor, adapted for specific use cases. For example, you can create one [_Web Scraper_](https://apify.com/apify/web-scraper) configuration (task) that scrapes the latest reviews from [IMDb](https://www.imdb.com/), another that scrapes nike.com for the latest sneakers, and a third that scrapes your competitor's e-shop. You can then use and reuse these configurations directly from [Apify Console](https://console.apify.com/actors/tasks), [Schedules](../../schedules.md), or [API](/api/v2/actor-task-runs-post).

You can find all your tasks in the [Apify Console](https://console.apify.com/actors/tasks).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ Use this URL as the Apify webhook target. Configure the webhook's authentication
1. Notify Bubble when the run finishes
- Create an Apify **Webhook** with event `ACTOR.RUN.SUCCEEDED`.
- Set `actorId` from the Step 1 result.
- Set `databaseId` from the Step 1 result, where actor will store the result.
- Set `databaseId` from the Step 1 result, where Actor will store the result.
- Set `idempotencyKey` to random value.
- Set `requestUrl` to your Bubble backend workflow URL, for example: `https://your-app.bubbleapps.io/version-test/api/1.1/wf/webhook`.
- ![Create a webhook](../images/bubble/step2_scraping.png)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Search, extract, and enrich business data from Google Maps in Gumloop.

The Gumloop Google Maps integration provides a native interface for running Apify’s Google Maps scrapers directly in your workflows. No API keys or manual polling required. All you need is a Gumloop account.

Using the Gumloop Google Maps MCP node, you can simply prompt the location data you need and Gumloop will retrieve it from relevant Apify actors. From there, you can connect it to your favorite tools and AI agents to process the information.
Using the Gumloop Google Maps MCP node, you can simply prompt the location data you need and Gumloop will retrieve it from relevant Apify Actors. From there, you can connect it to your favorite tools and AI agents to process the information.

## Available actions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Get TikTok hashtag videos, profile videos, followers, video details, and search
---

The Gumloop TikTok integration provides a native interface for running Apify’s TikTok scrapers directly in your workflows. No API tokens or manual polling required. All you need is a Gumloop account.
Using the Gumloop TikTok MCP node, you can simply prompt the TikTok data you need and Gumloop will retrieve it from relevant Apify actors. From there, you can connect it to your favorite tools and AI agents to process the information.
Using the Gumloop TikTok MCP node, you can simply prompt the TikTok data you need and Gumloop will retrieve it from relevant Apify Actors. From there, you can connect it to your favorite tools and AI agents to process the information.

## Available actions

Expand Down
2 changes: 1 addition & 1 deletion sources/platform/proxy/google_serp_proxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ See a [full list](https://ipfs.io/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXW

### Using the Apify SDK

If you are developing your own Apify [Actor](../actors/index.mdx) using the [Apify SDK](/sdk) and [Crawlee](https://crawlee.dev/), the most efficient way to use Google SERP proxy is [CheerioCrawler](https://crawlee.dev/api/cheerio-crawler/class/CheerioCrawler). This is because Google SERP proxy [only returns a page's HTML](./index.md). Alternatively, you can use the [got-scraping](https://github.com/apify/got-scraping) [NPM package](https://www.npmjs.com/package/got-scraping) by specifying the proxy URL in the options. For Python, you can leverage the [`requests`](https://pypi.org/project/requests/) library along with the Apify SDK.
If you are developing your own Apify [Actor](../actors/index.mdx) using the [Apify SDK](/sdk) and [Crawlee](https://crawlee.dev/), the most efficient way to use Google SERP proxy is [CheerioCrawler](https://crawlee.dev/api/cheerio-crawler/class/CheerioCrawler). This is because Google SERP proxy [only returns a page's HTML](./index.md). Alternatively, you can use the [got-scraping](https://github.com/apify/got-scraping) [npm package](https://www.npmjs.com/package/got-scraping) by specifying the proxy URL in the options. For Python, you can leverage the [`requests`](https://pypi.org/project/requests/) library along with the Apify SDK.

The following examples get a list of search results for the keyword **wikipedia** from the USA (`google.com`).

Expand Down
2 changes: 1 addition & 1 deletion sources/platform/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ To learn more about Apify's security practices, data protection measures, and co
- List of our security certifications and compliance reports
- Information about Apify's data protection controls
- List of Apify's data subprocessors
- An AI Chatbot to answer your security-related questions
- An AI chatbot to answer your security-related questions

## Security Whitepaper

Expand Down