Installation &amp; setup | laravel-url-ai-transformer | Spatie       

 SPATIE  

  Laravel URL AI Transformer 
=============================

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-url-ai-transformer](https://spatie.be/docs/laravel-url-ai-transformer/v2)  Installation &amp; setup

 Version   v2   v1      

 Other versions for crawler [v2](https://spatie.be/docs/laravel-url-ai-transformer/v2) [v1](https://spatie.be/docs/laravel-url-ai-transformer/v1) 

  Installation &amp; setup    
- [ Introduction ](https://spatie.be/docs/laravel-url-ai-transformer/v2/introduction)
- [ Support us ](https://spatie.be/docs/laravel-url-ai-transformer/v2/support-us)
- [ Installation &amp; setup ](https://spatie.be/docs/laravel-url-ai-transformer/v2/installation-setup)
- [ Questions and issues ](https://spatie.be/docs/laravel-url-ai-transformer/v2/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-url-ai-transformer/v2/changelog)
- [ About us ](https://spatie.be/docs/laravel-url-ai-transformer/v2/about-us)

Basic usage
-----------

- [ Getting started ](https://spatie.be/docs/laravel-url-ai-transformer/v2/basic-usage/getting-started)
- [ Registering transformations ](https://spatie.be/docs/laravel-url-ai-transformer/v2/basic-usage/registering-transformations)
- [ Writing your own transformers ](https://spatie.be/docs/laravel-url-ai-transformer/v2/basic-usage/writing-your-own-transformers)

Advanced usage
--------------

- [ Structured output ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/structured-output)
- [ Customizing AI models ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/customizing-ai-models)
- [ Customizing the stored result ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/customizing-the-result)
- [ Conditional transformations ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/conditional-transformations)
- [ Crawling URLs ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/crawling-urls)
- [ Exploring command options ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/exploring-command-options)
- [ Regenerating results ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/regenerating-results)
- [ Handling failures ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/handling-failures)
- [ Listening for events ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/events)
- [ Using your own model ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/using-your-own-model)
- [ Customizing the job ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/customizing-the-job)
- [ Overriding actions ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/overriding-actions)
- [ Testing transformers ](https://spatie.be/docs/laravel-url-ai-transformer/v2/advanced-usage/testing-transformers)

 Installation &amp; setup
========================

###  On this page 

1. [ Publishing the config file ](#content-publishing-the-config-file)
2. [ Migrating the database ](#content-migrating-the-database)
3. [ Configuring AI providers ](#content-configuring-ai-providers)

You can install the package via composer:

```
composer require spatie/laravel-url-ai-transformer
```

Upgrading from v1? Follow the [upgrade guide](https://github.com/spatie/laravel-url-ai-transformer/blob/main/UPGRADE.md) before updating the package.

Publishing the config file
--------------------------------------------------------------------------------------------------------------------------------------

Optionally, you can publish the config file with this command:

```
php artisan vendor:publish --tag="url-ai-transformer-config"
```

This is the content of the published config file:

```
return [
    /*
     * The default AI provider and model that transformers use. The model may be
     * a plain string, or Model::Cheapest / Model::Smartest.
     *
     * Transformers can override these defaults. Learn how in the docs:
     * https://spatie.be/docs/laravel-url-ai-transformer/advanced-usage/customizing-ai-models
     */
    'ai' => [
        'provider' => Laravel\Ai\Enums\Lab::OpenAI,
        'model' => Spatie\LaravelUrlAiTransformer\Enums\Model::Cheapest,
    ],

    /*
     * The model that will be used to store the transformation results.
     *
     * You can use your own model by extending the default model.
     */
    'model' => Spatie\LaravelUrlAiTransformer\Models\TransformationResult::class,

    /*
     * The actions that will perform low-level operations of the package.
     *
     * You can extend the default actions and specify your own actions here
     * to customize the package's behavior.
     */
    'actions' => [
        'fetch_url_content' => Spatie\LaravelUrlAiTransformer\Actions\FetchUrlContentAction::class,
        'prepare_url_content' => Spatie\LaravelUrlAiTransformer\Actions\PrepareUrlContentAction::class,
        'process_registration' => Spatie\LaravelUrlAiTransformer\Actions\ProcessRegistrationAction::class,
    ],

    /*
     * The job that will process transformations in the background.
     *
     * You can extend the default job and specify your own job here
     * to customize the package's behavior.
     */
    'process_transformer_job' => Spatie\LaravelUrlAiTransformer\Jobs\ProcessTransformerJob::class,
];
```

Migrating the database
--------------------------------------------------------------------------------------------------------------------------

This package stores transformation results in the database. To create the `transformation_results` table, you must publish and run the migration.

```
php artisan vendor:publish --tag="url-ai-transformer-migrations"
php artisan migrate
```

Configuring AI providers
--------------------------------------------------------------------------------------------------------------------------------

This package uses the official [Laravel AI](https://github.com/laravel/ai) package under the hood to interact with various AI services. It provides a unified interface for working with different AI providers.

By default, the package is configured to use OpenAI. To get started, you'll need to add your OpenAI API key to your `.env` file:

```
OPENAI_API_KEY=your-api-key-here
```

### Using different AI providers

Laravel AI supports multiple providers including OpenAI, Anthropic Claude, Google Gemini, and more. Providers are represented by the `Laravel\Ai\Enums\Lab` enum. You can switch providers by updating the config file:

```
'ai' => [
    'provider' => Laravel\Ai\Enums\Lab::Anthropic,
    'model' => 'claude-haiku-4-5-20251001',
],
```

Don't forget to add the corresponding API key to your `.env` file:

```
# For Anthropic Claude
ANTHROPIC_API_KEY=your-api-key-here

# For Google Gemini
GEMINI_API_KEY=your-api-key-here
```

For more information about configuring providers, check out the [Laravel AI documentation](https://github.com/laravel/ai).

 A good
match?
-------------

### What we do best

- All things Laravel
- Custom frontend components
- Building APIs
- AI-powered features
- Simplifying things
- Clean solutions
- Integrating services

### Not our cup of tea

- WordPress themes
- Cutting corners
- Free mockups to win a job
- "Just execute the briefing"

 In short: we'd like to be a **substantial part** of your project.

 [ Get in touch via email ](mailto:info@spatie.be?subject=A%20good%20match%21&body=Tell%20us%20as%20much%20as%20you%20can%20about%0A-%20your%20online%20project%0A-%20your%20planning%0A-%20your%20budget%0A-%20%E2%80%A6%0A%0AAnything%20that%20helps%20us%20to%20start%20straightforward%21)
