adobe-ps-scripts-loreal/README.md
DJP 4a192a8c97 Initial commit: Adobe Photoshop API text management scripts
Local and cloud-based workflows for extracting and updating
text layers in PSD files via ExtendScript and Adobe PS API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 13:46:52 -05:00

5.5 KiB

Adobe Photoshop Text Layer Management

This repository contains tools for interacting with Adobe Photoshop files using both local scripts and the Adobe Photoshop API.

Current Status (April 22, 2025)

API Integration Status

We have successfully implemented the Adobe Photoshop API integration with the following components:

  • Authentication: Using client credentials to obtain OAuth tokens
  • External Storage: Google Cloud Storage for file uploads and downloads
  • API Endpoint Integration: Correct Adobe API endpoints identified and integrated
  • Asynchronous Processing: Status URL monitoring and file download
  • Text Updating: Successfully updating text content using layer names (note: uses default font)

Recent Fixes and Improvements

  1. Fixed API Text Layer Updates:

    • Layer name-based identification is now working
    • Text content updates successfully
    • Output files are properly saved and named
    • Temporary files are automatically cleaned up
  2. File Management:

    • Output files now use clear naming with api_updated_ prefix
    • Files are saved in the same directory as the original
    • Google Cloud Storage temporary files are automatically deleted
  3. Known Limitation:

    • The API uses Arial font instead of preserving the original font
    • All other aspects (content, line breaks) are properly updated

See API-UPDATE-FIX.md for detailed information about the fixes.

Using the Adobe API Text Update Tools

Single File Update

To update a single PSD file using the API:

python simplified_payload.py /path/to/your-textonly.json /path/to/your.psd

This will:

  1. Upload the PSD to Google Cloud Storage
  2. Make the API request to update text layers
  3. Download the processed file with the api_updated_ prefix
  4. Clean up temporary files in Google Cloud Storage

Batch Processing

To process multiple files at once:

python update_text_with_api.py --directory /path/to/directory

This will:

  1. Find all JSON files with text layer data in the directory
  2. Process each file and its corresponding PSD
  3. Save updated files in the same location as originals with api_updated_ prefix

File Organization

  • Input Files:

    • PSD files: Original Photoshop files
    • JSON files: Text content data extracted from PSDs
  • Output Files:

    • Output files are saved in the same directory as the originals
    • Files are named with api_updated_ prefix (e.g., api_updated_your_file.psd)
    • No nested directories are created

Text Content Format

The JSON files should contain text layer data in this format:

{
  "documentName": "your_file.psd",
  "psdPath": "/path/to/your_file.psd",
  "textLayers": [
    {
      "name": "Layer Name",
      "text": "Original text",
      "updatedText": "New text content"
    }
  ]
}

The updatedText field is used for the new content.

Other Available Options

Local Script Workflow (Font Preservation)

If you need to preserve font styling exactly:

  1. Extract text from PSD files using the local scripts:

    python mac_ps_extract.py /path/to/psd_files -o /path/to/output_dir
    
  2. Edit the extracted JSON files

  3. Update text using local scripts:

    python mac_ps_update.py /path/to/json_files -p /path/to/psd_files --save
    

Direct ExtendScript (Alternative)

For direct text updates without Python:

  1. Open the PSD file in Photoshop
  2. Run ExtractTextWithBreaks.jsx to extract text
  3. Edit the JSON file
  4. Run updateTextLayers.jsx to apply the changes

Adobe API Integration Details

The Adobe Photoshop API integration follows these steps:

  1. Upload PSD file to Google Cloud Storage
  2. Generate signed URLs for input and output files
  3. Send API request to https://image.adobe.io/pie/psdService/text
  4. Monitor processing status via the status URL
  5. Download the processed file when complete

Authentication

To authenticate with Adobe APIs:

  1. Use the client credentials provided by Adobe
  2. Set the correct scope:
    • Photoshop API: openid,AdobeID,read_organizations
    • Firefly API: openid,AdobeID,firefly_api,ff_apis

Tokens can be generated using:

python adobe_ps_api.py generate-token --client-secret YOUR_CLIENT_SECRET

API Commands

# Test connectivity to API endpoints
python adobe_ps_api.py test-api

# Test text edit functionality
python adobe_ps_api.py test-text-edit

# Test Google Cloud Storage upload
python adobe_ps_api.py test-gcs /path/to/file.psd

# Update text (dry run)
python adobe_ps_api.py update-text /path/to/file.json --dry-run

# Update text with API
python adobe_ps_api.py update-text /path/to/file.json

Troubleshooting

API Issues

  • Font Changes: The API currently replaces fonts with Arial. Use local scripts if font preservation is essential.
  • Authentication Errors: Check client credentials and token expiration.
  • File Not Found: Ensure paths are correct and files exist.
  • Failed Downloads: Check GCS permissions and bucket configuration.

Local Script Issues

  • If layers aren't being found, ensure layer names match exactly
  • If JSON parsing fails, check for valid JSON syntax
  • For more details, see the troubleshooting section in the script headers

Documentation

For more detailed information, see: