Skip to content

Releases: adelelawady/Clipify

v2.1.4 Release

02 Feb 17:47

Choose a tag to compare

Clipify Logo

Clipify

An AI-powered video processing toolkit for creating social media-optimized content with automated transcription, captioning, and thematic segmentation.

Development Status
PyPI version
Python
License
Downloads
GitHub stars
Documentation Status
Code style: black

🌟 Key Features

Content Processing

  • Video Processing Pipeline
    • Automated audio extraction and speech-to-text conversion
    • Smart thematic segmentation using AI
    • Mobile-optimized format conversion (9:16, 4:5, 1:1)
    • Intelligent caption generation and overlay

AI Capabilities

  • Advanced Analysis
    • Context-aware content segmentation
    • Dynamic title generation
    • Smart keyword and hashtag extraction
    • Sentiment analysis for content optimization

Platform Options

  • Desktop Application

    • Intuitive graphical interface
    • Drag-and-drop functionality
    • Real-time processing feedback
    • Batch processing capabilities
  • Server Deployment

    • RESTful API integration
    • Asynchronous processing with webhooks
    • Multi-tenant architecture
    • Containerized deployment support

πŸš€ Quick Start

Desktop Application

πŸš€ Check out our full project based on Clipify on https://github.com/adelelawady/Clipify-hub πŸš€

Download and install the latest version:

Download Installable Download Server

Python Package Installation

# Via pip
pip install clipify

# From source
git clone https://github.com/adelelawady/Clipify.git
cd Clipify
pip install -r requirements.txt

πŸ’» Usage Examples

Basic Implementation

from clipify.core.clipify import Clipify

# Initialize with basic configuration
clipify = Clipify(
    provider_name="hyperbolic",
    api_key="your-api-key",
    model="deepseek-ai/DeepSeek-V3",
    convert_to_mobile=True,
    add_captions=True
)

# Process video
result = clipify.process_video("input.mp4")

# Handle results
if result:
    print(f"Created {len(result['segments'])} segments")
    for segment in result['segments']:
        print(f"Segment {segment['segment_number']}: {segment['title']}")

Advanced Configuration

clipify = Clipify(
    # AI Configuration
    provider_name="hyperbolic",
    api_key="your-api-key",
    model="deepseek-ai/DeepSeek-V3",
    max_tokens=5048,
    temperature=0.7,
    
    # Video Processing
    convert_to_mobile=True,
    add_captions=True,
    mobile_ratio="9:16",
    
    # Caption Styling
    caption_options={
        "font": "Bangers-Regular.ttf",
        "font_size": 60,
        "font_color": "white",
        "stroke_width": 2,
        "stroke_color": "black",
        "highlight_current_word": True,
        "word_highlight_color": "red",
        "shadow_strength": 0.8,
        "shadow_blur": 0.08,
        "line_count": 1,
        "padding": 50,
        "position": "bottom"
    }
)

AudioExtractor

from clipify.audio.extractor import AudioExtractor

# Initialize audio extractor
extractor = AudioExtractor()

# Extract audio from video
audio_path = extractor.extract_audio(
    video_path="input_video.mp4",
    output_path="extracted_audio.wav"
)

if audio_path:
    print(f"Audio successfully extracted to: {audio_path}")

SpeechToText

from clipify.audio.speech import SpeechToText

# Initialize speech to text converter
converter = SpeechToText(model_size="base")  # Options: tiny, base, small, medium, large

# Convert audio to text with timing
result = converter.convert_to_text("audio_file.wav")

if result:
    print("Transcript:", result['text'])
    print("\nWord Timings:")
    for word in result['word_timings'][:5]:  # Show first 5 words
        print(f"Word: {word['text']}")
        print(f"Time: {word['start']:.2f}s - {word['end']:.2f}s")

VideoConverter

from clipify.video.converter import VideoConverter

# Initialize video converter
converter = VideoConverter()

# Convert video to mobile format with blurred background
result = converter.convert_to_mobile(
    input_video="landscape_video.mp4",
    output_video="mobile_video.mp4",
    target_ratio="9:16"  # Options: "1:1", "4:5", "9:16"
)

if result:
    print("Video successfully converted to mobile format")

VideoConverterStretch

from clipify.video.converterStretch import VideoConverterStretch

# Initialize stretch converter
stretch_converter = VideoConverterStretch()

