{"id":18597871,"url":"https://github.com/liascript/liascript-exporter","last_synced_at":"2026-04-13T17:09:39.043Z","repository":{"id":43342337,"uuid":"252826941","full_name":"LiaScript/LiaScript-Exporter","owner":"LiaScript","description":"Export LiaScript courses into SCORM1.2 \u0026 2004, IMS, PDF or a standalone WEB project ...","archived":false,"fork":false,"pushed_at":"2026-03-10T20:29:57.000Z","size":151344,"stargazers_count":25,"open_issues_count":12,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-03-10T20:44:11.395Z","etag":null,"topics":["ims","liascript","lms","pdf","scorm","scorm12","scorm2004"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LiaScript.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-04-03T19:52:52.000Z","updated_at":"2026-03-10T20:30:01.000Z","dependencies_parsed_at":"2023-09-23T01:17:31.077Z","dependency_job_id":"af8d1ec3-8b2d-4070-8c7e-7a5625ea8466","html_url":"https://github.com/LiaScript/LiaScript-Exporter","commit_stats":{"total_commits":283,"total_committers":4,"mean_commits":70.75,"dds":"0.16961130742049468","last_synced_commit":"3c8baacf650c51a38abc5bb662986bdacc491b97"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/LiaScript/LiaScript-Exporter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaScript%2FLiaScript-Exporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaScript%2FLiaScript-Exporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaScript%2FLiaScript-Exporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaScript%2FLiaScript-Exporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LiaScript","download_url":"https://codeload.github.com/LiaScript/LiaScript-Exporter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaScript%2FLiaScript-Exporter/sbom","scorecard":{"id":83994,"data":{"date":"2025-08-11","repo":{"name":"github.com/LiaScript/LiaScript-Exporter","commit":"bba8059db381dee18731676cd549e683f8ece9e6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/22 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"12 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T06:32:05.091Z","repository_id":43342337,"created_at":"2025-08-15T06:32:05.091Z","updated_at":"2025-08-15T06:32:05.091Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30386969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T14:10:17.325Z","status":"ssl_error","status_checked_at":"2026-03-11T14:09:37.934Z","response_time":84,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ims","liascript","lms","pdf","scorm","scorm12","scorm2004"],"created_at":"2024-11-07T01:29:44.347Z","updated_at":"2026-04-13T17:09:39.014Z","avatar_url":"https://github.com/LiaScript.png","language":"TypeScript","readme":"# LiaScript-Exporter\n\nA generic LiaScript-Exporter that can export educational content into different\nformats, so that LiaScript courses can also be utilized in different Learning\nManagement Systems (LMS) or as static documents (PDF, ePub, DOCX, ...).\nSupported export formats include SCORM 1.2, SCORM 2004, IMS, xAPI, Web, PDF,\nePub, DOCX, Android, and more. See the last section\n[LMS Support List](#LMS-Support-List)\n\n\u003e __But__, it is still the easiest way to share your courses via\n\u003e __`https://LiaScript.github.io/course/?YOUR_REPO`__. The LiaScript course\n\u003e website is a fully fledged \"offline-first\" Progressive Web App (PWA), which\n\u003e allows to store all of your courses and states directly within your browser. If\n\u003e you are coming from Android, you can also directly install the website as an\n\u003e app on your device. Actually, there is no need for a back-end system anymore,\n\u003e but if you need to track the progress of your students, you can use this tool...\n\n## Usage\n\nThe LiaScript-Exporter can be used in three ways:\n\n### 1. Desktop App (recommended for most users)\n\nDownload and install the desktop application for your operating system directly from the\n[GitHub Releases](https://github.com/LiaScript/LiaScript-Exporter/releases)\npage. It provides the same web UI without needing to install Node.js or run any\ncommands — just download, install, and open.\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/05ddc764-8522-437a-b569-00b4df7d98b6\" controls width=\"600\"\u003e\u003c/video\u003e\n\n### 2. Web UI (via CLI)\n\nInstall Node.js first (it includes `npm`):\n\n\u003chttps://nodejs.org/en/download/\u003e\n\nThen install the LiaScript-Exporter globally:\n\n``` bash\nnpm install -g @liascript/exporter\n```\n\nOn Linux you may need `sudo`:\n\n``` bash\nsudo npm install -g @liascript/exporter\n```\n\nOn Windows you may need to run the terminal with administrator privileges.\n\nThen start the local web server:\n\n``` bash\n$ liaex serve\n```\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/f9d02a38-f6e0-45ef-b7a1-f9f424f8f318\" controls width=\"600\"\u003e\u003c/video\u003e\n\nThis starts the LiaScript Export Server on port 3000 (default). You can specify a different port:\n\n``` bash\n$ liaex serve --port 8080\n```\n\nThe web interface allows you to:\n\n- **Upload files** or specify a **Git repository** as your project source\n- Select an **export target** (Moodle, ILIAS, OPAL, Generic LMS, Web, PDF, ePub, DOCX, xAPI)\n- Configure **advanced settings** for your export\n- Queue export jobs and track their status\n\nAll exports are processed asynchronously in a queue, with only one export running at a time. After submitting an export, you'll receive a job ID and can track the progress on a status page.\n\n### 3. CLI\n\nFor scripting, automation, or CI/CD pipelines, the exporter can be used directly from the command line. Install the same way as above (Node.js + `npm install -g @liascript/exporter`).\n\nOnce installed, use `liaex` or `liascript-exporter`. Core options:\n\n``` shell\n-h --help     show help\n-i --input    input file (Markdown or YAML for projects)\n-p --path     path to pack (defaults to the input file's directory)\n-o --output   output file name (default: \"output\"; extension set by format)\n-f --format   scorm1.2, scorm2004, ims, web, pdf, epub, docx, xapi,\n              android, project, rdf, json, fullJson (default: json)\n-s --style    additional CSS to inject\n-v --version  print version\n-k --key      ResponsiveVoice key for text-to-speech\n```\n\nFormat-specific options are documented in the sections below. You can also run\n`liaex --help` at any time to see the full list.\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/591a6c89-f91e-401f-8b6d-8523f7173d78\" controls width=\"600\"\u003e\u003c/video\u003e\n\n### Docker (Android export)\n\nAndroid exports require the Android SDK, which can be complex to set up locally.\nThe easiest approach is to use the pre-built Docker image:\n\n``` bash\ndocker pull liascript/exporter\n```\n\nThen run an Android export inside the container:\n\n``` bash\ndocker run --rm -v $(pwd):/work liascript/exporter \\\n  liaex -f android \\\n  -i /work/README.md \\\n  --android-appId io.github.liascript.mycourse \\\n  --output /work/output\n```\n\nAlternatively you can build the image yourself from the provided `Dockerfile` in\nthis repository:\n\n``` bash\ndocker build -t liascript/exporter .\n```\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/f6cdc80d-1765-41bb-8f09-fa0a8fd26047\" controls width=\"600\"\u003e\u003c/video\u003e\n\nYou can also use the Docker container to run the web UI:\n\n``` bash\ndocker run --rm -p 4000:4000 liascript/exporter\n```\n\nThen open \u003chttp://localhost:4000\u003e in your browser to access the export UI.\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/10018dad-05b1-46f8-bfda-e5ffa9e81086\" controls width=\"600\"\u003e\u003c/video\u003e\n\n## Format Reference\n\n### SCORM1.2\n\nIf you want to generate a SCORM1.2 conformant package of your LiaScript-course,\nuse the following command:\n\n``` shell\n$ liaex -i project/README.md --format scorm1.2 --output rockOn\n\n..\nproject/README.md\nproject/Lizenz.md\n..\n[17:8:33] SCORM 'Init'\n...\n[17:8:33] SCORM 'Archiving /tmp/lia202037-30349-o6yx80.zb0eo/pro to rockOn.zip'\n[17:8:34] SCORM 'rockOn.zip 4977779 total bytes'\nDone\n\n$ ls\n.. rockOn.zip ..\n```\n\nThe format is `scorm1.2` and the input folder is `project/README.md`. All the\ncontent and sub-folders of this folder is then copied into your SCORM.zip. The\nname is defined by your output definition and contains the current version\nnumber of you course as well as the current date.\n\n\u003e Note: SCORM 1.2 is too restrictive for storing data, that is why we currently\n\u003e only support to store location information, all states of quizzes, surveys, etc.\n\u003e will be lost after reload.\n\u003e\n\u003e Better use __SCORM2004__ as output\n\n__Text 2 Speech `--key`__\n\nIf you want to use text2speech, you will have to register your website (where\nthe scorm package will be served) at \u003chttps://responsivevoice.org/\u003e ... it is free\nfor educational and non commercial purposes. After your registration, you will\nget a key in the format of `KluQksUs`. To inject this key into your package,\nsimply add the key as a parameter:\n\n``` shell\n$ liaex -i project/README.md --format scorm1.2 --key KluQksUs --output rockOn\n...\n```\n\n__Mastery Score `--scorm-masteryScore`__\n\nYou can define the percentage of quizzes and surveys a student had to fullfil\nin order to accomplish or pass the course by adding the `--scorm-masteryScore`\nparameter. Just set it to 0 to allow all to pass the course, otherwise choose a\nvalue between 0 and 100. All quizzes and surveys are treated equally, thus if\nyour course contains 10 quizzes, every quiz counts as 10%. If you do not set\nthis parameter, a default value of 80 percent is used.\n\n``` shell\n$ liaex -i project/README.md --format scorm1.2 --scorm-masteryScore 0 --output rockOn\n...\n```\n\n__Other Root `--path`__\n\nIf your README is not in the root of your project, you can also use the `--path`\nparameter to the directory to be copied into your scorm project. You will still\nhave to use `--input` to define the main course document, but his has to be\nrelative to path parameter.\n\n__`--scorm-organization`__\n\nThis parameter simply sets the organization parameter in your SCORM\n`imsmanifest` file. All other parameters are taken from the course.\n\n__`--scorm-typicalDuration`__\n\nSet the expected duration of the course in ISO 8601 duration format (e.g. `PT1H30M0S` for 1.5 hours). Default is `PT0H5M0S`.\n\n__`--scorm-iframe`__\n\nSome LMS like ILIAS or OpenOlat seem to have problems with the required\n`startingParameter` and will not load SCORM1.2 courses properly. To fix this,\nthis parameter can be used. It tries to run the course within an additional\n`\u003ciframe\u003e`.\n\n__`--scorm-embed`__\n\nEmbed the Markdown source directly into the JavaScript code. Use this for Moodle 4 and other LMS that impose restrictions on dynamic loading of external resources.\n\n__`--lia-subfolder`__\n\nPlace course files (Markdown, images, audio, etc.) into a `content/` subfolder, keeping LiaScript app files at the root. Automatically implies `--scorm-embed` for LMS compatibility.\n\n### SCORM2004\n\nThis output format provides the same settings as `scorm1.2`, but it allows to\nstore state information within the backend LMS. Currently supported are the\nstates for:\n\n* quizzes\n* surveys\n* tasks\n\ncoding elements currently exceed the max storage capacity, that is why these\nare not stored at the moment.\n\n``` shell\n$ liaex -i project/README.md --format scorm2004 --output rockOn\n..\nproject/README.md\nproject/Lizenz.md\n..\n[12:38:31] SCORM 'Init'\n...\n[12:38:31] SCORM 'Archiving /tmp/lia2022114-556265-d2jh0k.odg7e/pro to rockOn.zip'\n[12:38:32] SCORM 'rockOn.zip 19588706 total bytes'\nDone\n\n$ ls\n.. rockOn.zip ..\n```\n\n### SCORM Examples\n\nMinimal examples for SCORM1.2 and SCORM2004 for tested LMS:\n\n| LMS                                                   | Command                                                                                     |\n| ----------------------------------------------------- | ------------------------------------------------------------------------------------------- |\n| [ILIAS](https://www.ilias.de)                         | `liaex -i course/README.md -f scorm2004 --scorm-masteryScore 80 --scorm-iframe`             |\n| [learnworlds.com](https://learnworlds.com)            | `liaex -i course/README.md -f scorm2004 --scorm-masteryScore 80 --scorm-iframe`             |\n| Moodle 3.x                                            | `liaex -i course/README.md -f scorm1.2 --scorm-masteryScore 80 --scorm-iframe`              |\n|                                                       | [YouTube demonstration](https://www.youtube.com/watch?v=yk4uEqoKcpw)                        |\n| Moodle 4.x                                            | `liaex -i course/README.md -f scorm1.2 --scorm-masteryScore 80 --scorm-embed`               |\n| [OPAL](https://www.bps-system.de/opal-lernplattform/) | `liaex -i course/README.md -f scorm1.2 --scorm-masteryScore 80 --scorm-embed`               |\n| [open edX](https://openedx.org)                       | `liaex -i course/README.md -f scorm1.2 --scorm-masteryScore 80 --scorm-embed`               |\n| [OpenOlat](https://www.openolat.com)                  | `liaex -i course/README.md -f scorm1.2 --scorm-masteryScore 80 --scorm-embed`               |\n| [scrom.cloud](https://app.cloud.scorm.com)            | `liaex -i course/README.md -f scorm2004 --scorm-masteryScore 80 --scorm-iframe`             |\n|                                                       | Additionally check: Course Properties \u003e\u003e Compatibility Settings \u003e\u003e Wrap SCO Window with API |\n\n\n\n### IMS Content\n\nIMS Content is a very simplistic packaging format. Which allows you to embed\nyour course different LMS. The standard for the packaging format is defined\n[here](https://www.imsglobal.org/content/packaging/index.html).\n\nWe currently support the latest v1.1.4 standard.\n\n``` shell\n$ liaex -i project/README.md --format ims --output course\n..\nproject/README.md\nproject/Lizenz.md\n..\n6041733 total bytes\narchiver has been finalized and the output file descriptor has closed.\n\n$ ls\n.. course.zip ..\n```\n\n__`--ims-indexeddb`:__ By default no states are preserved, which means, if you\nreload the course, all quiz and coding states are destroyed. By using this\noption a course is generated, which stores the content within the browsers local\n`indexeddb`.\n\n__`--lia-subfolder`:__ Place course files (Markdown, images, audio, etc.) into a `content/` subfolder, keeping LiaScript app files at the root.\n\n``` shell\n$ liaex -i project/README.md --format ims --output course --ims-indexeddb\n..\nproject/README.md\nproject/Lizenz.md\n..Project settings:\n\n--project-no-meta          Disable the generation of meta information for OpenGraph and Twitter-cards.\n--project-no-categories    Disable the filter for categories/tags.\n--project-category-blur    Enable this and the categories will be blurred instead of deleted.\n--project-generate-pdf     PDFs are automatically generated and added to every card.\n6041733 total bytes\narchiver has been finalized and the output file descriptor has closed.\n\n$ ls\n.. course.zip ..\n```\n\n### WEB\n\nThis format will generate an autonomous \u0026 standalone web-project that can be uploaded\nto any webserver.\n\n```\n$ liaex --format web -i project/README.md -o outputFolder\nupdating title ...\nupdating description ...\nupdating logo ...\n```\n\nAll required sources as well as your project are copied into the `outputFolder` and\nyour course-file will be used as the default course. If you have defined the macros\n`comment` and `logo` within your course, these information will also be injected into\nthe index.html. Such that, if you share your project via facebook or twitter, this\ninformation is used to generate preview cards properly.\n\nIf you want your site to speak the text out loud, then you will have to add your\nresponsivevoice-key via `--key`.\n\n__`--web-zip`:__ Use this parameter to directly bundle all input into a zip\nfile instead of a folder.\n\n__`--web-iframe`:__ This will put the course into an secondary iframe, which will\nhide the course-URL (the Markdown-file). Unfortunately, it will not be possible\nanymore to link from outside to a specific slide.\n\n__`--web-indexeddb`:__ Generate a LiaScript package that will store states persistently.\nBy default, the database is generated uniquely for the packed course. That means,\nevery update will use a new database, which makes sense, if and only if, typos get\ncorrected or content is added to the end of the document. Mixing content and moving\nquizzes and surveys to different slides might cause some problems in restoring the\nstate. But you can use this parameter with a key:\n\n```shell\nliaex --format web -i project/README.md -o outputFolder --web-indexeddb someKeyToUse\nupdating title ...\nupdating description ...\nupdating logo ...\n```\n\n\u003e **Note:** Web exports must be served over HTTP — opening `index.html` directly\n\u003e in a browser (`file://`) will not work due to browser security restrictions.\n\u003e To preview locally, use any static file server, for example:\n\u003e\n\u003e ```shell\n\u003e # using Node.js serve\n\u003e npx serve outputFolder\n\u003e\n\u003e # using Python\n\u003e python3 -m http.server --directory outputFolder\n\u003e ```\n\u003e\n\u003e Then open `http://localhost:3000` (or the port shown) in your browser.\n\n### Android\n\n\u003e **Tip:** Setting up the Android SDK locally can be complex. The easiest approach\n\u003e is to use the pre-built Docker image — see [Docker (Android export)](#Docker-Android-export) above.\n\nTo generate an APK project of your course locally, download the\n[Android SDK](https://developer.android.com/studio) and provide the path\nvia the option `--android-sdk`. Additionally you will have to define an `appId`\nvia `--android-appId`, which is in most cases a unique URL (in reverse order)\nthat is pointing to your website/project. This export uses\n[capacitorjs](https://capacitorjs.com) to pack the entire LiaScript runtime\nenvironment and your resources into one installable Android apk.\n\n``` shell\n$ liaex -f android \\\n  -i ../LiaBooks/Arbeitsbuch-Prolog/README.md \\\n  --android-sdk /home/andre/Android/Sdk \\\n  --android-appId io.github.liascript.arbeitsbuch-prolog\n...\n../LiaBooks/Arbeitsbuch-Prolog\n../LiaBooks/Arbeitsbuch-Prolog/img\n../LiaBooks/Arbeitsbuch-Prolog/img/turtle.png\n...\nadded 401 packages, and audited 402 packages in 34s\n\n23 packages are looking for funding\n  run `npm fund` for details\n\n5 moderate severity vulnerabilities\n\n...\n✔ Adding native android project in android in 37.13ms\n✔ add in 38.39ms\n✔ Copying web assets from dist to android/app/src/main/assets/public in 97.33ms\n✔ Creating capacitor.config.json in android/app/src/main/assets in 207.60μs\n✔ copy android in 100.41ms\n✔ Updating Android plugins in 592.70μs\n[info] Found 1 Capacitor plugin for android:\n       @capacitor-community/text-to-speech@1.1.2\n✔ update android in 18.04ms\n✔ Syncing Gradle in 143.57μs\n[success] android platform added!\nFollow the Developer Workflow guide to get building:\nhttps://capacitorjs.com/docs/basics/workflow\n📦  Capacitor Resources v2.0.5\n-----------------------------\n\nChecking files and directories...\n ✓  Processing files for: android\n ✓  Icon file ok (1024x1024)\n ✓  Splash file ok (2732x2732)\n ✓  Output directory ok (resources)\n\nGenerating files...\n ✓  Generated icon files for android\n ✓  Generated splash files for android\n ✓  Successfully generated all files\nRoot path: /tmp/lia202227-209284-1q2g2zd.tn3x\n\n----------------------------------------------\n\n📦  Capacitor resources generated successfully!\n...\nCurrently detected usages in: root project 'android', project ':app', project ':capacitor-android', ...\n\u003e Task :app:preBuild UP-TO-DATE\n\u003e Task :app:preDebugBuild UP-TO-DATE\n\u003e Task :capacitor-android:preBuild UP-TO-DATE\n\u003e Task :capacitor-android:preDebugBuild UP-TO-DATE\n\u003e Task :capacitor-android:compileDebugAidl NO-SOURCE\n\nDeprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.\nUse '--warning-mode all' to show the individual deprecation warnings.\nSee https://docs.gradle.org/7.0/userguide/command_line_interface.html#sec:command_line_warnings\n\nBUILD SUCCESSFUL in 3s\n103 actionable tasks: 103 executed\n\nDONE\n\n$ ls \n... output.apk ...\n```\n\n\u003e __Note:__ To achieve better performance and offline capabilities, try to add\n\u003e all resources as local ones to your project (i.e. images, audio,scripts, css).\n\u003e\n\u003e If you want to preview the result, simply use `--android-preview`, which will\n\u003e open android-studio\n\n__`--android-appName`__\n\nName of the app. The main title of the course is used as default.\n\n__`--android-icon`__\n\nOptional app icon image (1024x1024 px).\n\n__`--android-splash`__\n\nOptional splash screen image (2732x2732 px).\n\n__`--android-splashDuration`__\n\nDuration for the splash screen in milliseconds. Default is 0.\n\n__Still a bit experimental__\n\n### PDF\n\nFor printing out courses to PDF this package uses\n[puppeteer](https://github.com/puppeteer/puppeteer/blob/main/docs/api/puppeteer.pdfoptions.md),\nwhich is an entire browser. This blows up the project a bit, but it allows to\nstore also the results of iframes, and to run coding examples. What this export\ndoes is basically load the entire course within a single page and run all\nscripts included, code examples, etc. Videos, iframes, audio, etc. are preserved\nas screenshots, which provide a link to the original resource.\n\nThis format has a `--pdf-preview` mode, which allows you to inspect your course,\nwhich works also with https inputs.\n\n``` shell\nliaex --format pdf --pdf-preview -i https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/00_Einfuehrung.md\n```\n\nThere are a couple of tweaks, that you can use, have a look at the following\nresource:\n\n[Puppeteer pdf settings](https://github.com/puppeteer/puppeteer/blob/main/docs/api/puppeteer.pdfoptions.md)\n\n__`--pdf-stylesheet`__\n\nNext to these settings, you can also change the appearance of fonts, colors, etc.\nwith you custom CSS. This can define anything, and you can also overwrite all CSS\nvariables LiaScript is based on.\n\n``` bash\n$ cat custom.css \\\n:root {\n    --color-highlight: 2, 255, 0;\n    --color-background: 122, 122, 122;\n    --color-border: 0, 0, 0;\n    --color-highlight-dark: 0, 0, 0;\n    --color-highlight-menu: 0, 0, 0;\n    --color-text: 0, 0, 255;\n    --global-font-size: 1rem;\n    --font-size-multiplier: 2;\n}% \n$\n$ liaex --format pdf \\\n  -o example \\\n  --pdf-stylesheet custom.css \\\n  -i https://github.com/TUBAF-IfI-LiaScript/VL_ProzeduraleProgrammierung/blob/master/08_Objekte.md\n\ndepending on the size of the course, this can take a while, please be patient...\n```\n\n__`--pdf-theme`__\n\nIf you want to change only the appearance by defining the LiaScript theme,\nwhich can be either: default, turquoise, blue, red, yellow.\n\n``` bash\n$ liaex --format pdf \\\n  -o example \\\n  --pdf-theme red \\\n  -i https://github.com/TUBAF-IfI-LiaScript/VL_ProzeduraleProgrammierung/blob/master/08_Objekte.md\n\ndepending on the size of the course, this can take a while, please be patient...\n```\n\n__`--pdf-timeout`__\n\nYou have to be aware, that the PDF generation can be quite time consuming\nespecially for large courses with a lot of scripts and code-snippets to be\nexecuted and multimedia to be loaded. `puppeteer` thus sometimes does not know\nwhen the course is ready. If the generation fails, you should try to increase\nthis value, the default is 15000, which means 15 seconds.\n\n``` bash\n$ liaex --format pdf \\\n  -o example \\\n  --pdf-timeout 15000 \\\n  -i https://github.com/TUBAF-IfI-LiaScript/VL_ProzeduraleProgrammierung/blob/master/08_Objekte.md\n\ndepending on the size of the course, this can take a while, please be patient...\n```\n\nThe following are puppeteer-specific settings (see [puppeteer PDF options](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagepdfoptions)):\n\n__`--pdf-scale`__ Scale of the webpage rendering. Defaults to 1. Must be between 0.1 and 2.\n\n__`--pdf-displayHeaderFooter`__ Display header and footer. Defaults to false.\n\n__`--pdf-headerTemplate`__ HTML template for the print header. You can use the classes `date`, `title`, `url`, `pageNumber`, `totalPages`.\n\n__`--pdf-footerTemplate`__ HTML template for the print footer. Same format as `--pdf-headerTemplate`.\n\n__`--pdf-printBackground`__ Print background graphics. Defaults to false.\n\n__`--pdf-landscape`__ Paper orientation. Defaults to false.\n\n__`--pdf-pageRanges`__ Paper ranges to print, e.g. `\"1-5, 8, 11-13\"`.\n\n__`--pdf-format`__ Paper format (e.g. `A4`, `Letter`). Takes priority over width/height. Defaults to A4.\n\n__`--pdf-width`__ Paper width, accepts values with units (e.g. `210mm`).\n\n__`--pdf-height`__ Paper height, accepts values with units.\n\n__`--pdf-margin-top`__ Top margin, accepts values with units.\n\n__`--pdf-margin-right`__ Right margin, accepts values with units.\n\n__`--pdf-margin-bottom`__ Bottom margin, accepts values with units.\n\n__`--pdf-margin-left`__ Left margin, accepts values with units.\n\n__`--pdf-preferCSSPageSize`__ Give any CSS `@page` size declared in the page priority over `--pdf-format` / width / height options.\n\n__`--pdf-omitBackground`__ Hide the default white background, allowing screenshots with transparency. Defaults to true.\n\n### ePub\n\nePub export generates e-books from your LiaScript course using Puppeteer to render content and the `@lesjoursfr/html-to-epub` library to produce the ePub file. The output is compatible with most e-readers.\n\n``` shell\n$ liaex -i project/README.md --format epub --epub-title \"My Course\" --epub-author \"Author Name\" --output course\n```\n\n**Required settings:**\n\n`--epub-title` Title of the book.\n\n`--epub-author` Author name(s), semicolon-separated for multiple authors.\n\n**Optional settings:**\n\n`--epub-publisher` Publisher name.\n\n`--epub-cover` Path to cover image (absolute path or URL).\n\n`--epub-description` Book description.\n\n`--epub-language` Language code in 2 letters (default: `en`).\n\n`--epub-version` EPUB version: 2 or 3 (default: 3).\n\n`--epub-stylesheet` Path to custom CSS file for styling.\n\n`--epub-theme` LiaScript theme: default, turquoise, blue, red, yellow.\n\n`--epub-toc-title` Title for table of contents (default: `\"Table Of Contents\"`).\n\n`--epub-hide-toc` Hide table of contents in the generated EPUB (default: false).\n\n`--epub-timeout` Additional wait time for rendering in ms (default: 15000).\n\n`--epub-fonts` Comma-separated paths to custom font files to embed.\n\n`--epub-chapter-title` Custom title for the main chapter (default: course title).\n\n`--epub-preview` Open preview browser for debugging (default: false).\n\n### DOCX\n\nDOCX export generates Microsoft Word documents from your LiaScript course using Puppeteer to render content and the `@turbodocx/html-to-docx` library. The output is compatible with Microsoft Word 2007+, LibreOffice Writer, and Google Docs.\n\n``` shell\n$ liaex -i project/README.md --format docx --output course\n```\n\n**Optional settings:**\n\n`--docx-title` Title of the document.\n\n`--docx-author` Author / creator of the document.\n\n`--docx-subject` Subject of the document.\n\n`--docx-description` Description of the document.\n\n`--docx-language` Language code for spell checker (default: `en-US`).\n\n`--docx-orientation` Page orientation: portrait or landscape (default: `portrait`).\n\n`--docx-font` Font name (default: `Arial`).\n\n`--docx-font-size` Font size in half-points/HIP (default: 22, equals 11pt).\n\n`--docx-header` Enable header in the document (default: false).\n\n`--docx-header-html` Custom HTML string for the header.\n\n`--docx-footer` Enable footer in the document (default: false).\n\n`--docx-footer-html` Custom HTML string for the footer.\n\n`--docx-page-number` Add page numbers to the footer (default: false).\n\n`--docx-stylesheet` Path to a local CSS file to inject before export.\n\n`--docx-theme` LiaScript theme: default, turquoise, blue, red, yellow.\n\n`--docx-timeout` Additional wait time after rendering in ms (default: 15000).\n\n`--docx-preview` Open preview browser for debugging (default: false).\n\n### xAPI\n\nxAPI (Experience API / Tin Can API) is a standard for tracking learning experiences and interactions with a Learning Record Store (LRS). The exporter generates a self-contained web package with a `tincan.xml` manifest.\n\n``` shell\n$ liaex -i project/README.md --format xapi --output course\n```\n\n`--xapi-endpoint` URL of the Learning Record Store (LRS) endpoint.\n\n`--xapi-auth` Authentication string for the LRS (e.g., `\"Basic dXNlcm5hbWU6cGFzc3dvcmQ=\"`).\n\n`--xapi-actor` JSON string representing the xAPI actor (default: anonymous).\n\n`--xapi-course-id` Custom identifier for the course (default: course URL).\n\n`--xapi-course-title` Custom title for the course (default: from document).\n\n`--xapi-mastery-threshold` Score threshold for mastery (default: 0.8).\n\n`--xapi-progress-threshold` Score threshold for progress (default: 0.9).\n\n`--xapi-debug` Enable debug logging for xAPI statements.\n\n`--xapi-zip` Package the output as a zip file.\n\n`--lia-subfolder` Place course files (Markdown, images, audio, etc.) into a `content/` subfolder, keeping LiaScript app files at the root.\n\n### Project\n\nProjects are a way to bundle a collection of courses and to make a custom overview page for it.\n\nThe input has to be a yaml file that looks like the following one:\n\n```yml\ntitle: \u003e\n  \u003cspan style=\"background-color: rgba(0,106,179,0.75); padding: 5px; color: white\"\u003e\n    My personal OER - collection\n  \u003c/span\u003e\n\ncomment: \u003e\n  This is used as a subtitle or as a description of your page\n\nlogo: https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/Universitaetsbibliothek_Freiberg_Fassade.jpg/1024px-Universitaetsbibliothek_Freiberg_Fassade.jpg\n\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Logo_TU_Bergakademie_Freiberg.svg/242px-Logo_TU_Bergakademie_Freiberg.svg.png\n\n# Optional sticky navigation bar at the top of the page.\n# 'brand' is the text/logo shown on the left, 'background' sets the bar color,\n# 'theme' controls text contrast (dark = white text, light = dark text).\n# Each entry in 'links' becomes a nav item.\nnavbar:\n  brand: My OER Collection\n  background: \"#0B6E75\"   # optional, defaults to #0B6E75\n  theme: dark             # dark | light, defaults to dark\n  links:\n    - label: Home\n      url: \"#\"\n    - label: Section 1\n      url: \"#section-1\"\n    - label: Section 2\n      url: \"#section-2\"\n\nfooter: \u003e\n  Simply add a custom footer - that can also contain HTML\n  \u003ca href=\"https://liascript.github.io\" target=\"_blank\"\u003eMade with LiaScript\u003c/a\u003e\n\n# With this settings you can customize social metadata, og-graph for facebook or twitter\n# if not present, the title, comment, and logo will be used.\n# You can explicitly turn this of with the cmd-parameter --project-no-meta\nmeta:\n  title: OER-Collection\n  description: Sammlung der OER Inhalte der Arbeitsgruppe Softwareentwicklung und Robotik (TU Freiberg)\n  #image: url\n\n# A collection is where you put all your courses into, all information, such as title, comment, logo, etc.\n# will be taken from the links that you provide ...\ncollection:\n\n  - url: https://raw.githubusercontent.com/LiaScript/docs/master/README.md\n  - url: https://raw.githubusercontent.com/LiaBooks/LiaScript-Tutorial/main/README.md\n  - url: https://raw.githubusercontent.com/LiaPlayground/LiaScript_WeAreDevelopers2022/main/README.md\n\n  # Additionally it is possible to manually overwrite parameters\n  - url: https://raw.githubusercontent.com/LiaPlayground/LiaScript_Tutorial_Kigali/main/README.md\n    title: eLearning Africa Workshop 2022\n    comment: Shows only an introduction, please follow the links within the course.\n    # logo: https://another_image.jpg\n    # or leave, so that no card-image is added to your preview-cards\n    # logo: \n\n    # You can manually tag courses, if this has not been done within the main comment of the course.\n    # By default, these tags will be treated as categories, which can be used to navigate through\n    # your courses. To disable this, use the cmd-param --project-no-categories\n    # \n    # For smaller overviews, you can also use the --project-category-blur parameter.\n    # this will not hide the courses, that do not match, but instead blur them.\n    tags:\n      - Tutorial\n      - LiaScript\n      - OER\n\n  - html: \u003e\n      \u003chr\u003e\n      \u003ch1\u003eSome content in between\u003c/h1\u003e\n      \n      \u003cp\u003eYou can add additional content in between to group your course collections or provide more information.\u003c/p\u003e\n\n  # If you want to group multiple courses into one sub-collection, then instead of an \"-url:\"\n  # define another `collection`. All parameters can be changed as above. Additionally you can switch of images or comments,\n  # just by adding an empty attribute. And, it is also possible to add tags to every sub-course.\n  - title: Prozedurale Programmierung\n    comment: todo\n    collection:\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_ProzeduraleProgrammierung/master/00_Einfuehrung.md\n        #title: Rename the current course\n        #logo: Manually set an logo\n        #comment: Add a custom description, this will overwrite the comment within the course\n        # tags will be used for navigation and searching\n        #tags: \n        # - C++\n        # - Programmierung\n        # - Hardware\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_ProzeduraleProgrammierung/master/01_EingabeAusgabeDatentypen.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_ProzeduraleProgrammierung/master/02_OperatorenKontrollstrukturen.md\n      #- url: ...\n\n  # HTML content can be placed between cards\n  - html: \u003e\n      \u003chr\u003e\n      \u003ch1\u003eSoftwareentwicklung\u003c/h1\u003e\n      \n      \u003cp\u003etodo\u003c/p\u003e\n\n  - title: Softwareentwicklung\n    comment: Todo\n    grid: true # if you have larger collections and you want them to appear in a grid and not in a row, with some\n               # hidden content, then set the grid-parameter to true.\n    collection:\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/00_Einfuehrung.md\n        logo: # this is used to empty the default image icon\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/01_Software.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/02_DotNet.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/03_CsharpGrundlagenI.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/04_CsharpGrundlagenII.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/05_CsharpGrundlagenIII.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/06_ProgrammflussUndFunktionen.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/07_OOPGrundlagenI.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/08_OOPGrundlagenII.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/09_Vererbung.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/10_AbstrakteKlassenUndInterfaces.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/11_VersionsverwaltungI.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/12_VersionsverwaltungII.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/13_UML_Modellierung.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/14_UML_ModellierungII.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/15_UML_ModellierungIII.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/16_Testen.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/17_Dokumentation_BuildTools.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/18_ContinuousIntegration.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/19_Generics.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/20_Container.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/21_Delegaten.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/22_Events.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/23_Threads.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/24_Tasks.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/25_LINQ.md\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/26_DesignPattern.md\n        arguments:\n          - pdf-format: A3\n          - project-generate-scorm2004: true\n          - scorm-organization: TU-Bergakademie Freiberg\n\n      - url: https://raw.githubusercontent.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/master/27_Anwendungen.md\n        arguments:\n          - project-generate-pdf: false\n```\n\nBasic usage:\n\n``` shell\nliaex -i curriculum.yml --format project\n```\n\nIf you want to add precompiled pdf to every course, then you simply have to add the `--project-generate-pdf` command.\nAdditionally, you can pass any pdf settings to customize the pdf output.\n\n\n``` shell\nliaex -i curriculum.yml --format project --project-generate-pdf --pdf-format A4\n```\n\nAs it is depicted in the last part of the yaml file above, you can manually set or change all parameters.\nSuch as, for which projects you want to generate a pdf and pass also all additional parameters.\nSimply pass all arguments as `arguments` with the long name and without the starting dashes.\nThis way you can generate a very detailed project configuration and overview.\n\n**Project settings:**\n\n**Navbar (YAML key):** Add a `navbar` block to your project YAML to generate a sticky navigation bar at the top of the page:\n\n```yaml\nnavbar:\n  brand: My OER Collection    # text shown on the left side\n  background: \"#0B6E75\"       # optional bar color (default: #0B6E75)\n  theme: dark                 # dark (white text) | light (dark text), default: dark\n  links:\n    - label: Home\n      url: \"#\"\n    - label: Section 1\n      url: \"#section-1\"\n```\n\nIf `navbar` is absent, no navigation bar is rendered.\n\n`--project-no-meta` Disable the generation of meta information for OpenGraph and Twitter-cards.\n\n`--project-no-rdf` Disable the generation of JSON-LD.\n\n`--project-no-categories` Disable the filter for categories/tags.\n\n`--project-category-blur` Instead of hiding courses that do not match a selected category, blur them.\n\n`--project-generate-scorm12` Generate a SCORM 1.2 package for every course. Pass additional SCORM settings alongside this flag.\n\n`--project-generate-scorm2004` Generate a SCORM 2004 package for every course. Pass additional SCORM settings alongside this flag.\n\n`--project-generate-ims` Generate IMS resources for every course. Pass additional IMS settings alongside this flag.\n\n`--project-generate-pdf` PDFs are automatically generated and added to every card. Pass additional PDF settings alongside this flag.\n\n`--project-generate-cache` Only generate new files if they do not already exist.\n\n\n### RDF \u0026 JSON-LD\n\nThe LiaScript metainformation can be exported to RDF, either as json-ld or as n-quads. The option `--rdf-preview` generates a console output that can be used to inspect the result. Otherwise the result is stored in a file, defined by `-o`, the file-ending is either `.jsonld` or `.nq`, depending on the `--rdf-format`\n\n``` shell\nliaex --format rdf --rdf-preview -i https://raw.githubusercontent.com/liaScript/docs/master/README.md\n\n{\n  \"@context\": \"http://schema.org\",\n  \"@id\": \"https://raw.githubusercontent.com/liaScript/docs/master/README.md\",\n  \"@type\": \"Course\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"email\": \"LiaScript@web.de\",\n    \"name\": \"André Dietrich\"\n  },\n  \"description\": \"This document shall provide an entire compendium and course on the development of Open-courSes with [LiaScript](https://LiaScript.github.io). As the language and the systems grows, also this document will be updated. Feel free to fork or copy it, translations are very welcome...\",\n  \"image\": {\n    \"@type\": \"ImageObject\",\n    \"url\": \"https://liascript.github.io/img/bg-showcase-1.jpg\"\n  },\n  \"inLanguage\": \"en\",\n  \"name\": \"LiaScript\",\n  \"url\": \"https://LiaScript.github.io/course/?https://raw.githubusercontent.com/liaScript/docs/master/README.md\",\n  \"version\": \"22.0.2\"\n}\n```\n\nThe result as n-quads looks like this:\n\n``` shell\nliaex --format rdf --rdf-preview --rdf-format n-quads -i https://raw.githubusercontent.com/liaScript/docs/master/README.md\n\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://schema.org/author\u003e _:b0 .\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://schema.org/description\u003e \"This document shall provide an entire compendium and course on the development of Open-courSes with [LiaScript](https://LiaScript.github.io). As the language and the systems grows, also this document will be updated. Feel free to fork or copy it, translations are very welcome...\" .\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://schema.org/image\u003e _:b1 .\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://schema.org/inLanguage\u003e \"en\" .\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://schema.org/name\u003e \"LiaScript\" .\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://schema.org/url\u003e \"https://LiaScript.github.io/course/?https://raw.githubusercontent.com/liaScript/docs/master/README.md\" .\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://schema.org/version\u003e \"22.0.2\" .\n\u003chttps://raw.githubusercontent.com/liaScript/docs/master/README.md\u003e \u003chttp://www.w3.org/1999/02/22-rdf-syntax-ns#type\u003e \u003chttp://schema.org/Course\u003e .\n_:b0 \u003chttp://schema.org/email\u003e \"LiaScript@web.de\" .\n_:b0 \u003chttp://schema.org/name\u003e \"André Dietrich\" .\n_:b0 \u003chttp://www.w3.org/1999/02/22-rdf-syntax-ns#type\u003e \u003chttp://schema.org/Person\u003e .\n_:b1 \u003chttp://schema.org/url\u003e \"https://liascript.github.io/img/bg-showcase-1.jpg\" .\n_:b1 \u003chttp://www.w3.org/1999/02/22-rdf-syntax-ns#type\u003e \u003chttp://schema.org/ImageObject\u003e .\n```\n\nIf you are working on a local repository and you want to add the remote URL, you can specify `--rdf-url` and run it with a local file as input:\n\n``` shell\nliaex --format rdf --rdf-preview -i ../LiaBooks/docs/README.md --rdf-url https://raw.githubusercontent.com/liaScript/docs/master/README.md\n\n{\n  \"@context\": \"http://schema.org\",\n  \"@id\": \"https://raw.githubusercontent.com/liaScript/docs/master/README.md\",\n  \"@type\": \"Course\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"email\": \"LiaScript@web.de\",\n    \"name\": \"André Dietrich\"\n  },\n  \"description\": \"This document shall provide an entire compendium and course on the development of Open-courSes with [LiaScript](https://LiaScript.github.io). As the language and the systems grows, also this document will be updated. Feel free to fork or copy it, translations are very welcome...\",\n  \"image\": {\n    \"@type\": \"ImageObject\",\n    \"url\": \"https://liascript.github.io/img/bg-showcase-1.jpg\"\n  },\n  \"inLanguage\": \"en\",\n  \"name\": \"LiaScript\",\n  \"url\": \"https://LiaScript.github.io/course/?https://raw.githubusercontent.com/liaScript/docs/master/README.md\",\n  \"version\": \"22.0.2\"\n}\n```\n\n---\n\nLocal course but without `--rdf-url`\n\n```\nliaex --format rdf --rdf-preview -i ../LiaBooks/docs/README.md\n\n{\n  \"@context\": \"http://schema.org\",\n  \"@type\": \"Course\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"email\": \"LiaScript@web.de\",\n    \"name\": \"André Dietrich\"\n  },\n  \"description\": \"This document shall provide an entire compendium and course on the development of Open-courSes with [LiaScript](https://LiaScript.github.io). As the language and the systems grows, also this document will be updated. Feel free to fork or copy it, translations are very welcome...\",\n  \"image\": {\n    \"@type\": \"ImageObject\",\n    \"url\": \"https://liascript.github.io/img/bg-showcase-1.jpg\"\n  },\n  \"inLanguage\": \"en\",\n  \"name\": \"LiaScript\",\n  \"version\": \"22.0.2\"\n}\n```\n\n* `--rdf-type`: By default this type of resource is associated with `Course`, but you can use this param if you want to define `EducationalResource` or something else...\n* `--rdf-educationalLevel`: This is currently not defined, but can be injected, typically these are beginner, intermediate, advanced, ...\n* `--rdf-license`: Use this to specify the URL of the associated license to your course. This tool will automatically check if there is a LICENSE file in your project root and add this.\n* `--rdf-template`: Use a URL or local JSON file as a base template for the RDF output.\n\n#### What LiaScript meta-information is used\n\n``` markdown\n\u003c!--\nauthor: Your Name\nemail: author@email.com\ncomment: Some basic information about your course\nversion: 12.0.2\nlogo: https://someimageURL.jpg\ntags: keyword 1, keyword 2, keyword 3\nlanguage: en\n--\u003e\n\n# Title of the course\n...\n\n```\n\nThis will be translated to:\n\n``` json\n{\n  \"@context\": \"http://schema.org\",\n  \"@id\": \"https://raw.githubusercontent.com/.../master/README.md\",\n  \"@type\": \"Course\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"email\": \"author@email.com\",\n    \"name\": \"Your Name\"\n  },\n  \"description\": \"Some basic information about your course\",\n  \"image\": {\n    \"@type\": \"ImageObject\",\n    \"url\": \"https://someimageURL.jpg\"\n  },\n  \"inLanguage\": \"en\",\n  \"name\": \"Title of the course\",\n  \"url\": \"https://LiaScript.github.io/course/?https://raw.githubusercontent.com/.../master/README.md\",\n  \"version\": \"12.0.2\",\n  \"keywords\": [\n    \"keyword 1\",\n    \"keyword 2\",\n    \"keyword 3\"\n  ]\n}\n```\n\n## GitHub Action\n\nExport your LiaScript courses directly in GitHub workflows with this GitHub Action.\n\n### Quick Start\n\nAdd to your `.github/workflows/export.yml`:\n\n```yaml\nname: Export Course\non: [push]\n\njobs:\n  export:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v4\n    \n    - name: Export to SCORM\n      uses: LiaScript/LiaScript-Exporter@master\n      with:\n        input-file: 'README.md'\n        format: 'scorm1.2'\n        output-name: 'my-course'\n        scorm-organization: 'My Organization'\n    \n    - name: Upload SCORM package\n      uses: actions/upload-artifact@v4\n      with:\n        name: scorm-package\n        path: '*.zip'\n```\n\n### Documentation\n\nFor complete GitHub Action documentation, inputs, outputs, and more examples, see: [`action/README.md`](action/README.md)\n\n## Contributions\n\n### Custom extensions\n\nIf you are interested in creating integrations for other systems, you can define\ncustom connectors for your target system. They are located at\n[src/javascript/connectors](https://github.com/liaScript/LiaScript/tree/master/src/javascript/connectors).\nEach connector is a simple class that inherits from `Base/Connector` and overrides\nthe relevant methods for the target system.\n\n## LMS Support List\n\nMost of the data is taken from:\n\n* \u003chttps://www.ispringsolutions.com/supported-lms\u003e\n* \u003chttps://en.wikipedia.org/wiki/List_of_learning_management_systems\u003e\n\n| LMS                                | SCORM 1.2 | SCORM 2004 | xAPI    | AICC    | CMI-5 | IMS  | License     |\n| ---------------------------------- | --------- | ---------- | ------- | ------- | ----- | ---- | ----------- |\n| Abara LMS                          | full      | full       |         |         |       |      |             |\n| Absorb LMS                         | full      | full       | full    | full    |       |      |             |\n| Academy LMS                        | full      | full       |         |         |       |      |             |\n| Academy Of Mine                    | full      | full       | full    |         |       |      |             |\n| Accessplanit LMS                   | full      | full       |         |         |       |      |             |\n| Accord LMS                         | full      | full       |         |         |       |      |             |\n| Activate LMS                       |           | full       |         |         |       |      |             |\n| Administrate LMS                   | full      | full       |         |         |       |      |             |\n| Adobe Captivate Prime LMS          | full      |            |         |         |       |      |             |\n| Agylia LMS                         | full      |            | full    |         |       |      |             |\n| Alchemy LMS                        |           | full       |         |         |       |      |             |\n| Alumn-e LMS                        | full      |            |         |         |       |      |             |\n| aNewSpring LMS                     | full      |            |         |         |       |      |             |\n| Asentia LMS                        | full      | full       | full    |         |       |      |             |\n| aTutor                             | full      |            |         |         |       | full | open source |\n| Axis LMS                           | partial   |            |         |         |       |      |             |\n| BIStrainer LMS                     | full      | full       |         |         |       |      |             |\n| BizLibrary LMS                     | full      |            |         |         |       |      |             |\n| Blackboard LMS                     | full      | full       | partial | full    |       |      |             |\n| BlueVolt LMS                       | full      | full       |         | full    |       |      |             |\n| BrainCert LMS                      | full      | full       |         |         |       |      |             |\n| Bridge LMS                         | full      | full       |         | full    |       |      |             |\n| Brightspace LMS                    | full      | full       |         |         |       |      |             |\n| Business Training TV (by Vocam)    | full      | full       | full    |         |       |      |             |\n| Buzz LMS (by Agilix)               | full      | full       |         | partial |       |      |             |\n| Canvas LMS                         | full      | full       |         |         |       |      | open source |\n| CERTPOINT Systems Inc.             | full      | full       |         |         |       |      | proprietary |\n| Chamilo LMS                        | full      |            |         |         |       | full | open source |\n| Claroline                          | full      |            |         |         |       | full | open source |\n| Claromentis LMS                    | full      |            |         |         |       |      |             |\n| chocolateLMS                       | full      |            |         |         |       |      |             |\n| Coggno LMS                         | full      | full       |         |         |       |      |             |\n| Cognology LMS                      | full      |            |         |         |       |      |             |\n| Collaborator LMS                   | full      | full       |         |         |       |      |             |\n| ComplianceWire LMS                 | full      | full       |         |         |       |      |             |\n| Cornerstone LMS                    | partial   | full       |         |         |       |      |             |\n| CourseMill LMS                     | full      | full       |         |         |       |      |             |\n| CoursePark LMS                     | full      | full       |         |         |       |      |             |\n| Coursepath LMS                     | full      | full       | full    |         |       |      |             |\n| Courseplay LMS                     | full      | full       |         |         |       |      |             |\n| CourseSites LMS                    | full      | full       |         |         |       |      |             |\n| CrossKnowledge Learning Suite      | full      | full       |         | full    |       |      |             |\n| Curatr LMS                         | partial   | partial    | full    |         |       |      |             |\n| DigitalChalk LMS                   | full      | no         | full    |         |       |      |             |\n| Desire2Learn                       |           | full       |         |         | full  | full | proprietary |\n| Docebo LMS                         | full      | full       |         | full    |       |      |             |\n| EasyCampus LMS                     | full      |            |         |         |       |      |             |\n| eCollege                           |           |            |         |         |       |      | proprietary |\n| Edmodo                             |           |            |         |         |       |      | proprietary |\n| EduBrite LMS                       | full      | full       |         | full    |       |      |             |\n| EducationFolder LMS                |           |            | full    |         |       |      |             |\n| EduNxt                             | full      | full       |         |         |       |      | proprietary |\n| Eduson LMS                         | partial   |            |         |         |       |      |             |\n| Edvance360 LMS                     | full      |            |         |         |       |      |             |\n| Effectus LMS                       | full      | full       | full    |         |       |      |             |\n| eFront LMS                         | full      |            |         |         |       |      | open source |\n| eLeap LMS                          | full      |            |         |         |       |      |             |\n| ELMO                               | full      |            |         |         |       |      |             |\n| Elsevier Performance Manager LMS   | full      |            |         |         |       |      |             |\n| Emtrain LMS                        | full      | full       |         | full    |       |      |             |\n| Engrade                            |           |            |         |         |       |      | proprietary |\n| eSSential LMS                      | full      |            | full    |         |       |      |             |\n| eTraining TV (by Vocam)            | full      | full       | full    |         |       |      |             |\n| Evolve LMS                         | full      |            |         |         |       |      |             |\n| Exceed LMS                         | full      |            |         |         |       |      |             |\n| ExpertusONE LMS                    | full      | full       |         |         |       |      |             |\n| EZ LCMS                            | full      | full       |         |         |       |      |             |\n| Firmwater LMS                      | full      | full       |         |         |       |      |             |\n| Flora                              | full      | full       |         |         |       |      |             |\n| Forma LMS                          | full      | full       |         |         |       |      |             |\n| Geenio LMS                         | partial   | partial    |         |         |       |      |             |\n| GlobalScholar                      |           |            |         |         |       |      | proprietary |\n| Glow                               |           |            |         |         |       |      | proprietary |\n| GnosisConnect LMS                  | full      | full       |         |         |       |      |             |\n| Google Classroom                   | no        | no         | no      |         |       |      |             |\n| GoSkills LMS                       | full      | full       | full    |         |       |      |             |\n| GO1 LMS                            | full      | full       |         |         |       |      |             |\n| GrassBlade LRS                     | full      | full       | full    |         |       |      |             |\n| Grovo LMS                          | full      | full       | full    |         |       |      |             |\n| GyrusAim LMS                       | full      | full       | full    | full    |       |      |             |\n| HealthStream LMS                   | full      | full       |         |         |       |      |             |\n| HotChalk                           |           |            |         |         |       |      | proprietary |\n| ILIAS LMS                          | full      | full       |         |         |       | full |             |\n| iLMS                               | full      | full       |         | full    |       |      | open source |\n| IMC Learning Suite                 |           | full       |         |         |       |      |             |\n| Informetica LMS                    | full      | full       |         |         |       |      |             |\n| Inquisiq R4 LMS                    | full      | full       |         |         |       |      |             |\n| Intuition Rubicon LMS              | full      |            |         |         |       |      |             |\n| In2itive LMS                       | full      | full       |         |         |       |      |             |\n| ISOtrain LMS                       | full      | full       |         | full    |       |      |             |\n| iSpring Learn                      | full      | full       |         |         |       |      |             |\n| itslearning                        |           |            |         |         |       | full |             |\n| JLMS                               | full      | full       | full    | full    |       |      |             |\n| JoomlaLMS                          | full      | full       |         |         |       |      |             |\n| Kannu                              |           |            |         |         |       |      | proprietary |\n| KMI LMS                            | full      |            | full    |         |       |      |             |\n| LabVine LMS by LTS Health Learning | full      |            |         |         |       |      |             |\n| LAMS                               | partial   |            |         |         |       | full | open source |\n| LatitudeLearning LMS               | full      | full       |         |         |       |      |             |\n| LearnConnect LMS                   | full      |            |         |         |       |      |             |\n| LearnDash LMS                      | no        | no         | no      | full    |       |      |             |\n| LearningCart LMS                   | full      | full       |         |         |       |      |             |\n| learningCentral LMS                | full      | full       | full    | full    |       |      |             |\n| LearningZen LMS                    | full      | full       | full    |         |       |      |             |\n| Learning Locker LRS                |           |            | full    |         |       |      |             |\n| learnPro LCMS                      | full      |            |         |         |       |      |             |\n| LearnUpon LMS                      | full      |            | full    |         |       |      |             |\n| LearnWorlds LMS                    | full      | full       |         |         |       |      |             |\n| Learn-WiseGo LMS                   |           | full       |         |         |       |      |             |\n| LifterLMS                          |           |            | full    |         |       |      |             |\n| Litmos LMS                         | full      |            | full    |         |       |      |             |\n| LMS365                             | full      | full       |         |         |       |      |             |\n| LON-CAPA                           | partial   |            |         |         |       |      | open source |\n| MATRIX LMS                         | full      |            |         |         |       |      |             |\n| Meridian LMS                       | full      | full       |         |         |       |      |             |\n| Mobile Agility LMS                 | full      | full       |         |         |       |      |             |\n| Moodle LMS                         | full      | partial    |         | partial |       | full |             |\n| MOS Chorus LMS                     |           | full       |         |         |       |      |             |\n| Myicourse LMS                      | partial   | partial    |         |         |       |      |             |\n| MySkillpad LMS                     | full      | full       |         |         |       |      |             |\n| NEO LMS                            | full      |            |         |         |       |      |             |\n| NetDimensions Learning             | full      | full       |         | full    |       |      |             |\n| Nimble LMS                         | full      |            |         |         |       |      |             |\n| Ninth Brain LMS                    | full      | full       | full    |         |       |      |             |\n| OLAT LMS                           | full      | full       |         |         |       | full |             |\n| OPAL                               | full      | full       |         |         |       | full |             |\n| Open edx                           | full      | full       |         |         |       |      | open source |\n| OpenOLAT                           | full      |            |         |         |       | full | open source |\n| Opigno LMS                         | full      | full       |         |         |       |      |             |\n| Oracle Taleo Learn Cloud Service   | full      | full       |         | full    |       |      |             |\n| Paradiso LMS                       | full      | full       |         |         |       |      |             |\n| Percepium LMS                      | full      | full       |         |         |       |      |             |\n| Percolate LMS                      | full      | full       |         |         |       |      |             |\n| Prosperity LMS                     | full      | full       |         |         |       |      |             |\n| RISC's Virtual Training Assistant  | full      | full       | full    | full    | full  |      |             |\n| Saba LMS                           | full      | full       |         | full    |       |      |             |\n| Sakai LMS                          | full      | full       |         |         |       |      |             |\n| SAP SuccessFactors LMS             | full      | full       |         | full    |       |      | proprietary |\n| ScholarLMS                         | full      | full       | full    |         |       |      |             |\n| Schoology LMS                      | full      | full       |         |         |       |      | proprietary |\n| Schoox LMS                         | full      | full       |         |         |       |      |             |\n| ShareKnowledge LMS                 | full      | full       |         |         |       |      |             |\n| Shika LMS                          | full      | full       |         |         |       |      |             |\n| SilkRoad LMS                       | full      | full       |         | full    |       |      |             |\n| Simplify LMS                       | full      |            | full    |         |       |      |             |\n| Skilljar LMS                       | full      |            |         |         |       |      |             |\n| Skillsoft                          |           |            |         |         |       |      | proprietary |\n| SkillsServe LMS                    | full      | full       |         |         |       |      |             |\n| SmarterU LMS                       | full      | full       |         | full    |       |      |             |\n| Spongelab                          |           |            |         |         |       |      | proprietary |\n| SuccessFactors                     |           |            |         |         |       |      | proprietary |\n| SumTotal LMS (by SkillSoft)        | full      | full       |         | full    |       |      | proprietary |\n| SWAD                               |           |            |         |         |       |      | open source |\n| SwiftLMS                           | full      | full       |         |         |       |      |             |\n| Syberworks LMS                     |           |            |         |         |       |      |             |\n| Syfadis Suite LMS                  | full      | full       |         |         |       |      |             |\n| Thinking Cap LMS                   | full      | full       |         |         |       |      |             |\n| TalentLMS                          | full      | no         | full    |         |       |      |             |\n| Taleo                              | full      | full       |         | partial |       |      | proprietary |\n| TCManager LMS                      | full      |            |         |         |       |      |             |\n| Techniworks LMS                    | full      | full       |         |         |       |      |             |\n| Thinkific LMS                      |           |            |         |         |       |      |             |\n| TOPYX LMS                          | full      | full       |         |         |       |      |             |\n| Torch LMS                          | full      | full       | full    | full    |       |      |             |\n| Totara LMS                         | full      |            |         |         |       |      |             |\n| Udutu LMS                          | full      | full       |         |         |       |      |             |\n| UpGraduate LMS                     | full      | full       | full    | full    |       |      |             |\n| UpsideLMS                          | full      | full       | partial |         |       |      |             |\n| Uzity                              |           |            |         |         |       |      | proprietary |\n| ViewCentral LMS                    | full      |            |         |         |       |      |             |\n| viLMS                              | full      | full       |         |         |       |      |             |\n| Vowel LMS                          | full      | full       |         |         |       |      |             |\n| Watershed LRS                      |           |            | full    |         |       |      |             |\n| Wax LRS                            |           |            | full    |         |       |      |             |\n| WBTServer LMS                      |           | full       |         |         |       |      |             |\n| WebCampus LMS                      | full      |            |         |         |       |      |             |\n| WeBWorK                            |           |            |         |         |       |      | open source |\n| WestNet MLP                        | partial   | partial    | partial |         |       |      |             |\n| wizBank e-Learning Platform        | full      | full       |         |         |       |      |             |\n| WizIQ LMS                          | partial   | partial    |         |         |       |      |             |\n| Workday LMS                        | full      | full       |         |         |       |      |             |\n| WorkWize LMS                       | full      |            |         |         |       |      |             |\n| xapiapps LMS                       | full      | full       | full    |         |       |      |             |\n| 360Learning LMS                    | full      | full       |         |         |       |      |             |\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliascript%2Fliascript-exporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliascript%2Fliascript-exporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliascript%2Fliascript-exporter/lists"}