Directory / plugin

Foliocast – Portfolio Auto Post & Scheduler for Instagram

v2.21.0 · by Foliocast

Auto-post your WordPress portfolio to Instagram: posts and carousels with captions, credits and hashtags, scheduled and published on time.

About this plugin

Foliocast is made for artists, designers, photographers, architects and studios who already show their work on a WordPress site and want an Instagram feed that keeps up, without spending their evenings on it.

The plugin reads the projects of your portfolio (posts, pages or the project post type of your theme), prepares the Instagram posts for you and publishes them at the planned time, straight from your site. Your computer can stay off.

What the free plugin does

  • Reads your portfolio: finds your published projects and their images (featured image and galleries), whatever your theme.
  • Portfolio built elsewhere? If your projects live on Squarespace, Wix, Webflow, Shopify, Framer, Cargo, Behance or a hand-made site, paste its address: Foliocast reads the public pages, you tick the projects to import (title, text and up to 12 images each), and new projects are picked up once a day. They are kept on this site as Foliocast projects (never shown as pages of this site) and link back to your portfolio.
  • Plans the feed: a weekly rhythm (new project, close-up, signature image) spread over the coming weeks, which you review before anything is scheduled.
  • Formats the visuals: crops each image to Instagram’s 4:5, 1:1 or 9:16 formats around a point of interest, on your own server (Imagick or GD).
  • Single images and carousels, with no monthly limit.
  • Captions and hashtags: hooks, credits, calls to action and hashtag sets in English, French, Spanish, German, Italian, Portuguese or Dutch, editable by hand. Credits and place written on the project page (“Photo: …”, “Architect: …”, “Location: …”) are added to the caption automatically.
  • True colors: photos in Adobe RGB, ProPhoto or Display P3 are converted to sRGB, so they don’t look washed out on Instagram.
  • Grid preview: see your profile as it will look, drag a post to move it, the dates follow.
  • On-time publishing with one click: turn on “On-time publishing by Foliocast” and our free service calls your site every minute, so posts go out on time without a cron job at your host (or keep your own cron job).
  • Automatic publishing at the planned time through the official Instagram API, with retries, alerts and a clear status for every post.
  • Statistics: reach and engagement of each published post, and visits to your site coming from Instagram (counted on your own site, without storing any IP address or fingerprint; a technical cookie with no identifier, deleted by the browser after one hour, avoids counting the same visit twice).
  • Email alerts when a post is published or fails, a daily summary and a monthly report (your scores, your best posts, one tip).
  • Light or dark: the app opens in a light theme; dark is one click away and follows each person’s account on all their devices.
  • Grow the account: a link page for your Instagram bio with your latest projects, a weekly suggestion to bring a project that did well back in the spotlight (as a draft to approve), and a first comment for each post, where your hashtags can go.
  • Your own videos: publish a video you upload as a Reel (optional Cloudinary account to crop it to 9:16 on shared hosting).
  • Help screen: an installation check that tells you what to fix, with no password, token or key shown.
  • Installable app: install Foliocast as an app on Windows, Mac, Android, iPhone and iPad, straight from your own site (no app store, nothing to pay): its own icon and window, a QR code to open it on your phone, and photos shared from your Android phone’s gallery go straight to a new post. Your posts still go out from your site, whatever the device.

The interface is available in English, French, Spanish, German, Italian, Portuguese and Dutch (it follows your WordPress profile language, or your choice).

Paid plans: Solo, Studio and Agency

The paid plans come as a separate add-on that installs next to this plugin and keeps your schedule and settings:

  • Solo: 8 Reels a month made automatically from your images (with music), 30 AI captions a month and automatic tuning of posting times and hashtags from your statistics, for one site.
  • Studio: unlimited Reels, your own music, grid banners (one wide image split across 3 or 6 posts), companion stories, a private approval page for your clients, publishing to Facebook, Threads, LinkedIn and Pinterest as well, and up to 2,000 AI captions a month, for one site.
  • Agency: every Studio feature on 5, 10 or 25 sites, the “My spaces” dashboard, monthly reports in your agency’s name and priority support.

Every paid plan also adds notifications on your phone and computer (post published, failed or on hold, video not ready, Instagram to reconnect, and your client’s approval on Studio and Agency), sent by your own site and encrypted for each device.

Plans and prices: foliocast.fr. Nothing in this free plugin is locked or limited: it is complete on its own.

Requirements

  • A professional Instagram account (Creator or Business, free to switch in the Instagram app).
  • A WordPress site reachable on the internet (Instagram downloads the images from your site, or from Cloudinary if you connect it).
  • For publishing exactly on time: one click on “Turn on on-time publishing” (free Foliocast service), or a cron job at your host that calls your site every minute (the exact command is shown in the plugin). Without either, WordPress’s built-in scheduler is used, which runs only when someone visits your site.

External services

This plugin connects to the following third-party services. Nothing is sent before you connect an account or enable the feature.

Instagram API (Meta)

Used to publish your posts and read your account details and post statistics. Requests go from your site to graph.instagram.com (or to graph.facebook.com if you pasted an access token made with Facebook login, for an Instagram account linked to a Facebook Page).

  • When: when you connect your Instagram account, when a post is published, when the app shows your live Instagram grid or checks whether a published post still exists, when the access token is renewed (about every 50 days) and when the statistics of a post are refreshed (during its first 30 days: every 3 hours at first, then every 12 hours, then every 2 days).
  • What is sent: your Instagram access token and account ID, the public addresses of the images or videos to publish, the caption and the alternative text of each image.
  • Instagram Terms of Use: https://help.instagram.com/581066165581870
  • Meta Privacy Policy: https://www.facebook.com/privacy/policy/