# Convert video using stretch method
result = stretch_converter.convert_to_mobile(
    input_video="landscape.mp4",
    output_video="stretched.mp4",
    target_ratio="4:5"  # Options: "1:1", "4:5", "9:16"
)

if result:
    print("Video successfully converted using stretch method")

VideoCutter

from clipify.video.cutter import VideoCutter

# Initialize video cutter
cutter = VideoCutter()

# Cut a specific segment
result = cutter.cut_video(
    input_video="full_video.mp4",
    output_video="segment.mp4",
    start_time=30.5,  # Start at 30.5 seconds
    end_time=45.2     # End at 45.2 seconds
)

if result:
    print("Video segment successfully cut")

SmartTextProcessor

from clipify.core.text_processor import SmartTextProcessor
from clipify.core.ai_providers import HyperbolicAI

# Initialize AI provider and text processor
ai_provider = HyperbolicAI(api_key="your_api_key")
processor = SmartTextProcessor(ai_provider)

# Process text content
text = "Your long text content here..."
segments = processor.segment_by_theme(text)

if segments:
    for segment in segments['segments']:
        print(f"\nTitle: {segment['title']}")
        print(f"Keywords: {', '.join(segment['keywords'])}")
        print(f"Content length: {len(segment['content'])} chars")

πŸ“¦ Project Structure

clipify/
β”œβ”€β”€ clipify/
β”‚   β”œβ”€β”€ __init__.py                 # Package initialization and version
β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ clipify.py             # Main Clipify class
β”‚   β”‚   β”œβ”€β”€ processor.py           # Content processing logic
β”‚   β”‚   β”œβ”€β”€ text_processor.py      # Text analysis and segmentation
β”‚   β”‚   └── ai_providers.py        # AI provider implementations
β”‚   β”œβ”€β”€ video/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ cutter.py             # Video cutting functionality
β”‚   β”‚   β”œβ”€β”€ converter.py          # Mobile format conversion
β”‚   β”‚   β”œβ”€β”€ converterStretch.py   # Alternative conversion method
β”‚   β”‚   └── processor.py          # Video processing and captions
β”‚   β”œβ”€β”€ audio/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ extractor.py          # Audio extraction from video
β”‚   β”‚   └── speech.py             # Speech-to-text conversion
β”‚   └── utils/                    # Utility functions
β”‚       β”œβ”€β”€ __init__.py
β”‚       └── helpers.py
β”œβ”€β”€ .gitignore                   # Git ignore rules
β”œβ”€β”€ LICENSE                      # MIT License
β”œβ”€β”€ MANIFEST.in                  # Package manifest
β”œβ”€β”€ README.md                    # Project documentation
β”œβ”€β”€ requirements.txt             # Dependencies
└── setup.py                     # Package setup

πŸ› οΈ Configuration Options

AI Providers

  • hyperbolic: Default provider with DeepSeek-V3 model
  • openai: OpenAI GPT models support
  • anthropic: Anthropic Claude models
  • ollama: Local model deployment

Video Formats

  • Aspect Ratios: 1:1, 4:5, 9:16
  • Output Formats: MP4, MOV
  • Quality Presets: Low, Medium, High

Caption Customization

  • Font customization
  • Color schemes
  • Position options
  • Animation effects
  • Word highlighting

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please read our Contributing Guidelines for details.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🌐 Support

πŸ™ Acknowledgments

  • FFmpeg for video processing
  • OpenAI for AI capabilities
  • P...
Read more

2.1.1

02 Feb 17:05

Choose a tag to compare

Clipify Logo

Clipify

An AI-powered video processing toolkit for creating social media-optimized content with automated transcription, captioning, and thematic segmentation.

Development Status
PyPI version
Python
License
Downloads
GitHub stars
Documentation Status
Code style: black

🌟 Key Features

Content Processing

  • Video Processing Pipeline
    • Automated audio extraction and speech-to-text conversion
    • Smart thematic segmentation using AI
    • Mobile-optimized format conversion (9:16, 4:5, 1:1)
    • Intelligent caption generation and overlay

AI Capabilities

  • Advanced Analysis
    • Context-aware content segmentation
    • Dynamic title generation
    • Smart keyword and hashtag extraction
    • Sentiment analysis for content optimization

