Commit Graph

32 Commits

Author SHA1 Message Date
Francesco Di Lorenzo 79ee06a681 feat(typefully): support LinkedIn reshares 2026-04-28 09:18:27 +01:00
Francesco Di Lorenzo a57a932b01 Add X post analytics support to the Typefully skill, including reply filtering (#12)
## Summary
- add `analytics:posts:list` to `skills/typefully/scripts/typefully.js`
- add `--include-replies` / `--include_replies` so clients can opt back
in to X replies explicitly
- document the X analytics workflow and reply-filter behavior in
`skills/typefully/SKILL.md`
- add user-facing changelog entries in `skills/typefully/CHANGELOG.md`

## Why
Typefully API v2 now exposes X post analytics by date range, and backend
PR `typefully/typefully-backend#1476` changes the default result set to
exclude replies unless `include_replies=true` is sent. The public
skill/CLI should match that behavior and expose the opt-in path
directly.

## Validation
- `node -c skills/typefully/scripts/typefully.js`
- `node skills/typefully/scripts/typefully.js help | rg -n
"analytics:posts:list|include-replies|include_replies" -S`
- `node skills/typefully/scripts/typefully.js analytics:posts:list
--include_replies --end_date 2026-03-17`
- `node skills/typefully/scripts/typefully.js analytics:posts:list 123
--platform linkedin --include-replies --start-date 2026-03-10 --end-date
2026-03-17`
2026-03-17 11:07:50 +00:00
Francesco Di Lorenzo 98dcae28c4 feat(typefully): support X quote post URLs in drafts (#11) 2026-02-26 18:43:26 +00:00
Francesco Di Lorenzo 4749b3da4a ci: avoid duplicate PR checks 2026-02-26 18:40:50 +00:00
Francesco Di Lorenzo fcfc7cf6f2 docs: add LinkedIn mention resolver to changelog 2026-02-26 18:28:47 +00:00
Francesco Di Lorenzo a8fee35b56 Merge pull request #10 from typefully/feat/linkedin-mentions-cli-skill
feat: add LinkedIn mentions support to Typefully CLI and skill
2026-02-26 17:04:41 +00:00
Francesco Di Lorenzo 3835439a8d feat(typefully): add LinkedIn mention resolver support 2026-02-26 16:41:32 +00:00
Francesco Di Lorenzo ccaf5af06b Merge pull request #9 from typefully/queue-commands
feat(typefully): add queue commands and split test suite
2026-02-19 15:20:57 +00:00
Francesco Di Lorenzo 140ab23d6c test: migrate all specs to harness-based format 2026-02-19 14:43:22 +00:00
Francesco Di Lorenzo 793575d5f3 test: migrate suite to vitest and execa 2026-02-19 14:22:33 +00:00
Francesco Di Lorenzo 127e06e44e test: restore truncated media upload test 2026-02-19 14:14:49 +00:00
Francesco Di Lorenzo e7fb35af21 test: split CLI tests into command-focused files 2026-02-19 14:08:42 +00:00
Francesco Di Lorenzo 5c831fd4cb feat: add queue commands and docs updates 2026-02-19 14:08:39 +00:00
Francesco Di Lorenzo 7a8e7dc411 Merge pull request #8 from typefully/fix/typefully-cli-alias-tags-tests
fix(typefully): tag-only updates + safer aliases; add CLI tests
2026-02-10 14:21:39 +00:00
Francesco Di Lorenzo 96528ae0c4 docs(typefully): release changelog for 2026-02-10 2026-02-10 14:20:34 +00:00
Francesco Di Lorenzo 10be954d68 docs: add user-facing changelog + update agent guidance
- Move changelog into skill folder (skills/typefully/CHANGELOG.md)\n- Document that changelog entries must be user-facing only\n- Instruct agents to update the relevant skill changelog when changing CLI/skill behavior
2026-02-10 14:15:41 +00:00
Francesco Di Lorenzo ce1ff5416c docs: add changelog
Document changes in this branch (CLI fixes, new tests/CI).
2026-02-10 14:12:52 +00:00
Francesco Di Lorenzo cb738e4156 fix(typefully): prevent alias overwriting draft text
- Support tag-only drafts:update without modifying content\n- Harden create-draft/update-draft aliases (clean errors on missing values)\n- Honor --social-set-id/--social_set_id in config:set-default + other commands\n- Improve thread splitting to handle CRLF\n- Add hermetic node:test suite + GitHub Actions CI
2026-02-10 13:50:23 +00:00
Fabrizio Rinaldi a403e5813d docs: update README setup instructions to match interactive CLI flow (#7)
Restructured the setup section to follow the actual user workflow: install → copy API key → run setup → start using. Moved other installation methods to a collapsible details section, made the interactive setup command the primary path, and moved the environment variable to a secondary option in the troubleshooting section. Removed outdated guidance about manually configuring social_set_id in CLAUDE.md.
2026-01-30 09:31:58 +00:00
Fabrizio Rinaldi 1f7a938757 Add AGENTS.md symlink and document skill update process
- Create AGENTS.md as symlink to CLAUDE.md
- Add "Updating the Skill" section to remind updating last-updated date
- Update SKILL.md last-updated to 2026-01-29
2026-01-29 10:05:59 +00:00
Fabrizio Rinaldi 7c69d870fd fix: improve Typefully skill guidance for tags and multi-platform drafts (#6)
Add comprehensive guidance to prevent common agent mistakes:
- Tags: Always list existing tags before creating new ones
- Multi-platform: Always use single draft with drafts:update for different content per platform

Includes updated Common Actions table with platform-specific examples and new "Working with Tags" and "Publishing to Multiple Platforms" sections with clear step-by-step instructions.

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-29 10:02:42 +00:00
Fabrizio Rinaldi 455b4832a5 Fix API settings URL in README.md
Update URL from /settings/api to /?settings=api to match the correct
Typefully settings page location.
2026-01-28 17:39:22 +00:00
Fabrizio Rinaldi 61b1140d1a fix: improve API key not found error handling for AI agents
- Add explicit SKILL.md section instructing agents to tell user to run
  setup and stop/wait rather than searching for keys in random places
- Make CLI error message more explicit by including setup instruction
  in the main error text
2026-01-28 17:16:22 +00:00
Fabrizio Rinaldi 1f295292a3 Fix duplicate variable declaration in apiRequest function
Renamed function parameter from 'options' to 'opts' to avoid conflict
with the 'const options' object declared inside the function body.
2026-01-28 17:03:40 +00:00
Fabrizio Rinaldi f57fab14ba Improve default social set UX (#5) 2026-01-28 17:00:34 +00:00
Fabrizio Rinaldi 855fda39cc Rewrite Typefully CLI from Bash to JavaScript (#4)
* Rewrite Typefully CLI from Bash to JavaScript

Replaces shell script with zero-dependency Node.js implementation:
- Eliminates curl/jq/perl dependencies
- Adds flexible API key configuration (env, local .env, ~/.config)
- Enhanced media upload with presigned URLs and polling
- Improved error handling and JSON output
- Updated CLAUDE.md and SKILL.md documentation

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* Add --all flag to post to all connected platforms

- Add getAllConnectedPlatforms helper function
- Support --all flag in drafts:create command
- Error when both --all and --platform are used
- Update SKILL.md with new flag documentation
- Add publishing confirmation guideline

* Add secure setup command with JSON config

- Replace directory-scanning .env lookup with fixed config paths
- New `setup` command with interactive prompts for API key and storage location
- Support global (~/.config/typefully/config.json) and local (./.typefully/config.json) configs
- Config priority: env var > local > global
- Offer to add .typefully/ to .gitignore for local configs
- Remove config:set-key in favor of setup command
- Update docs to reflect new setup flow

* Preserve existing platforms in drafts:update and improve setup security

- drafts:update now preserves the draft's existing enabled platforms when
  --platform is not specified, instead of defaulting to X
- setup command offers to create .gitignore if none exists to protect API keys

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-28 15:43:00 +00:00
Fabrizio Rinaldi e1b5455e12 Add update instructions to Typefully skill (#2)
* Add update instructions to Typefully skill

Add self-update awareness so users know how to keep the skill current with API changes:
- Include last-updated date in frontmatter for freshness tracking
- Add freshness check instruction to prompt users when outdated
- Document update methods for each installation type (CLI, plugin, Cursor, manual)

Addresses suggestions from community feedback on keeping skills maintainable without blocking API releases.

* Use npx skills update instead of add for updates
2026-01-27 14:11:35 +00:00
Fabrizio Rinaldi 21d1b1340c Merge pull request #1 from typefully/fabrizio/typ-6671-apply-command-naming-and-parameter-updates-to-typefully
Apply command naming and parameter updates to Typefully CLI
2026-01-27 14:04:28 +00:00
Fabrizio Rinaldi 463c86c723 Apply command naming and parameter updates to Typefully CLI
- Rename commands to align with API terminology: accounts→social-sets, account→social-set
- Apply consistent colon-style naming to draft commands: drafts→draft:list, draft→draft:get, create→draft:create, update→draft:update, delete→draft:delete, tags→tag:list
- Add --sort parameter support to draft:list for sorting by created_at, updated_at, scheduled_date, published_at (with optional - prefix for descending)
- Add --media parameter to draft:create and draft:update for attaching media to posts (comma-separated IDs)
- Update documentation with new command names, examples, and comprehensive media workflow guides
- Add "Social Sets" section explaining terminology and configuration examples for project files

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-27 13:58:55 +00:00
Fabrizio Rinaldi 6285b3deb7 Add automation guidelines section 2026-01-26 17:00:57 +00:00
Fabrizio Rinaldi 023780265f Add reply-to, community, and share URL support
- --reply-to <url>: Reply to an existing X post
- --community <id>: Post to an X community
- --share: Generate a public share URL for drafts
- Fix help command to work without API key
2026-01-26 16:56:23 +00:00
Fabrizio Rinaldi 85a4dedb79 Initial release of Typefully agent skills
Add skill for AI agents to draft, schedule, and publish social media
posts via Typefully. Includes SKILL.md workflow definition and a Bash
CLI wrapper for the Typefully API v2.
2026-01-26 15:28:04 +00:00