Skip to content
Back to skills

2302 Github Actions Workflow 53d905d1

ASecurity

```yaml name: Generate Marketing Videos

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
content-marketingpythonawsgitapi

Works with

  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2302-github-actions-workflow_53d905d1 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2302 Github Actions Workflow 53d905d1?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2302 Github Actions Workflow 53d905d1
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2302-github-actions-workflow-53d905d1/badge)](https://www.skillsdirectory.com/skills/tools-only-2302-github-actions-workflow-53d905d1)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Github Actions Workflow

## GitHub Actions Workflow

```yaml
# .github/workflows/generate-videos.yml
name: Generate Marketing Videos

on:
  workflow_dispatch:
    inputs:
      prompt:
        description: 'Video prompt'
        required: true
        default: 'Professional product showcase with modern lighting'
      duration:
        description: 'Video duration (5 or 10)'
        required: true
        default: '5'
        type: choice
        options:
          - '5'
          - '10'
      model:
        description: 'Model to use'
        required: true
        default: 'kling-v1.5'
        type: choice
        options:
          - 'kling-v1'
          - 'kling-v1.5'
          - 'kling-pro'

  schedule:
    # Generate weekly content every Monday at 9am UTC
    - cron: '0 9 * * 1'

jobs:
  generate:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install dependencies
        run: |
          pip install requests boto3

      - name: Generate video
        id: generate
        env:
          KLINGAI_API_KEY: ${{ secrets.KLINGAI_API_KEY }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        run: |
          python scripts/generate_video.py \
            --prompt "${{ github.event.inputs.prompt || 'Weekly promotional video' }}" \
            --duration ${{ github.event.inputs.duration || '5' }} \
            --model "${{ github.event.inputs.model || 'kling-v1.5' }}" \
            --output-json video_result.json

          # Export result to job output
          echo "video_url=$(jq -r '.video_url' video_result.json)" >> $GITHUB_OUTPUT
          echo "job_id=$(jq -r '.job_id' video_result.json)" >> $GITHUB_OUTPUT

      - name: Upload to S3
        if: success()
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        run: |
          python scripts/upload_to_s3.py \
            --video-url "${{ steps.generate.outputs.video_url }}" \
            --bucket "marketing-videos" \
            --key "generated/${{ steps.generate.outputs.job_id }}.mp4"

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: video-result
          path: video_result.json
          retention-days: 30

      - name: Notify Slack
        if: always()
        uses: 8398a7/action-slack@v3
        with:
          status: ${{ job.status }}
          fields: repo,message,commit,author
          text: |
            Video generation ${{ job.status }}
            Job ID: ${{ steps.generate.outputs.job_id }}
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

  # Run tests on generated videos
  validate:
    needs: generate
    runs-on: ubuntu-latest

    steps:
      - name: Download artifact
        uses: actions/download-artifact@v4
        with:
          name: video-result

      - name: Validate video
        run: |
          VIDEO_URL=$(jq -r '.video_url' video_result.json)

          # Check video is accessible
          HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$VIDEO_URL")
          if [ "$HTTP_STATUS" != "200" ]; then
            echo "Video not accessible: $HTTP_STATUS"
            exit 1
          fi

          echo "Video validation passed"
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.