Platform Options

  • Desktop Application

    • Intuitive graphical interface
    • Drag-and-drop functionality
    • Real-time processing feedback
    • Batch processing capabilities
  • Server Deployment

    • RESTful API integration
    • Asynchronous processing with webhooks
    • Multi-tenant architecture
    • Containerized deployment support

πŸš€ Quick Start

Desktop Application

πŸš€ Check out our full project based on Clipify on https://github.com/adelelawady/Clipify-hub πŸš€

Download and install the latest version:

Download Installable Download Server

Python Package Installation

# Via pip
pip install clipify

# From source
git clone https://github.com/adelelawady/Clipify.git
cd Clipify
pip install -r requirements.txt

πŸ’» Usage Examples

Basic Implementation

from clipify.core.clipify import Clipify

# Initialize with basic configuration
clipify = Clipify(
    provider_name="hyperbolic",
    api_key="your-api-key",
    model="deepseek-ai/DeepSeek-V3",
    convert_to_mobile=True,
    add_captions=True
)

# Process video
result = clipify.process_video("input.mp4")

# Handle results
if result:
    print(f"Created {len(result['segments'])} segments")
    for segment in result['segments']:
        print(f"Segment {segment['segment_number']}: {segment['title']}")

Advanced Configuration

clipify = Clipify(
    # AI Configuration
    provider_name="hyperbolic",
    api_key="your-api-key",
    model="deepseek-ai/DeepSeek-V3",
    max_tokens=5048,
    temperature=0.7,
    
    # Video Processing
    convert_to_mobile=True,
    add_captions=True,
    mobile_ratio="9:16",
    
    # Caption Styling
    caption_options={
        "font": "Bangers-Regular.ttf",
        "font_size": 60,
        "font_color": "white",
        "stroke_width": 2,
        "stroke_color": "black",
        "highlight_current_word": True,
        "word_highlight_color": "red",
        "shadow_strength": 0.8,
        "shadow_blur": 0.08,
        "line_count": 1,
        "padding": 50,
        "position": "bottom"
    }
)

AudioExtractor

from clipify.audio.extractor import AudioExtractor

# Initialize audio extractor
extractor = AudioExtractor()

# Extract audio from video
audio_path = extractor.extract_audio(
    video_path="input_video.mp4",
    output_path="extracted_audio.wav"
)

if audio_path:
    print(f"Audio successfully extracted to: {audio_path}")

SpeechToText

from clipify.audio.speech import SpeechToText

# Initialize speech to text converter
converter = SpeechToText(model_size="base")  # Options: tiny, base, small, medium, large

# Convert audio to text with timing
result = converter.convert_to_text("audio_file.wav")

if result:
    print("Transcript:", result['text'])
    print("\nWord Timings:")
    for word in result['word_timings'][:5]:  # Show first 5 words
        print(f"Word: {word['text']}")
        print(f"Time: {word['start']:.2f}s - {word['end']:.2f}s")

VideoConverter

from clipify.video.converter import VideoConverter

# Initialize video converter
converter = VideoConverter()

# Convert video to mobile format with blurred background
result = converter.convert_to_mobile(
    input_video="landscape_video.mp4",
    output_video="mobile_video.mp4",
    target_ratio="9:16"  # Options: "1:1", "4:5", "9:16"
)

if result:
    print("Video successfully converted to mobile format")

VideoConverterStretch

from clipify.video.converterStretch import VideoConverterStretch

# Initialize stretch converter
stretch_converter = VideoConverterStretch()

# Convert video using stretch method
result = stretch_converter.convert_to_mobile(
    input_video="landscape.mp4",
    output_video="stretched.mp4",
    target_ratio="4:5"  # Options: "1:1", "4:5", "9:16"
)

if result:
    print("Video successfully converted using stretch method")

VideoCutter

from clipify.video.cutter import VideoCutter

# Initialize video cutter
cutter = VideoCutter()

# Cut a specific segment
result = cutter.cut_video(
    input_video="full_video.mp4",
    output_video="segment.mp4",
    start_time=30.5,  # Start at 30.5 seconds
    end_time=45.2     # End at 45.2 seconds
)

if result:
    print("Video segment successfully cut")

SmartTextProcessor

from clipify.core.text_processor import SmartTextProcessor
from clipify.core.ai_providers import HyperbolicAI

# Initialize AI provider and text processor
ai_provider = HyperbolicAI(api_key="your_api_key")
processor = SmartTextProcessor(ai_provider)

