Periodically synchronizes influencer cards with Jira.
Download Obsidian from the official website.
Influencer Sync periodically synchronizes Jira influencer cards with Obsidian
Markdown notes. Each card is stored in a separate
<influencerId> <displayName>.md file.
After the plugin is available in the Obsidian Community directory:
Settings → Community plugins.Browse, find Influencer Sync, and select Install.Enable.For manual installation, download main.js and manifest.json from the
latest GitHub release,
place them in <vault>/.obsidian/plugins/influencers/, and enable the plugin
under Community plugins.
Download from Jira and Send local changes to Jira
commands.permissions.write is unavailable.Influencers/_AI.HTTP requests use Obsidian's requestUrl, which lets the desktop and mobile
apps access the configured Jira API without browser CORS restrictions.
https://jira.example.com/rest/asbis-inf/2.0.Influencers.The token is stored in the plugin's local data.json. This file is excluded
from Git and is never written to notes.
The plugin connects only to the Jira API URL configured by the user. During a download it retrieves influencer cards, comments, and the AI contract. During an explicit upload it sends modified allowed fields and new comments. Every direction requires confirmation.
The personal access token is stored locally by Obsidian and is sent only to the configured Jira API in the authorization header. The plugin has no telemetry, analytics, advertising, or third-party network services.
During synchronization, the plugin requests
GET /ai/obsidian-card-contract and saves the server-provided
_AI/influencer-card.schema.json and _AI/AI-INSTRUCTIONS.md files in the
cards folder. The schema is not bundled with the plugin, so Jira remains the
single source of the current contract. The plugin verifies that the contract
does not expand the six-field write allowlist.
The plugin never overwrites files without its service marker. A contract download failure is shown to the user but does not stop regular card synchronization.
Frontmatter contains the influencer identifier, version, synchronization time, status, country, agency, ratings, campaign count, and editable fields. Exactly six fields can be sent to Jira:
realNameemailmessengeragencyManagercommercialOfferUrlinternalRatingBefore each PUT, the plugin reads the card again and builds a complete form
using only writable contract fields. Computed fields such as rating,
campaignsCount, brands, platforms, followersByPlatform,
accountUrlsByPlatform, and minimumPrice are never included in the request.
Text added below <!-- comments --> is sent as one new comment. After a
successful POST, the local text is cleared immediately so that a subsequent
read failure cannot send the same comment twice.
If the version changes before PUT, or Jira returns 409 VERSION_CONFLICT,
the plugin does not retry with the new version. It downloads the current card,
saves it to the note, and preserves local values under
## Not sent (conflict).
Node.js 20 or later is required.
npm install
npm test
npm run build
For a local Jira instance, configure:
http://localhost/rest/asbis-inf/2.0
Tests do not use the network and do not require a token. Manual tests can read
the token from INF_PAT; never add it to source files, package scripts, or Git.
npm run build checks TypeScript and creates main.js. Manual installation
requires main.js and manifest.json.
npm install && npm run build.<vault>/.obsidian/plugins/influencers/ and copy main.js and
manifest.json into it.Influencer Sync under Obsidian Community plugins.Download from Jira or select the status bar action.influencerId, version, and syncedAt in
frontmatter.<!-- comments -->, and run
Send local changes to Jira.PUT must not be retried, and the local value must appear under
## Not sent (conflict).The manifest.json, versions.json, tsconfig.json, esbuild.config.mjs, and
version-bump.mjs structure is adapted from the official
obsidianmd/obsidian-sample-plugin,
licensed under 0BSD. This project uses the same license; see LICENSE.
The Obsidian requestUrl configuration for mutating requests (contentType
and same-origin Origin) was checked against the open-source
angelperezasenjo/obsidian-to-jira,
licensed under MIT.