本文へ移動
cccskills
無料GitHub で公開

adobe-install-auth

Install and configure Adobe Developer Console OAuth Server-to-Server credentials. Use when setting up a new Adobe integration, configuring API credentials, or initializing Adobe SDKs (Firefly Services, PDF Services, I/O Runtime). Trigger with phrases like "install adobe", "setup adobe", "adobe auth", "configure adobe credentials", "adobe developer console".

インストール方法を見る

含まれるファイル(2)

  • SKILL.md6.3 KB
  • source.json901 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Adobe Install & Auth

Overview

Set up Adobe Developer Console OAuth Server-to-Server credentials and install the appropriate SDK for your use case. As of January 2025, JWT (Service Account) credentials are deprecated -- all new integrations must use OAuth Server-to-Server.

Prerequisites

  • Node.js 18+ or Python 3.10+
  • Adobe Developer Console account (https://developer.adobe.com/console)
  • An Adobe organization with API access entitlements
  • Admin or Developer role in Adobe Admin Console

Instructions

Step 1: Create Project in Adobe Developer Console

  1. Go to https://developer.adobe.com/console
  2. Click Create new project > Add API
  3. Select the API you need (e.g., Firefly Services, PDF Services, Creative Cloud Libraries)
  4. Choose OAuth Server-to-Server credential type
  5. Select the product profiles to scope access
  6. Save your client_id, client_secret, and scopes

Step 2: Install the SDK for Your Use Case

# Firefly Services (Photoshop API, Lightroom API, Firefly API)
npm install @adobe/firefly-apis @adobe/photoshop-apis @adobe/lightroom-apis

# PDF Services (create, extract, convert, generate documents)
npm install @adobe/pdfservices-node-sdk

# Adobe I/O Events (webhooks, event-driven)
npm install @adobe/aio-lib-events

# Adobe I/O SDK (App Builder, Runtime actions)
npm install @adobe/aio-sdk

# Adobe I/O CLI (global install for aio commands)
npm install -g @adobe/aio-cli

# Python — PDF Services
pip install pdfservices-sdk

Step 3: Configure OAuth Server-to-Server Credentials

# .env (NEVER commit — add to .gitignore)
ADOBE_CLIENT_ID=your_client_id_from_console
ADOBE_CLIENT_SECRET=your_client_secret_from_console
ADOBE_SCOPES=openid,AdobeID,read_organizations,firefly_api,ff_apis
ADOBE_IMS_ORG_ID=your_org_id@AdobeOrg

Step 4: Generate Access Token

// src/adobe/auth.ts
import 'dotenv/config';

interface AdobeTokenResponse {
  access_token: string;
  token_type: string;
  expires_in: number; // seconds, typically 86400 (24h)
}

let cachedToken: { token: string; expiresAt: number } | null = null;

export async function getAdobeAccessToken(): Promise<string> {
  // Return cached token if still valid (with 5min buffer)
  if (cachedToken && cachedToken.expiresAt > Date.now() + 300_000) {
    return cachedToken.token;
  }

  const response = await fetch('https://ims-na1.adobelogin.com/ims/token/v3', {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: new URLSearchParams({
      client_id: process.env.ADOBE_CLIENT_ID!,
      client_secret: process.env.ADOBE_CLIENT_SECRET!,
      grant_type: 'client_credentials',
      scope: process.env.ADOBE_SCOPES!,
    }),
  });

  if (!response.ok) {
    const error = await response.text();
    throw new Error(`Adobe auth failed (${response.status}): ${error}`);
  }

  const data: AdobeTokenResponse = await response.json();
  cachedToken = {
    token: data.access_token,
    expiresAt: Date.now() + data.expires_in * 1000,
  };

  return cachedToken.token;
}

Step 5: Verify Connection

# Quick verification with curl
curl -X POST 'https://ims-na1.adobelogin.com/ims/token/v3' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d "client_id=${ADOBE_CLIENT_ID}&client_secret=${ADOBE_CLIENT_SECRET}&grant_type=client_credentials&scope=${ADOBE_SCOPES}"

Output

  • OAuth Server-to-Server credential configured in Adobe Developer Console
  • SDK packages installed in node_modules or Python site-packages
  • .env file with credentials (git-ignored)
  • Working getAdobeAccessToken() function with token caching

Error Handling

ErrorCauseSolution
invalid_clientWrong client_id or client_secretVerify credentials in Developer Console
invalid_scopeScopes not entitled to your orgCheck product profile assignments in Admin Console
401 UnauthorizedExpired or revoked credentialsRegenerate client_secret in Developer Console
ENOTFOUND ims-na1.adobelogin.comNetwork/DNS issueCheck firewall allows outbound HTTPS to *.adobelogin.com
JWT credentials deprecatedUsing old Service Account (JWT)Migrate to OAuth Server-to-Server (JWT EOL was June 2025)

Examples

PDF Services SDK Initialization

import { ServicePrincipalCredentials, PDFServices } from '@adobe/pdfservices-node-sdk';

const credentials = new ServicePrincipalCredentials({
  clientId: process.env.ADOBE_CLIENT_ID!,
  clientSecret: process.env.ADOBE_CLIENT_SECRET!,
});

const pdfServices = new PDFServices({ credentials });

Firefly Services SDK Initialization

import { FireflyClient } from '@adobe/firefly-apis';

const firefly = new FireflyClient({
  clientId: process.env.ADOBE_CLIENT_ID!,
  accessToken: await getAdobeAccessToken(),
});

Python PDF Services Setup

from adobe.pdfservices.operation.auth.service_principal_credentials import ServicePrincipalCredentials
from adobe.pdfservices.operation.pdf_services import PDFServices

credentials = ServicePrincipalCredentials(
    client_id=os.environ["ADOBE_CLIENT_ID"],
    client_secret=os.environ["ADOBE_CLIENT_SECRET"]
)
pdf_services = PDFServices(credentials=credentials)

Resources

Next Steps

After successful auth, proceed to adobe-hello-world for your first API call.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

007

無料

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Guides the creation of agile user stories and Gherkin feature files. Use when the user wants to create a user story, write acceptance criteria, define Gherkin scenarios, or author BDD feature files. This should trigger for requests such as Create a user story; Write a user story; I need to write a user story. Part of cursor-rules-java project

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Facilitates conversational discovery to create Architectural Decision Records (ADRs) for non-functional requirements using the ISO/IEC 25010:2023 quality model. Use when the user wants to document quality attributes, NFR decisions, security/performance/scalability architecture, or design systems with measurable quality criteria. This should trigger for requests such as Create ADR for Non-functional requirements; Document Non-functional requirements; Capture Non-functional requirements; Generate Non-functional requirements in an ADR. Part of cursor-rules-java project

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Run a health check on an existing project: dependency audit, security scan, test runner detection, CI/CD evaluation, and missing configuration analysis. Maps the three execution gates (pre/in/post) from /10x-bootstrapper to an assessment framework for existing codebases. Reads optional context/foundation/stack-assessment.md from /10x-stack-assess to focus checks on identified gaps. Writes context/foundation/health-check.md with findings, prioritized fixes, and an agent-readiness verdict. Use when the user has an existing project and wants to verify its health before working with an agent. Trigger phrases: "health check", "check my project", "audit my project", "is my project healthy", "sprawdź projekt", "audyt projektu", "health-check", "project health". Use AFTER /10x-stack-assess (brownfield chain), BEFORE agent onboarding (m1-l4).

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

10x-team

無料

You MUST use this when building projects end-to-end. Orchestrates all 12 team roles — automatically switches between CTO, architect, PM, engineers, SRE, security, DBA, QA, and EM based on the current phase of work. Starts with brainstorming before any implementation.

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

Use when you need to add or configure Maven plugins in your pom.xml — including quality tools (enforcer, surefire, failsafe, jacoco, pitest, spotbugs, pmd), security scanning (OWASP), code formatting (Spotless), version management, container image build (Jib), build information tracking, and benchmarking (JMH) — through a consultative, modular step-by-step approach that only adds what you actually need. This should trigger for requests such as Add Maven plugins in pom.xml; Improve Maven plugins in pom.xml. Part of cursor-rules-java project

日本語の概要は準備中です。原文の説明を表示しています。

aibot88/sec_skill_store42026年5月27日 更新

aibot88 のスキルをすべて見る

このスキルの問題を報告する