# Process text content
text = "Your long text content here..."
segments = processor.segment_by_theme(text)

if segments:
    for segment in segments['segments']:
        print(f"\nTitle: {segment['title']}")
        print(f"Keywords: {', '.join(segment['keywords'])}")
        print(f"Content length: {len(segment['content'])} chars")

πŸ“¦ Project Structure

clipify/
β”œβ”€β”€ clipify/
β”‚   β”œβ”€β”€ __init__.py                 # Package initialization and version
β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ clipify.py             # Main Clipify class
β”‚   β”‚   β”œβ”€β”€ processor.py           # Content processing logic
β”‚   β”‚   β”œβ”€β”€ text_processor.py      # Text analysis and segmentation
β”‚   β”‚   └── ai_providers.py        # AI provider implementations
β”‚   β”œβ”€β”€ video/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ cutter.py             # Video cutting functionality
β”‚   β”‚   β”œβ”€β”€ converter.py          # Mobile format conversion
β”‚   β”‚   β”œβ”€β”€ converterStretch.py   # Alternative conversion method
β”‚   β”‚   └── processor.py          # Video processing and captions
β”‚   β”œβ”€β”€ audio/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ extractor.py          # Audio extraction from video
β”‚   β”‚   └── speech.py             # Speech-to-text conversion
β”‚   └── utils/                    # Utility functions
β”‚       β”œβ”€β”€ __init__.py
β”‚       └── helpers.py
β”œβ”€β”€ .gitignore                   # Git ignore rules
β”œβ”€β”€ LICENSE                      # MIT License
β”œβ”€β”€ MANIFEST.in                  # Package manifest
β”œβ”€β”€ README.md                    # Project documentation
β”œβ”€β”€ requirements.txt             # Dependencies
└── setup.py                     # Package setup

πŸ› οΈ Configuration Options

AI Providers

  • hyperbolic: Default provider with DeepSeek-V3 model
  • openai: OpenAI GPT models support
  • anthropic: Anthropic Claude models
  • ollama: Local model deployment

Video Formats

  • Aspect Ratios: 1:1, 4:5, 9:16
  • Output Formats: MP4, MOV
  • Quality Presets: Low, Medium, High

Caption Customization

  • Font customization
  • Color schemes
  • Position options
  • Animation effects
  • Word highlighting

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please read our Contributing Guidelines for details.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🌐 Support

πŸ™ Acknowledgments

  • FFmpeg for video processing
  • OpenAI for AI capabilities
  • P...
Read more

v0.7.0

25 Jan 22:52
88af32b

Choose a tag to compare

Clipify Logo

Development Status
PyPI version
Python
License
Downloads
GitHub stars
GitHub issues
Made with Python
Maintenance
PRs Welcome
Code style: black
Documentation Status
Version
GitHub contributors
Open Source
Ask Me Anything !
Awesome
FFmpeg
OpenAI
PyTorch
NumPy

Buy me a coffee

A powerful Python tool for processing video content into social media-friendly segments with automated transcription, captioning, and thematic segmentation.

Screenshot 2025-01-25 045729

Features

  • πŸŽ₯ Video Processing

    • Extracts audio from video files
    • Converts speech to text with timing information
    • Segments videos by theme and content
    • Converts videos to mobile-friendly format (9:16 aspect ratio)
    • Adds auto-generated captions
  • πŸ€– AI-Powered Content Analysis

    • Intelligent thematic segmentation
    • Smart title generation
    • Keyword extraction
    • Sentiment analysis
    • Hashtag generation
  • πŸ“ Transcript Processing

    • Generates accurate transcripts with timing information
    • Processes transcripts into coherent segments
    • Maintains timing alignment for precise video cutting

Prerequisites

  • Python 3.8+
  • FFmpeg installed and in PATH
  • NLTK resources
  • Required Python packages (see requirements.txt)
  • API key for content processing services

Clone the repository:

Installation

install from pip

pip install clipify

install from source

git clone https://github.com/adelelawady/Clipify.git
cd Clipify

Install the dependencies:

pip install -r requirements.txt

Usage

  1. Basic video processing:
