Turn existing material into a connected, long-running social content series. Socialize is planned as a configuration-driven CLI that analyzes source material, generates an editable publishing plan, and publishes due posts to configured channels. The first use case is LinkedIn content for Pixboost, with YouTube transcripts as a potential source; the tool is not limited to technical content.
Status: Planning. The commands and configuration below describe the intended interface and are not implemented yet.
- Configure the project, sources, audience, channel, and posting cadence.
- Run
socialize planto create a series of connected, source-grounded drafts and assign publication dates. Review and edit the resulting plan. - Run
socialize publishon a recurring schedule. It publishes only eligible, unpublished posts whose publication date has arrived, then records the result in the plan.
For example, a 26-week plan with two posts per week would contain approximately 52 posts. Rather than producing isolated summaries, the series should develop themes over time, connect related posts, and link back to relevant sources.
socialize plan --dry-run should generate a small sample of undated drafts for
review, without scheduling or publishing anything. This is a real generation
run: it may read sources, make network and AI-provider calls, incur costs, and
save a local preview. It must not change the production plan.
The schema and command flags are provisional:
project: Pixboost
sources:
- type: files
path: ./sources
- type: youtube_transcripts
path: ./transcripts
channels:
linkedin:
audience: People interested in faster, better-performing websites
tone: helpful, approachable
schedule:
start: "2027-01-04"
timezone: Europe/London
days: [monday, thursday]
time: "09:00"
weeks: 26
dry_run:
sample_size: 3socialize plan --config config.yaml --dry-run
socialize plan --config config.yaml
socialize publish --plan plan.yamlAn illustrative entry in the editable plan:
posts:
- id: website-speed-01
channel: linkedin
publish_date: "2027-01-04T09:00:00+00:00"
status: planned
content: |
Your LinkedIn post goes here.
sources:
- https://example.com/blog/website-speedAfter a confirmed publication, the plan should record published status, the
actual publication time, and the platform's post identifier. Publication
failures must remain visible; ambiguous outcomes need reconciliation rather than
blind retries that could create duplicates.
- Define and validate the project configuration and editable plan formats, including stable post IDs, source references, channel settings, time zones, publication state, and relationships between posts.
- Ingest local text, Markdown, source code, and transcript files; support public blog and documentation URLs. Accept existing LinkedIn posts as supplied text or files rather than relying on scraping.
- Analyze sources into themes and claims with traceable references. Flag unsupported claims for review, and enable users to exclude source material.
- Generate a coherent series and calendar from the configured cadence, keeping drafts editable and preserving source and cross-post references.
- Implement dry-run generation of a configurable number of undated sample drafts, isolated from the production plan and publication workflow.
- Implement LinkedIn publishing for due posts using the appropriate API permissions. Persist each confirmed result, expose failures, and design for concurrent runs and ambiguous API responses to avoid duplicate posts.
- Support reliable recurring execution through an external scheduler, such as cron; document persistent plan storage and operational requirements.
- Document provider configuration, credentials, data handling, and setup. Keep credentials out of configuration and plan files, and clearly explain what source content is sent to external providers.
- Add tests for source handling, plan generation, dry-run isolation, scheduling and time zones, publication state, retries, and failure cases.
LinkedIn publishing requires authorization and applicable API permissions;
access may differ for personal profiles and organization pages. LinkedIn does
not provide the scheduling workflow assumed here: a recurring process must run
publish when posts are due. YouTube output and additional platforms are future
possibilities, not part of the initial publishing scope.
GNU General Public License v3.0 only. Commercial use is permitted; distribution of modified versions is subject to the license's terms.