Foliocast Connect (foliocast.fr)

Used only for the “Connect with Instagram” button: it lets you log in on Instagram’s official page without creating your own Meta developer app. It is run by the author of this plugin.

  • When: only when you click “Connect with Instagram”. The plugin first checks that the service is available (a request to foliocast.fr/connect/health with no data from your site; a positive answer is remembered for one day, a failure for one hour, and in the meantime no new check is made), then opens the service’s login page. Opening the setup assistant sends nothing.
  • What is sent: the address of your site and a one-time security code. Instagram sends your access token to the service, which hands it straight to your site; it is kept encrypted for 5 minutes at most for that handover, then deleted.
  • Tester invitation: while Meta reviews the Foliocast app, only accounts invited as Instagram testers can connect. If you fill in the “Request my invitation” form shown after clicking “Connect with Instagram”, the plugin sends the e-mail address and Instagram account name you typed, your site’s host name and the interface language to foliocast.fr/connect/invite, so that the team can invite your account and e-mail you the steps. Nothing is sent if you do not fill in the form.
  • Terms: https://foliocast.fr/cgu.html
  • Privacy policy: https://foliocast.fr/privacy.html (in French: https://foliocast.fr/confidentialite.html)

You can also connect Instagram without this service, by pasting an access token from your own Meta app in Settings.

Foliocast Pulse (foliocast.fr, optional)

Used only if you choose “At the exact time” in the last step of the setup assistant, or click “Turn on on-time publishing” in Settings Automatic publishing. The service calls your site every minute so that scheduled posts go out on time without a cron job at your host. It is run by the author of this plugin. With a paid plan add-on, it turns on by itself when your site (HTTPS only) has no cron job, unless you chose “On the next visit to your site”; you can turn it off in Settings.

  • When: when you turn it on or off, when you create a new scheduled-task key while it is on (the service receives the new key), and when you open Settings while it is on (status check, remembered for 10 minutes). Then the service calls your site’s check address every minute.
  • What is sent: your site’s address, its check address (/wp-json/foliocast/v1/tick) and the scheduled-task key, which only allows starting that check. Turning it off deletes this data from the service.
  • Terms: https://foliocast.fr/cgu.html — Privacy policy: https://foliocast.fr/privacy.html

Your portfolio on another site (optional)

Only if you choose to import a portfolio that is not on this WordPress site.

  • When: when you paste its address in the setup assistant, then once a day to look for new projects.
  • What is requested: the public pages, sitemap, feed and images of the address you entered, from your own site, with the user agent FoliocastReader. Nothing about you or your visitors is sent. A site can refuse it with User-agent: FoliocastReader and Disallow: / in its robots.txt.
  • More: https://foliocast.fr/robot.html

Cloudinary (optional)

Only if you enter your own Cloudinary credentials in Settings. Cloudinary then hosts the images and videos at publishing time, and converts videos to the 9:16 Reel format when your server cannot.

  • When: when you save your Cloudinary credentials (a check of the credentials), when a post is published (upload, then deletion of the copy once Instagram has it), and when you import a video while Cloudinary is connected.
  • What is sent: the image or video file, signed with your Cloudinary API key.
  • Cloudinary Terms of Use: https://cloudinary.com/tos
  • Cloudinary Privacy Policy: https://cloudinary.com/privacy

Credits

  • Demo images (assets/demo, used only by the live preview): original artworks created for the Foliocast demo, GPL-2.0-or-later.
  • Instrument Sans font (used to write the optional brand band on images), Copyright 2022 The Instrument Sans Project Authors, SIL Open Font License 1.1 (fonts/OFL.txt).
  • Anton font (interface headings), Copyright 2020 The Anton Project Authors, SIL Open Font License 1.1 (assets/app/fonts/OFL.txt).
  • Archivo font (interface text), Copyright 2019 The Archivo Project Authors, SIL Open Font License 1.1 (assets/app/fonts/OFL.txt).
  • IBM Plex Mono font (interface figures and codes), Copyright © 2017 IBM Corp. with Reserved Font Name “Plex”, SIL Open Font License 1.1 (assets/app/fonts/OFL.txt).

Source code

All JavaScript and CSS in this plugin is shipped unminified and human-readable; nothing is obfuscated, and there are no minified files.

  • assets/app/style.css, assets/app/clair.css, assets/app/pwa.css, assets/app/shim.js, assets/app/theme.js, assets/app/pwa.js, assets/app/sw.js, assets/admin.js and assets/admin.css are written by hand and are their own source (no build step).
  • assets/app/app.js (the app on the Foliocast admin page) is written by hand too, in several files shipped with the plugin in assets/app/src/ (i18n.js, app.js, reels.js, learn.js, results.js, system.js, ui.js, onboard.js, help.js, growth.js). It is not transpiled, bundled or minified: it is these files put end to end, in this order. To rebuild it, run this command in assets/app/src/: cat i18n.js app.js reels.js learn.js results.js system.js ui.js onboard.js help.js growth.js > ../app.js (see also assets/app/src/README.md).
  • No third-party JavaScript or CSS library is bundled. The only third-party files are the fonts listed under Credits (SIL Open Font License 1.1, license texts in assets/app/fonts/OFL.txt and fonts/OFL.txt); nothing is loaded from another site.

Plugin tags