from clipify.core.clipify import Clipify
    # Initialize Clipify with Hyperbolic or OpenAI or Anthropic AI and specific model
    clipify = Clipify(
        provider_name="hyperbolic",
        api_key="api-key",
        model="deepseek-ai/DeepSeek-V3",  # Specify model
        convert_to_mobile=True,
        add_captions=True,
        mobile_ratio="9:16"
    )
    
    # Process a video
    result = clipify.process_video("path/to/video.mp4")
    
    if result:
        print("\nProcessing Summary:")
        print(f"Processed video: {result['video_path']}")
        print(f"Created {len(result['segments'])} segments")
        
        for segment in result['segments']:
            print(f"\nSegment #{segment['segment_number']}: {segment['title']}")
            if 'cut_video' in segment:
                print(f"Cut video: {segment['cut_video']}")
            if 'mobile_video' in segment:
                print(f"Mobile version: {segment['mobile_video']}")
            if 'captioned_video' in segment:
                print(f"Captioned version: {segment['captioned_video']}")

Project Structure

clipify/
β”œβ”€β”€ clipify/
β”‚ β”œβ”€β”€ init.py
β”‚ β”œβ”€β”€ content_processor.py
β”‚ β”œβ”€β”€ video_processor.py
β”‚ └── utils/
β”‚ β”œβ”€β”€ audio.py
β”‚ β”œβ”€β”€ captions.py
β”‚ └── transcription.py
β”œβ”€β”€ tests/
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ setup.py
└── README.md

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

v0.6.0

25 Jan 02:53
d7b8dc9

Choose a tag to compare

svgviewer-output

Development Status
PyPI version
Python
License
Downloads
GitHub stars
GitHub issues
Made with Python
Maintenance
PRs Welcome
Code style: black
Documentation Status
GitHub release
GitHub contributors
Open Source
Ask Me Anything !
Awesome
FFmpeg
OpenAI
PyTorch
NumPy

Buy me a coffee

A powerful Python tool for processing video content into social media-friendly segments with automated transcription, captioning, and thematic segmentation.

Features

  • πŸŽ₯ Video Processing

    • Extracts audio from video files
    • Converts speech to text with timing information
    • Segments videos by theme and content
    • Converts videos to mobile-friendly format (9:16 aspect ratio)
    • Adds auto-generated captions
  • πŸ€– AI-Powered Content Analysis

    • Intelligent thematic segmentation
    • Smart title generation
    • Keyword extraction
    • Sentiment analysis
    • Hashtag generation
  • πŸ“ Transcript Processing

    • Generates accurate transcripts with timing information
    • Processes transcripts into coherent segments
    • Maintains timing alignment for precise video cutting

Prerequisites

  • Python 3.8+
  • FFmpeg installed and in PATH
  • NLTK resources
  • Required Python packages (see requirements.txt)
  • API key for content processing services

Clone the repository:

Installation

install from pip

pip install clipify

install from source

git clone https://github.com/adelelawady/Clipify.git
cd Clipify

Install the dependencies:

pip install -r requirements.txt

Usage

  1. Basic video processing:
from clipify.core.clipify import Clipify
    # Initialize Clipify with Hyperbolic or OpenAI or Anthropic AI and specific model
    clipify = Clipify(
        provider_name="hyperbolic",
        api_key="api-key",
        model="deepseek-ai/DeepSeek-V3",  # Specify model
        convert_to_mobile=True,
        add_captions=True,
        mobile_ratio="9:16"
    )
    
    # Process a video
    result = clipify.process_video("path/to/video.mp4")
    
    if result:
        print("\nProcessing Summary:")
        print(f"Processed video: {result['video_path']}")
        print(f"Created {len(result['segments'])} segments")
        
        for segment in result['segments']:
            print(f"\nSegment #{segment['segment_number']}: {segment['title']}")
            if 'cut_video' in segment:
                print(f"Cut video: {segment['cut_video']}")
            if 'mobile_video' in segment:
                print(f"Mobile version: {segment['mobile_video']}")
            if 'captioned_video' in segment:
                print(f"Captioned version: {segment['captioned_video']}")

Project Structure

clipify/
β”œβ”€β”€ clipify/
β”‚ β”œβ”€β”€ init.py
β”‚ β”œβ”€β”€ content_processor.py
β”‚ β”œβ”€β”€ video_processor.py
β”‚ └── utils/
β”‚ β”œβ”€β”€ audio.py
β”‚ β”œβ”€β”€ captions.py
β”‚ └── transcription.py
β”œβ”€β”€ tests/
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ setup.py
└── README.md

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.