Download the PHP package owlstack/owlstack-core without Composer

On this page you can find all versions of the php package owlstack/owlstack-core. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package owlstack-core

Owlstack

Framework-agnostic PHP core for social media publishing

Tests Latest Version Total Downloads PHP Version GitHub Stars

--- # Owlstack Core The shared engine behind [Owlstack](https://owlstack.dev) — publish content to **11 social media platforms** through a single, unified PHP API. Zero framework dependencies. Works with Laravel, WordPress, or standalone. --- ## Table of Contents - [Why Owlstack Core?](#why-owlstack-core) - [Supported Platforms](#supported-platforms) - [Platform Availability & Requirements](#platform-availability--requirements) - [Architecture Overview](#architecture-overview) - [Installation](#installation) - [Quick Start](#quick-start) - [Core Concepts](#core-concepts) - [Content Model](#content-model) - [Media Handling](#media-handling) - [Platform Configuration](#platform-configuration) - [Publishing](#publishing) - [Formatting Pipeline](#formatting-pipeline) - [Authentication (OAuth)](#authentication-oauth) - [Event System](#event-system) - [Delivery Status](#delivery-status) - [Error Handling](#error-handling) - [HTTP Client](#http-client) - [Support Utilities](#support-utilities) - [Platform Reference](#platform-reference) - [Multi-Platform Publishing](#multi-platform-publishing) - [Advanced Usage](#advanced-usage) - [Testing](#testing) - [Framework Integrations](#framework-integrations) - [Contributing](#contributing) - [Security](#security) - [License](#license) --- ## Why Owlstack Core? - **11 platforms, one API** — Telegram, Twitter/X, Facebook, LinkedIn, Discord, Instagram, Pinterest, Reddit, Slack, Tumblr, and WhatsApp - **Zero dependencies** — Pure PHP 8.1+, only ext-curl and ext-json required - **Contract-driven** — Every concern (HTTP, storage, events, auth) is backed by an interface - **Immutable value objects** — `Post`, `Media`, `MediaCollection`, `AccessToken` are all readonly - **Exception-safe publishing** — `Publisher::publish()` never throws; always returns a `PublishResult` - **Platform-aware formatting** — Each platform has its own formatter respecting character limits, markup syntax, and media constraints - **Built for integration** — Designed as the engine for Laravel, WordPress, and Node.js packages --- ## Supported Platforms | Platform | Max Text | Max Media | Media Types | Notable Features | |:---------|:---------|:----------|:------------|:-----------------| | **Telegram** | 4,096 | 10 | JPEG, PNG, GIF, MP4, OGG | Media groups, inline keyboards, location/contact/venue messages | | **Twitter/X** | 280 | 4 | JPEG, PNG, GIF, MP4 | OAuth 1.0a, polls, quote tweets, exponential backoff retry | | **Facebook** | 63,206 | 1 | JPEG, PNG, GIF, BMP, MP4, AVI | Graph API, scheduled publishing, privacy targeting | | **LinkedIn** | 3,000 | 1 | JPEG, PNG, GIF | Personal profiles & company pages, multi-step image upload | | **Discord** | 2,000 | 10 | JPEG, PNG, GIF, WebP, MP4 | Bot & webhook modes, rich embeds | | **Instagram** | 2,200 | 10 | JPEG, MP4 | Carousels, Reels, Stories, two-step container publishing | | **Pinterest** | 800 | — | JPEG, PNG, GIF, WebP, MP4 | Board & section targeting, video pins | | **Reddit** | 40,000 | 1 | JPEG, PNG, GIF | Self & link posts, flair support, NSFW/spoiler flags | | **Slack** | 40,000 | — | — | Bot & webhook modes, Block Kit support | | **Tumblr** | 4,096 | — | — | NPF content blocks, draft/queue/private states | | **WhatsApp** | 4,096 | — | JPEG, PNG, MP4, PDF, DOCX | Template messages, document sending | --- ## Platform Availability & Requirements Not all platforms can be used immediately — some require OAuth app review or API access approval from the platform provider. Below is a breakdown of what's ready to use, what needs approval, and what's planned. ### Ready to Use (No Approval Needed) These platforms use open APIs, bot tokens, or webhooks — no app review required: | Platform | Auth Method | Notes | |:---------|:------------|:------| | **Telegram** | Bot API | Create a bot via [@BotFather](https://t.me/BotFather) instantly | | **Discord** | Webhook / Bot Token | Users provide their own webhook URL or bot token | | **Slack** | Webhook / Bot Token | Users provide their own webhook URL or bot token | | **Twitter/X** | OAuth 1.0a | Self-service registration at [developer.x.com](https://developer.x.com) | | **Reddit** | OAuth | Self-service at [reddit.com/prefs/apps](https://www.reddit.com/prefs/apps) | | **Tumblr** | OAuth | Self-service at [tumblr.com/oauth/apps](https://www.tumblr.com/oauth/apps) | ### Require App Review / API Approval These platforms require submitting your application for review before production use. Apply as soon as your product is live: | Platform | Auth Method | Approval Required | Where to Apply | |:---------|:------------|:------------------|:---------------| | **Facebook** | OAuth | `pages_manage_posts`, `pages_read_engagement` permissions | [Meta App Review](https://developers.facebook.com/docs/app-review) | | **Instagram** | OAuth | `instagram_content_publish` permission | [Meta App Review](https://developers.facebook.com/docs/app-review) (same portal) | | **LinkedIn** | OAuth | Community Management API access | [LinkedIn Developer Portal](https://learn.microsoft.com/en-us/linkedin/marketing/) | | **Pinterest** | OAuth | Production API access | [Pinterest Developer Portal](https://developers.pinterest.com/) | | **WhatsApp** | Business API | Meta Business verification + WhatsApp Business Platform | [Meta for Developers](https://developers.facebook.com/docs/whatsapp) | ### Planned (Not Yet Implemented) These platforms are shown in the dashboard but do not have `owlstack-core` implementations yet: | Platform | Auth Method | Approval Needed | Complexity | |:---------|:------------|:----------------|:-----------| | **Bluesky** | App Password | No (open AT Protocol) | Low | | **Mastodon** | OAuth | No (federated, open protocol) | Low | | **Threads** | OAuth | Yes (Meta App Review) | Medium | | **TikTok** | OAuth | Yes ([TikTok Developer Portal](https://developers.tiktok.com/)) | Medium | | **YouTube** | OAuth | Yes (Google OAuth consent screen verification) | Medium | > **Tip:** Facebook, Instagram, Threads, and WhatsApp all go through the same [Meta App Review](https://developers.facebook.com/docs/app-review) portal — apply for all of them in a single review cycle. --- ## Architecture Overview Owlstack Core is built on a **contract-driven, layered architecture** with zero framework dependencies. Framework packages (Laravel, WordPress) provide concrete implementations for storage, queues, and events.
Publishing Flow
--- ## Installation ### Requirements | Requirement | Version | |:------------|:--------| | PHP | ≥ 8.1 | | ext-curl | * | | ext-json | * | --- ## Quick Start --- ## Core Concepts ### Content Model The content layer uses **immutable value objects** that are platform-agnostic. #### Post The central content object. All properties are readonly. | Parameter | Type | Default | Description | |:----------|:-----|:--------|:------------| | `title` | `string` | *required* | Post title | | `body` | `string` | *required* | Post body content | | `url` | `?string` | `null` | Canonical URL to original content | | `excerpt` | `?string` | `null` | Short summary (used by Twitter) | | `media` | `?MediaCollection` | `null` | Attached media files | | `tags` | `array` | `[]` | Tags for hashtag generation | | `metadata` | `array` | `[]` | Arbitrary key-value store | --- ### Media Handling #### Media A single media attachment (image, video, audio, or document). #### MediaCollection An immutable, typed collection. Adding returns a **new** instance. #### CanonicalLink Appends a "Read more" link to content, respecting character limits. --- ### Platform Configuration #### PlatformCredentials A readonly credential bag for a single platform. #### OwlstackConfig Central configuration for multiple platforms. #### ConfigValidator Validates that required credential keys are present for each platform.
Required credentials per platform | Platform | Required Keys | |:---------|:-------------| | Telegram | `api_token` | | Twitter/X | `consumer_key`, `consumer_secret`, `access_token`, `access_token_secret` | | Facebook | `app_id`, `app_secret`, `page_access_token`, `page_id` | | LinkedIn | `access_token`, `person_id` or `organization_id` | | Discord | `bot_token` + `channel_id`, **or** `webhook_url` | | Instagram | `access_token`, `instagram_account_id` | | Pinterest | `access_token`, `board_id` | | Reddit | `client_id`, `client_secret`, `access_token`, `username` | | Slack | `bot_token` + `channel`, **or** `webhook_url` | | Tumblr | `access_token`, `blog_identifier` | | WhatsApp | `access_token`, `phone_number_id` |
--- ### Publishing #### Publisher The main orchestrator. Resolves the platform, publishes, dispatches events, and returns a result — **never throws exceptions**. #### PublishResult An immutable result object returned from every publish call. --- ### Formatting Pipeline Each platform has a dedicated formatter implementing `FormatterInterface`. Formatters handle: - **Character limits** — Truncating content to platform maximums - **Markup syntax** — HTML for Telegram, Markdown for Discord/Reddit, mrkdwn for Slack - **Hashtag injection** — Appending tags within the character budget - **URL handling** — Platform-specific link formatting (t.co wrapping for Twitter, `` for Slack) #### CharacterTruncator Word-boundary-aware text truncation. #### HashtagExtractor Converts tags to hashtag strings, sanitizing special characters. --- ### Authentication (OAuth) The auth layer provides contracts for OAuth flows. Framework packages supply concrete implementations for token storage. #### AccessToken --- ### Event System Hook into the publish lifecycle with the event dispatcher. --- ### Delivery Status A PHP 8.1 backed enum for tracking delivery lifecycle in your storage layer. --- ### Error Handling Owlstack Core uses a structured exception hierarchy. The `Publisher` catches all exceptions internally, but you can handle them directly when calling platform methods. --- ### HTTP Client A zero-dependency cURL-based HTTP client. Supported options: `headers`, `json`, `body`, `form_params`, `multipart`, `query`. --- ### Support Utilities #### Arr — Array Helpers #### Str — String Helpers #### Clock — Testable Time --- ## Platform Reference ### Telegram ### Twitter/X > **Note:** Twitter automatically wraps URLs to 23 characters (t.co). The formatter accounts for this in the character budget. ### Facebook ### LinkedIn ### Discord ### Instagram > **Note:** Instagram requires media to be hosted at publicly accessible URLs. ### Pinterest ### Reddit ### Slack ### Tumblr ### WhatsApp --- ## Multi-Platform Publishing --- ## Advanced Usage ### Custom Platform Implement `PlatformInterface` to add a new platform: ### Custom Formatter ### Custom Token Store ### Proxy Configuration --- ## Testing The `Clock::freeze()` utility lets you control time in tests: --- ## Framework Integrations | Package | Framework | Repository | |:--------|:----------|:-----------| | **owlstack/owlstack-laravel** | Laravel 10+ | [owlstack-laravel](https://github.com/owlstacks/owlstack-laravel) | | **owlstack/owlstack-wordpress** | WordPress 6+ | [owlstack-wordpress](https://github.com/owlstacks/owlstack-wordpress) | --- ## Contributing Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute. ## Security If you discover a security vulnerability, please review [SECURITY.md](SECURITY.md) for reporting instructions. ## License MIT License. See [LICENSE](LICENSE) for details. ---

Built with 🦉 by Ali Hesari


All versions of owlstack-core with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
ext-curl Version *
ext-json Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package owlstack/owlstack-core contains the following files

Loading the files please wait ...