SocialCue Documentation
Everything you need to install, configure, and use SocialCue — a self-hosted social media content calendar for agencies and freelancers.
What SocialCue does
SocialCue is a content planning and approval tool. Your team plans posts in a calendar, clients or managers approve them, and approved posts are automatically sent to Buffer which handles the actual publishing to Instagram, LinkedIn, Facebook, and more.
It replaces Planable for agencies who want to own their data and pay once instead of monthly per client.
Installation
SocialCue runs on any shared hosting with PHP 7.4 or newer — Strato, IONOS, Hostinger, cPanel hosts all work. No database needed.
- Download your filesYou receive 5 files from Gumroad:
index.html,data.php,optimize.php,generate-image.php,publish.php - Upload all 5 files to the same folderUse your hosting file manager or FTP. Example path:
your-domain.com/socialcue/ - Open your URL in the browserNavigate to
https://your-domain.com/socialcue/— the login screen should appear. - Log in with the default credentialsUsername:
admin· Password:admin123 - Change your password immediatelyAdmin → Settings → Change Password. The default password is public.
admin / admin123) are in this documentation and must not be left on a live install.Large file uploads
If you plan to upload images over 8MB or videos, create a .htaccess file in the same folder:
php_value upload_max_filesize 512M php_value post_max_size 512M php_value memory_limit 256M php_value max_execution_time 300
Supported formats: PNG, JPG, GIF, WebP (up to 50MB) · MP4, MOV, WebM (up to 500MB)
First Login Setup
After logging in for the first time, head to Admin → 🚀 Setup. SocialCue includes a built-in setup guide that checks every integration live and tells you exactly what still needs attention.
The Setup tab walks you through all six steps:
| Step | Where | What to do |
|---|---|---|
| 1 · Change password | Admin → Settings | Replace admin123 — the setup guide detects this automatically |
| 2 · Add accounts | Admin → Accounts | One account per brand or client |
| 3 · Enable platforms | Admin → Platforms | Toggle on Instagram, LinkedIn, Facebook etc. |
| 4 · Connect Buffer | Admin → Accounts → Edit | Paste each account's Buffer API key — step 4 live-tests the connection |
| 5 · Set up AI Text | Admin → Settings | Add your own free Groq key — the guide warns if you're on the shared demo key |
| 6 · AI Images | Admin → Settings | Pollinations works with zero setup — Ideogram optional for higher quality |
Calendar & Board
SocialCue has three views for organising content:
Month view
The default calendar view. Each post appears as a coloured chip on its scheduled date, showing the platform icon, status dot, account badge, title, and time. Click any chip to open the post detail.
Week / Day views
Tighter time-based views for daily planning. Same chips, more granular layout.
Board (Kanban)
Four columns: Draft → In Review → Approved → Published. Drag posts between columns or change status from the post detail. Great for reviewing all posts at once during a content sprint.
Filtering
Use the filter bar above the calendar to narrow posts by platform, account, or status. Multiple filters can be combined.
Creating Posts
Click + New Post in the top right (or press N) to open the post creation modal.
Post fields
| Field | Description |
|---|---|
| Title | Internal name for the post — not published, used for organising |
| Platform | Select one or more: Instagram, Facebook, LinkedIn, X, TikTok, YouTube |
| Account | Which client or brand this post belongs to |
| Status | Draft / In Review / Approved / Published |
| Content Label | Category tag: Promotional, Educational, Behind the scenes, etc. |
| Post text | The actual caption that gets published |
| Instagram post type | Appears when Instagram is selected — choose Post, Reel, or Story. Affects file requirements. |
| Facebook post type | Appears when Facebook is selected — choose Post, Reel, or Story. Affects file requirements. |
| Images / Video | Upload media or generate with AI. File requirements are enforced per platform and post type — see below. |
| Date & Time | Scheduled publish date and time — used by Buffer |
| Recurring | Optional: repeat Daily / Weekly / Monthly until an end date |
AI generation
Click Generate with AI in the post modal to write a full caption from a topic idea. You can set the tone (Professional, Casual, Funny…) and language. Requires a Groq or Anthropic API key set in Admin → Settings.
Templates
Save any post as a template via the post detail menu. Load templates when creating new posts to reuse structure and content.
File format & dimension requirements
SocialCue enforces platform rules at upload time — incorrect files are blocked before they reach the server, so nothing ever ends up in your Buffer queue that can't be published.
| Platform / Type | Accepted formats | Max size | Dimensions |
|---|---|---|---|
| Instagram Post | JPG, PNG, WebP, GIF, MP4, MOV | 8 MB img / 100 MB video | Up to 10 images |
| Instagram Reel | MP4, MOV only | 100 MB | Min 500×888px · 9:16 portrait |
| Instagram Story | JPG, PNG, WebP, MP4, MOV | 8 MB / 100 MB | Single file · 9:16 recommended |
| Facebook Post | JPG, PNG, GIF, MP4, MOV | 10 MB img / 100 MB video | Up to 10 images |
| Facebook Reel | MP4, MOV only | 100 MB | Min 540×960px · 9:16 portrait |
| Facebook Story | JPG, PNG, MP4, MOV | 10 MB / 100 MB | Single file |
| JPG, PNG, GIF, MP4 (no WebP) | 5 MB img / 200 MB video | Up to 20 images | |
| X / Twitter | JPG, PNG, GIF, WebP, MP4 | 5 MB img / 512 MB video | Up to 4 images |
| TikTok | MP4, MOV only | 500 MB | Min 540×960px · 9:16 portrait |
| YouTube | MP4, MOV, AVI, WebM | 500 MB | Video only |
Approval Workflow
Every post moves through a four-stage lifecycle:
| Status | Meaning | Who can set it |
|---|---|---|
| Draft | Work in progress, not ready for review | All roles |
| In Review | Submitted for approval | All roles |
| Approved | Ready — auto-sends to Buffer | Admin, Manager |
| Published | Live on social media | Admin, Manager |
Comments
Every post has a comment thread visible in the post detail. Use it for feedback, revision requests, or client notes. All comments are stored with timestamps and author names.
Activity log
The bottom of each post detail shows a full history: who created it, every status change, and when edits were made.
Roles & Users
SocialCue has four roles. Assign them in Admin → Users.
Full access
Everything — users, accounts, settings, publishing, approvals. The owner of the install.
Team lead
Approve and publish posts, manage content. Cannot access Admin settings or user management.
Content creator
Create and edit posts, submit for review. Cannot approve or publish.
Client / stakeholder
Read-only view of content for their account. Can approve or reject posts. Cannot create or edit.
Adding users
- Go to Admin → Users → + New User
- Set username, password, role, and account accessApprovers should be linked to a specific account so they only see that client's content.
- Share the login URL and credentialsSend the URL of your SocialCue install plus their username and temporary password.
Resetting a forgotten password
If a user forgets their password and there's no admin access: open data/users.json via your hosting file manager, find the user's "password" field, and replace the entire value with admin123. Log in and change it immediately.
Accounts
Accounts (also called "account layers") are how SocialCue separates clients. Each account has its own colour, initials, and Buffer token. Posts are assigned to an account when created.
Go to Admin → Accounts → + Add Account to create one. Each account can have:
- A name and colour (shown as a badge on calendar chips)
- Its own Buffer API key (so posts go to that client's Buffer queue automatically)
- Approver users linked to it (so clients only see their own content)
Each account also supports a posting timezone and an optional Buffer token — see Timezones and Buffer Publishing for details.
Buffer Publishing
SocialCue uses Buffer's API to publish posts to social media. Buffer's free plan supports 3 connected channels with unlimited queue.
Setting up Buffer
- Create a free Buffer accountSign up at buffer.com
- Connect your social channels in BufferInstagram, LinkedIn, Facebook, X, TikTok, etc.
- Generate an API keyGo to publish.buffer.com/settings/api → Generate API Key → choose expiry (7 days, 30, 60, 90 days, or 1 year) → copy the key
- Paste the key in SocialCueAdmin → Accounts → Edit → Buffer Access Token field → Save
- Test the connectionClick "Test this token" — you should see your Buffer channels listed
How auto-publishing works
When you change a post's status to Approved, SocialCue automatically:
- Fetches the Buffer channels connected to that account
- Matches them to the platforms selected on the post
- Sends the post text, image, and scheduled time to Buffer
- Marks the post with a ⬆ icon on the calendar to confirm
Platform support via Buffer
| Platform | Auto-publish | Notes |
|---|---|---|
| ✓ Full | Text and images work automatically | |
| ✓ Full | Text and images work automatically | |
| Business only | Requires Business or Creator account. Personal accounts get a notification to publish manually. | |
| X (Twitter) | ✓ Full | Works via Buffer |
| TikTok | Video only | Keep media URL accessible until publish time |
Manual Send to Buffer
For posts already in Approved or Published status, you can also send manually: open the post detail → click Send to Buffer → select channels → send. Useful for re-sending or selecting specific channels.
The Buffer modal shows a preview of the post text and media (including a video thumbnail for video posts) before sending. Once sent, a ⬆ green badge appears on the calendar chip confirming delivery.
Auto-delete from Buffer queue
When you delete a post in SocialCue, it is also automatically removed from your Buffer queue — it will not be published. A confirmation message appears in the delete dialog when a post is queued in Buffer.
Troubleshooting Buffer
| Issue | Fix |
|---|---|
| Publishing stops working | Token likely expired. Generate a new one at publish.buffer.com/settings/api and update in Admin → Accounts → Edit. |
| Post not removed from Buffer on delete | Post was sent before v1.2.0 — delete manually in Buffer. New posts delete automatically. |
| Wrong channels shown | Each account uses its own Buffer token. Check Admin → Accounts → Edit → Buffer Access Token. |
| Video rejected by Buffer | Check dimensions and format in the file requirements table above. Reels require min 540×960px portrait video. |
AI Text Generation
SocialCue can generate full captions from a topic idea. Two providers are supported — both configurable in Admin → Settings → AI Text Generation.
Groq (free — recommended)
- Sign up at console.groq.comEmail only, no credit card required — takes about 60 seconds.
- Create an API keyGo to API Keys → Create new key → copy it
- Add to SocialCueAdmin → Settings → AI Text → select Groq → paste key → Save → Test connection
Groq uses Llama 3.3 70B — fast, high quality, completely free for typical usage.
Anthropic Claude (paid — premium quality)
- Get a key at console.anthropic.comCredit card required. Pay-as-you-go.
- Add to SocialCueAdmin → Settings → AI Text → select Anthropic → paste key → Save
How to use
In the New Post modal, click ✦ Generate with AI. Enter a topic or idea, select tone and language, and click Generate. The full caption is written and inserted into the post text field. You can edit it freely before saving.
AI Image Generation
Generate social media images directly in SocialCue. Two providers available in Admin → Settings → AI Image Generation.
Pollinations (free — zero setup)
Works out of the box with no account or API key. Uses open-source models. Good for quick drafts and concepts.
Ideogram (paid — higher quality)
- Get a key at ideogram.ai/manage-api
- Add to SocialCueAdmin → Settings → AI Images → Ideogram → paste key → Save
Ideogram produces higher quality images with better text rendering — good for branded social posts.
File Reference
Data Storage
SocialCue stores everything as JSON files in a data/ folder and uploaded media in an uploads/ folder — both auto-created on first run and protected from direct browser access via .htaccess.
your-folder/
├── index.html
├── data.php
├── optimize.php
├── generate-image.php
├── publish.php
├── data/ ← auto-created, browser-blocked
│ ├── users.json
│ ├── posts.json
│ ├── accounts.json
│ ├── platforms.json
│ ├── settings.json ← AI keys, Buffer tokens
│ └── .htaccess
└── uploads/ ← auto-created, serves images/videos
├── sc_abc123.jpg
└── .htaccess
data/ and uploads/ folders regularly. These two folders contain everything — all posts, users, settings, and media.AI keys and Buffer tokens are stored in settings.json on your server. They are never sent to the browser or logged.
Keyboard Shortcuts
Press ? anywhere in SocialCue to open the shortcuts guide. All shortcuts are disabled when a text field is focused.
Customisation
SocialCue can be white-labelled or customised for your agency. All changes are made directly in the source files.
| What to change | Where |
|---|---|
| App name ("SocialCue") | Search for SocialCue in index.html — ~4 occurrences near the top |
| Accent colour (blue) | Find --accent:#0A84FF in the CSS :root block near line 17 |
| Default content labels | Find DEFAULT_LABELS in index.html near line 1760 |
| Max file size | Edit data.php line ~90: $maxSize = $isVideo ? 500 * 1024 * 1024 : 50 * 1024 * 1024; |
| Default admin password | Change on first login — Admin → Settings → Change Password |
Mentions & Tagging
Use the @ Mention button (next to "From library" in the post editor) to tag accounts, pages, or profiles in your posts. Each platform works differently.
LinkedIn — Company Pages
LinkedIn uses annotations to create real clickable tags. You need three things:
| Field | What to enter |
|---|---|
| Display name | Exactly as it should appear in the post text (e.g. Deliverista Hub) |
| LinkedIn Page URL | e.g. https://www.linkedin.com/company/deliverista-hub/ |
| Organization ID | Numeric ID, e.g. 1521226 — find it in the page URL when in Admin mode, or via Admin tools |
The display name is inserted into your post text. Buffer uses the Organization ID to create the real LinkedIn tag when publishing.
LinkedIn — Person mentions
Same as company pages but uses urn:li:person: URN. Person mentions only work if that person follows your Page and has tagging enabled on their profile.
Facebook — Pages
Enter the display name, Facebook Page URL, and optionally the numeric Page ID. Buffer resolves the tag on publish. Works the same as LinkedIn but uses Facebook's annotation format.
Instagram, TikTok, X / Twitter
Simply enter the @handle — it's inserted directly into your post text. The platform automatically hyperlinks it when published.
Recently used mentions
Every mention you add is saved to a per-account database (data/mentions.json). Next time you open the @ Mention modal, your recently used mentions appear as one-click chips at the top — no need to re-enter URLs or IDs.
To reset the mention database, delete data/mentions.json via FTP or your hosting file manager. It will be recreated automatically.
Image Management
Uploading images
Drag and drop files onto the upload zone, or click to browse. Supported formats and size limits vary by platform — SocialCue validates them before upload and shows a warning if something won't be accepted.
Reordering images
When you have multiple images on a post, drag any thumbnail to reorder them. The first image is always the cover — it appears first in carousels (LinkedIn, Instagram) and as the preview image. A blue Cover badge marks it clearly in both the editor and the post detail view.
Cover image
The cover badge appears on the first image whenever there are 2 or more images attached. Drag a different image to the first position to change the cover.
AI-generated images
Images generated via AI (Pollinations or Ideogram) are automatically saved to your server's uploads/ folder so Buffer can fetch them when publishing. Externally hosted images (e.g. expiring CDN links) are also downloaded and saved locally when you save the post.
Timezones
Each account can have its own posting timezone, set in Admin → Accounts → Edit. When a post is scheduled or auto-published, the time you enter is interpreted in that account's timezone and converted to UTC before being sent to Buffer.
For example: if your Swobbee NYC account is set to New York (ET) and you schedule a post for 9:00 AM, Buffer receives it as 13:00 UTC (during EDT / UTC−4).
If no timezone is set for an account, the browser's local timezone is used as a fallback. A timezone badge (e.g. New_York) is shown in the post detail view next to the scheduled time so you always know which timezone applies.
| Where to set it | Admin → Accounts → Edit → Posting timezone |
|---|---|
| Fallback | Browser timezone if none set |
| Affects | Auto-publish on approval + manual Send to Buffer |
Troubleshooting
| Problem | Fix |
|---|---|
| Blank page after upload | Check all 5 files are in the same folder · Check PHP 7.4+ is available on your host |
| Can't log in | Use admin / admin123 for first login · Clear browser cache |
| Locked out (too many attempts) | Delete data/login_attempts.json via hosting file manager, or wait 15 minutes |
| AI text not working | Admin → Settings → Test connection · Check your Groq key is valid at console.groq.com |
| AI images not working | Pollinations needs no key — just retry. For Ideogram check your key balance |
| Upload fails or is slow | Add .htaccess with PHP size limits (see Installation section) |
| Buffer: "Cannot reach publish.php" | Make sure publish.php is uploaded to the same folder as index.html |
| Buffer: "No token for this account" | Add token in Admin → Accounts → Edit → Buffer Access Token |
| Buffer: token stopped working | Token may have expired — generate a new one at publish.buffer.com/settings/api |
| Instagram auto-publish fails | Instagram requires a Business or Creator account connected in Buffer. Personal accounts only get a push notification. |
| Videos don't play | Use MP4 with H.264 encoding · Stay under 500MB |
| 403 Forbidden | Check the URL matches your exact upload path · Some hosts block .htaccess — contact support |
Getting support
Reply to your Gumroad purchase receipt with a description of the issue. Include: your PHP version (check in hosting control panel), any error messages, and what you were doing when it happened.
Email: info@socialcue.eu